LLMを動かしている古いLambda WorkstationのDDR4メモリが壊れた。32GB を8枚積んでいるマシンで、不良の DIMM を切り分けて中古の Crucial 製メモリに交換したので経緯を残す。

異変に気づいたのは9月初め。常駐させている worker から heartbeat が届かなくなり、複数のプロセスが次々にクラッシュするようになった。アプリケーション側には、ヒープ破損や不正なポインタを示すエラーが出ていた。

corrupted size vs. prev_size in fastbins
free(): invalid pointer

さらにカーネルも、swap の管理情報がおかしいというメッセージを大量に出していた。当時の swap 使用量は0で、メモリ不足や swap の枯渇では説明がつかない。

get_swap_device: Bad swap offset entry 3ffffffffffff

ファイルシステムにも影響が出ていた。ルートの EXT4 でディレクトリのチェックサムエラーが発生し、別の HDD でもジャーナルの整合性エラーと復旧失敗を確認した。

Directory block failed checksum
JBD2: Invalid checksum
journal recovery failed
EXT4-fs (sda): error loading journal

特に印象に残ったのは、Python の属性名が本来の cache_info から cache_in&o に変わって表示されていたこと。自分の worker だけでなく、OS 標準のプロセスやクラッシュを収集するプロセスまで落ちていた。独立したプロセスとカーネルにまたがって異常が起きているので、メモリ系の不良を疑った。取得した SSD と HDD の SMART には、媒体の故障を示す値はなかった。

まず worker と自動起動を止め、クラッシュ収集も停止して、書き込みと負荷を減らした。その後、OS を起動せずに MemTest86 で検査すると、大量のエラーが出た。DIMM を切り分けていくと、特定のメモリに問題があると分かった。

交換後に MemTest86 を再実行すると、エラーは出なくなった。

交換用に買ったのは Crucial の中古32GBメモリで、価格は2万8千円。2025年初めには8,000円台で買えた DDR4 メモリが、今は中古でもこの値段になっている。壊れた1枚を交換したいだけなのに、なかなか厳しい。Micron は2025年12月に Crucial のコンシューマー事業からの撤退を発表して、一般向けの出荷は2026年2月までとしている。AI・サーバー向けへの供給を優先するメーカーの方針の影響をガッツリ受けた。

この Lambda Workstation は古いけれど、256GB の RAM と24GB の VRAM を持つ GPU が2枚ある。ローカルで LLM を動かす分には、まだ十分に利用価値がある。ただ、FlashAttention-3FlashMLA のように、Hopper や Blackwell を要求する Attention カーネルもちらほら出ているので、いい加減新しい GPU が欲しくもある。誰か助けてくれ。