Category tech.

クランプ式の電流計 (RMS型) で 100V ラインを測った。電圧は計測してないが 100V と仮定して電力を算出した。CPU は Ryzen 5 2400G、M.2 SSD は一枚だけ装着してる。マウス・キーボードはUSB接続。

CPU の負荷は OCCT、GPU の負荷は FurMark を使った。

電源オフ

0.019A (1.9W)

アイドル

  • CPU 1%
  • GPU 0%

0.15~0.23A (15W〜23W)

CPUフルロード

  • CPU 100%
  • GPU 0%

0.80A (80W)

GPU フルロード

  • CPU 1%
  • GPU 100%

0.66A (66W)

CPU GPU フルロード

  • CPU 100%
  • GPU 100%

0.95A (95W)

  1. トップ
  2. tech
  3. ASRock DeskMini A300 の消費電力

講習をうけてから約一ヶ月で届いた。まぁ書類不備で一回戻されてしまったのでほんとはもうちょっと早いだろう。書類不備って初めてやってしまった。老化を感じる。

  1. トップ
  2. tech
  3. 認定電気工事従事者認定証がきた

Terrarium は Fastly の WebAssembly を実行してくれるお試し環境みたいなやつ。ちょっと前に話題になった Lucet が使われているらしい。何のログインもなく使えて、デプロイできて「お、おう」って感じ。デプロイすると15分だけアクセスできる。

ちょっとリファレンスを見てみたところ KVStore というのがあってパーシステントな (ただし15分だけ) 状態も持てる。ということでとりあえずカウンタを書いてみた。

Rust に不慣れなので不必要なコードとかもっとうまく書けるところがありそう。

#[macro_use]
extern crate http_guest;

use std::fmt;
use http_guest::{Request, Response, KVStore};

pub fn user_entrypoint(kvs: &mut KVStore, req: &Request<Vec<u8>>) -> Response<Vec<u8>> {
  if req.uri() != "/" {
    return Response::builder()
        .status(404)
        .body("".as_bytes().to_owned())
        .unwrap()
  }

  kvs.append("count", b"1");
  let count = kvs.get("count").unwrap().len();
  let body = format!("{}", count);    
  Response::builder()
    .status(200)
    .header("Content-Type", "text/plain")
    .body(body.as_bytes().to_owned())
    .unwrap()
}

guest_app_kvs!(user_entrypoint);

メモ

  • Rust で KVS を使う場合は guest_app_kvs!() を使って、エントリポイントで KVStore を受けとる必要がある。
  • KVS は一つのキーに値を append していくことができる。たぶんアトミックに incr する方法はこれしかないと思うので、1リクエストごとに count というキーの長さを1つ増やす実装にした (append している値は使ってない)

最初 TypeScript (AssemblyScript) で書いたら、i32 を簡単に String にする方法がわからなかったので Rust で書きなおした。

なんかもっと面白いことできると思うが15分制限をどううまく使うかといったところか

  1. トップ
  2. tech
  3. Fastly の Terrarium 環境で Rust を使ってカウンタを書いてみた