- キット各種完売。
- msBerryDAC改造情報
2023/07/31(月)Debian 12(bookworm) に sd-scripts を入れる
LoRA学習のための sd-scripts が Python 3.10 依存*1で、Debianの標準は3.11のため色々大変です。
2023/07/07(金)Debian 12 (bookworm) インストールメモ
2023/07/04(火)Beelink MINI S12 Pro N100ベンチマーク
サーバ用にIntel N100なミニPCを買ったので、色々調べてみました。
概要
見ての通りめちゃくちゃ小さいPCです。
- CPU: Intel N100 3.40GHz
- RAM: DDR4 3200 16GB
- SSD: NVMe 512GB(AZW 512G, PCIe3.0x1接続)
- NET: 1Gbps Ethernet, WiFi
- 電源: 12V 3Aアダプタ(付属)
- Windows11 Pro(VL)インストール済*1
Amazonで2万5000円でした。N100搭載のファンレスPCも検討したのですが、メモリとSSD付でのコスパに負けました(苦笑)。
良かった点
- アイドル時の消費電力が6W。
- BIOS: Advacnced→Power→GT→RC6 Enable。これがオフだとアイドル8W。
- 性能もそこそこ。
- NVMe M.2 2280と2.5インチSATAを両方搭載可能。
- BIOSの設定で、温度によりファンを止めることができる(ファンコントロールも可能)。
- 実際はCPU温度が上がってしまうのでファンを止めることはほとんど不可能なものの、低負荷で超低速で回せば音はほぼ気にならない。
悪かった点
- WiFiとBluetoothが標準搭載(かつBIOSではオフにできない)。
電源自動オンが設定できない。- BIOS: Chipset→PCH-IO Configuration→State After G3→S0 Stateを設定すると自動電源オンになります。*2
「AC Power Loss(failure)」設定が分かりにくく困りました……。この手のミニPCはこの機能がないこともあるので、気になる方は買う前に調べましょう。
ベンチマーク
SSD性能が微妙なのは接続がPCIe3.0x1なせいで、PCIe3.0x4に接続すると3000MB/sぐらい出ます。
- Cinebench R20: 1121
- Cinebench R23: 2921/932
- Intel UHD Graphics 750MHz
- DQ10ベンチ Ver1.5 1920x1080 最高品質: 6320
- FF14暁月のフィナーレ 1920x1080 最高品質: 998
- FF14暁月のフィナーレ 1920x1080 標準PC: 2258
比べた感じ、Core i5 3570やCore i5 8350UぐらいのCPU性能はあります。ただFPU性能は若干低めのようで、高効率コア(E-Core)の特徴なのかなといった感じです。
- 電力制限なのか、ベンチ中は4コアとも2.9GHzに張り付くことが多かった。
- GPU性能はIntel UHD Graphics 630(Core i5 8500)と同等程度。
- CPUの制約で、メモリがシングルチャネル最大16GBに制限されている?*3
メモリがDDR4であること*4から、本来はもう少し性能を出すこと可能なのかも知れません。
自動電源オンに改造する
BIOSに設定はありませんが、電源投入時にスイッチを押したことにすれば自動で電源をオン(疑似always on)することができます。
BIOSの設定で解決できます。早まって改造する必要はありません(汗)
CPU放熱グリスを塗りなおす
「どうせちゃんとしたグリス付いてないんでしょ」という勝手な思い込みで、CPU放熱グリスを塗り直してみました。
使ったグリスはNoctua NT-H1ですが、1~2度ぐらい下がったかな?ぐらいです。室温のほうがよっぽど影響大きいですね……。
まとめ
- N100結構良い。
Windowsで遊び終わったので、まもなくLinuxサーバにする予定。
2023/05/22(月)Debian 12(bookworm) に Stable Diffusion Web UIを入れる
2022/06/17(金)OOM Killerでサーバが死んだ
ある日突然、Webサーバ(Apache)が死亡したときのメモと、実施した対策のまとめ。
OOM Killerとは
メモリが足りなくなったときに、負荷が高そうなプロセスを一撃必殺してくれるLinuxの機能です。
ログ
長いので別ファイルに。
この中で、rssが実消費メモリ(KB)なのですが、トータルしても209MBしかありません。ps auxの値(KB)と異なり、OOM Killerプロセス一覧数値はすべてページ単位(4kB単位)なので、836MB。このマシンの実メモリ1GBなのでほとんど無くなっています。
スワップもswapents(Anonymous swap entries)の合計が960589、エントリー1つあたり4KBですので、3.7GB。つまりスワップは完全に食いつぶしてる。
色々調べると、OOM発動時はこの辺を見ると良いらしい。
[7934037.757829] Node 0 DMA: 43*4kB (UME) 14*8kB (UME) 12*16kB (UE) 13*32kB (UME) 2*64kB (UE) 7*128kB (UME) 4*256kB (UME) 3*512kB (UME) 0*1024kB 0*2048kB 0*4096kB = 4476kB [7934037.762116] Node 0 DMA32: 258*4kB (UME) 252*8kB (UME) 576*16kB (UME) 325*32kB (UME) 105*64kB (UME) 20*128kB (UME) 8*256kB (UE) 3*512kB (UME) 5*1024kB (UME) 0*2048kB 1*4096kB (M) = 44744kB
どれくらいのサイズの連続したメモリをいくつ確保できるかという表示ですが、一番大きいもので「DMA側が512kBを3つ」「DMA32側が4096kBを1つ」ということで、メモリの断片化してますし、そもそも両方合わせて48MBぐらいしか空きメモリがない。
OOM Killerが発生して当然の状況と言えます。
なぜApacheが死んだのか
OOM Killerが発動したのは、sys.fcgiというFastCGI(Apacheの子)プロセスなのですが、なぜかApache自体が死亡しておりました。daemon.logを見ますと、こんな感じ。
systemd[1]: apache2.service: A process of this unit has been killed by the OOM killer. systemd[1]: apache2.service: Failed with result 'oom-kill'. systemd[1]: apache2.service: Consumed 1h 21min 18.835s CPU time.
Apacheの子プロセスがOOM Killerされたので、systemdが善きに計らってApache自体を終了させた模様。……やめてくれー(苦笑)
子プロセスが死んでもApacheを生かす
メモリ食いつぶしcgiを作って実験してみたのですが、通常のcgiなら問題なくFastCGIのときだけこの問題が起きるようです。systemdの設定を変更して、Apacheを巻き添えにしないよう変更します。
# Debianの場合, rootでの作業 cd /etc/systemd/system mkdir apache2.service.d vi apache2.service.d/oom.conf systemctl daemon-reload # oom.confの中身 [Service] OOMPolicy=continue
/etc/system/systemd/apache2.service.d/oom.conf がきちんと読み込まれてるか、設定を確認してください。
systemctl cat apache2
この状態でメモリ食いつぶしfcgiを実行してみましたが、無事(?)にfcgiだけプロセスkillされました。
その他の対策
- Swap領域を3.7GBから10GBに増強。
- sys.fcgiで不要になったメモリを開放することが難しかったので、メモリ使用量(/proc/[pid]/statusのVmHWM)が一定量を超えたら、処理終了後に自動でプロセスを終了するようにした。
- mod_fcgidの設定を変更して、一定時間使われないプロセスはすべて終了するようにした。
FcgidMinProcessesPerClass 0 FcgidProcessLifeTime 600 FcgidIdleScanInterval 120
スワップは実RAMの倍(この場合2GB)という定説を昔読んだ気がしますが、「未開放メモリ→スワップアウト」というケースを考えると、多いに越したことはないかもしれません。
本当はApache側でメモリ制限を実施できたら楽なのですが、mod_fcgidの子プロセスには RLimitMem とか効かないんですよね……。