やりたい事

  • ○○ハック
  • 眼鏡

やった事

  • micro-keyboardのイテレーションを回した。
  • Nucbox G9のディスクにベンチマークをまわした。

学んだ事

  • Bambu slicerとP1Sで、X軸方向に3mmの溝に3mm厚の物は入れられる。
  • fioはO_DIRECTを使う事でキャッシュをスキップしてる。
  • ZFS 2.3.0以前は、O_DIRECTを無視する。
  • DebianにカスタムビルドのZFSを入れるのは、簡単。
  • あるPCIeデバイスがどういう帯域で接続されているかは、lspci -vvで見れる。
  • nvmeデバイスの生涯書き込み量はsmartctlで見れる。
  • nvmeの物理セクタサイズは、smartctlでもnvme -Hでも見える。
  • nvmeの物理セクタサイズをどう使うかは、フォーマットしなおさないといけない。
  • luksレイヤにはキャッシュがある。

記録

  • 20250217
    • 週報を更新
    • micro-keyboard
      • 各所で好評らしい。
      • とりあえず持ち歩く事にした。
        • 12mmピッチは、置いて打つのには小さいと感じるが、手で持ち親指で押すには大きいと感じる。
        • スティッキーモディファイヤが欲しい。
          • ファームウエアを自作してるから、この辺は厳しい。
    • Nucbox G9
      • とりあえずNVMEを1枚差してDebian12でベンチマーク
        • 環境
          Linux debian 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux
          Distributor ID: Debian
          Description:    Debian GNU/Linux 12 (bookworm)
          Release:        12
          Codename:       bookworm
          
        • 結果
          # ext2 on nvme
          |      | Read(MB/s)|Write(MB/s)|
          |------|-----------|-----------|
          |  Seq |   1196.000|   1120.000|
          | 512K |    980.000|   1057.000|
          |   4K |     45.600|    243.000|
          |4KQD32|    841.000|    516.000|
          # ext4 on nvme
          |      | Read(MB/s)|Write(MB/s)|
          |------|-----------|-----------|
          |  Seq |    998.000|    574.000|
          | 512K |    858.000|    524.000|
          |   4K |     41.300|    149.000|
          |4KQD32|    819.000|    317.000|
          # zfs (ashift=9) on nvme
          |      | Read(MB/s)|Write(MB/s)|
          |------|-----------|-----------|
          |  Seq |   4511.000|   2783.000|
          | 512K |   4231.000|   2901.000|
          |   4K |    180.000|     91.100|
          |4KQD32|    177.000|     91.800|
          # zfs (ashift=12) on nvme
          |      | Read(MB/s)|Write(MB/s)|
          |------|-----------|-----------|
          |  Seq |   4511.000|   2926.000|
          | 512K |   3954.000|   2783.000|
          |   4K |    181.000|     93.100|
          |4KQD32|    177.000|     93.800|
          
    • zfsのランダムが遅いのは想定してたけど、ext4が遅すぎない?
  • 20250218
    • Nucbox G9
      • fioコマンドはopenのO_DIRECTオプションを使ってキャッシュを回避しているらしい。
      • 更に調べたら、datasetレベルでARCをオフにする事は可能みたい。
        ikeji@debian:/tank/data/x$ sudo zfs set primarycache=metadata  tank/data
        ikeji@debian:/tank/data/x$ ~/fiox .
        |      | Read(MB/s)|Write(MB/s)|
        |------|-----------|-----------|
        |  Seq |    989.000|   3075.000|
        | 512K |    962.000|   2868.000|
        |   4K |     11.500|      5.974|
        |4KQD32|     11.600|      5.944|
        ikeji@debian:/tank/data/x$ sudo zfs set primarycache=all  tank/data
        ikeji@debian:/tank/data/x$ ~/fiox .
        |      | Read(MB/s)|Write(MB/s)|
        |------|-----------|-----------|
        |  Seq |   4063.000|   3112.000|
        | 512K |   4000.000|   2723.000|
        |   4K |    185.000|     94.100|
        |4KQD32|    181.000|     94.800|
        
        • シーケンシャルは、Writeは遅くならず、readだけ遅くなった?
        • ランダムはがっつり遅くなった。
    • micro-keyboard
      • ツメをつけたのはよさそう。
      • キーボードケースをうすくしすぎて、キーが押しっぱなしになった。
      • ツメを片方だけにして、スライドして入れるのはどうかな?
    • ミシンの使い方講座
      • 監督
      • はじめてなので色々と気づきがあった。
  • 20250219
    • Nucbox G9
      • そもそも、ちゃんとPCIe3x2でリンクアップしてるのか?
        • lspciで見れそう。
          ikeji@debian:~$ lspci -nn
          (snip)
          01:00.0 Non-Volatile memory controller [0108]: Micron/Crucial Technology P2 NVMe PCIe SSD [c0a9:540a] (rev 01)
          (snip)
          ikeji@debian:~$ sudo lspci -d c0a9:540a -vv
          01:00.0 Non-Volatile memory controller: Micron/Crucial Technology P2 NVMe PCIe SSD (rev 01) (prog-if 02 [NVM Express])
          Subsystem: Micron/Crucial Technology P2 [Nick P2] / P3 / P3 Plus NVMe PCIe SSD (DRAM-less)
          (snip)
                  LnkCap: Port #1, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L1 unlimited
                          ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
          (snip)
                  LnkSta: Speed 8GT/s, Width x2 (downgraded)
                          TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
          (snip)
          
        • 8GT/sはGen3で、x4の能力があるデバイスがx2で繋ってる、と読めばいいのかな?
      • ファイルシステムなしでアクセスするとどうなるの?
        ikeji@debian:~$ sudo ./fiod /dev/disk/by-id/nvme-CT4000P3SSD8_2309E6B4D519-part1
        |      | Read(MB/s)|Write(MB/s)|
        |------|-----------|-----------|
        |  Seq |   1130.000|   1101.000|
        | 512K |   1048.000|   1046.000|
        |   4K |     46.300|    278.000|
        |4KQD32|    994.000|    897.000|
        ikeji@debian:~$ sudo hdparm -tT /dev/disk/by-id/nvme-CT4000P3SSD8_2309E6B4D519-part1 
        /dev/disk/by-id/nvme-CT4000P3SSD8_2309E6B4D519-part1:
         Timing cached reads:   21868 MB in  2.00 seconds = 10957.72 MB/sec
         Timing buffered disk reads: 4340 MB in  3.00 seconds = 1446.45 MB/sec
        ikeji@debian:~$ sudo dd if=/dev/zero of=/dev/disk/by-id/nvme-CT4000P3SSD8_2309E6B4D519-part1 bs=1M count=1000 oflag=direct
        1000+0 records in
        1000+0 records out
        1048576000 bytes (1.0 GB, 1000 MiB) copied, 0.993361 s, 1.1 GB/s
        ikeji@debian:~$ sudo dd if=/dev/disk/by-id/nvme-CT4000P3SSD8_2309E6B4D519-part1 of=/dev/null bs=1M count=1000 iflag=direct
        1000+0 records in
        1000+0 records out
        1048576000 bytes (1.0 GB, 1000 MiB) copied, 0.736097 s, 1.4 GB/s
        ikeji@debian:~$
        
        • random writeが遅いのはext2でもこんな感じだったな。
        • 昨日のARCを切った計測でも、まだdirectではなさそう。
        • やはり、Debian unstableとFreeBSD currentを入れて試すか。
      • ところでTBWを見る事はできる?
        • smartctlの出力がHDDの時よりすっきりしてる?
          ikeji@debian:~$ sudo smartctl -A /dev/disk/by-id/nvme-CT4000P3SSD8_2309E6B4D519
          smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.1.0-31-amd64] (local build)
          Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org
          === START OF SMART DATA SECTION ===
          SMART/Health Information (NVMe Log 0x02)
          Critical Warning:                   0x00
          Temperature:                        44 Celsius
          Available Spare:                    100%
          Available Spare Threshold:          5%
          Percentage Used:                    0%
          Data Units Read:                    396,719 [203 GB]
          Data Units Written:                 1,154,436 [591 GB]
          Host Read Commands:                 4,571,551
          Host Write Commands:                7,650,515
          Controller Busy Time:               25
          Power Cycles:                       7
          Power On Hours:                     49
          Unsafe Shutdowns:                   1
          Media and Data Integrity Errors:    0
          Error Information Log Entries:      6
          Warning  Comp. Temperature Time:    0
          Critical Comp. Temperature Time:    0
          Temperature Sensor 1:               44 Celsius
          Temperature Sensor 2:               59 Celsius
          Temperature Sensor 8:               44 Celsius
          
    • micro-keyboard
      • ツメはいい感じに作れたが、スライドがきつすぎた。
      • ツメを内側に入れるのはどうかな?
    • P1S
      • フィラメントが切れた。
        • 付属の250gの緑、eSUNの灰色1kgに続いて、bambuの灰色1KGが切れた。
          • 前回切れたのは1/26だから3週間は持ったな。
        • 今回はスプールから端が外れてフィラメント切れが検知された。
        • 同じbambuの灰色で、リフィルのに変えた。
          • 入れかえは難しくなかった。
          • 端が固定されてなかった。いの?
          • 同じフィラメントなら船を印刷するのはいいか。
            • いや、前のフィラメントにした時に印刷してなかった。印刷しよう。
  • 20250220
    • micro-keyboard
      • ツメを内側に入れるのはうまくいった。
      • スライドがもっときつい。
        • 無理矢理押し込んだら、割れた。
      • ちょっと広げたが足りないみたい。
        • もっかい。
    • Nucbox G9
      • FreeBSD stableに、openzfsを手で入れるのはできそう。
      • Debian stableにopenzfsを手で入れるのはできるかな?
        • マニュアルがあった
          $ wget https://github.com/openzfs/zfs/releases/download/zfs-2.3.0/zfs-2.3.0.tar.gz
          $ tar xvf zfs-2.3.0.tar.gz
          $ cd zfs-2.3.0/
          $ sudo apt install build-essential autoconf automake libtool gawk alien fakeroot dkms libblkid-dev uuid-dev libudev-dev libssl-dev zlib1g-dev libaio-dev libattr1-dev libelf-dev linux-headers-generic python3 python3-dev python3-setuptools python3-cffi libffi-dev python3-packaging debhelper-compat dh-python po-debconf python3-all-dev python3-sphinx libpam0g-dev dh-dkms libcurl4-openssl-dev
          $ ./configure
          $ make native-deb-utils
          $ rm ../openzfs-zfs-dracut_2.3.0-1_all.deb
          $ sudo apt install --fix-missing ../*.deb
          
        • これでfioを走らせてみる。
          |      | Read(MB/s)|Write(MB/s)|
          |------|-----------|-----------|
          |  Seq |   1187.000|    472.000|
          | 512K |    892.000|    449.000|
          |   4K |     12.000|     72.600|
          |4KQD32|     13.300|     92.800|
          
        • 妥当そう。
      • nvmeを4kセクタでフォーマットしないといけないらしい。
        $ sudo nvme format /dev/nvme0n1 -l 1
        # zfs
        |      | Read(MB/s)|Write(MB/s)|
        |------|-----------|-----------|
        |  Seq |   1195.000|    473.000|
        | 512K |    890.000|    450.000|
        |   4K |     11.700|     73.500|
        |4KQD32|     13.300|     94.900|
        # disk level
        |      | Read(MB/s)|Write(MB/s)|
        |------|-----------|-----------|
        |  Seq |   1434.000|   1148.000|
        | 512K |   1101.000|   1047.000|
        |   4K |     45.700|    270.000|
        |4KQD32|    971.000|    910.000|
        
  • 20250220
    • Nucbox G9
      • ディスクレベルだと、フォーマットしなおした方が早いな。
  • 20250221
    • micro-keyboard
      • スライドレールを広げたら入るようになった。
      • とりあえずこれを持ち歩こう。
      • ここまで来るのに、こんぐらいiterationした。
    • Nucbox G9
      • LUKS経由でディスク直
        |      | Read(MB/s)|Write(MB/s)|
        |------|-----------|-----------|
        |  Seq |    629.000|    598.000|
        | 512K |    513.000|    509.000|
        |   4K |     37.200|    103.000|
        |4KQD32|    669.000|   1166.000|
        
      • LUKS経由でzfsを使った場合。
        |      | Read(MB/s)|Write(MB/s)|
        |------|-----------|-----------|
        |  Seq |   1213.000|    442.000|
        | 512K |    879.000|    407.000|
        |   4K |      8.250|     47.200|
        |4KQD32|     11.200|     57.400|
        
        • これは何かおかしい。
  • 20250222
    • micro-keyboard
      • 下半分のケースが使ってると少し開いてしまうので、止めたままになるようにツメをつけた。
  • 20250223
    • microSD
      • ケースがいっぱいになったので新しいケースを印刷した。
      • https://makerworld.com/en/models/381873?from=search#profileId-282058
    • 球体PC
      • こういうのを考えた。
      • インプットデバイスをどうしようか?