ときに、もっとも頭を悩ませるバグは、エラーメッセージがひときわ目立つものではなく、システムを断続的に不安定にし、ログがまるで洗い清められたかのようにきれいなままのゴースト障害です。OpenAI のエンジニアは最近、まさにこの問題に直面しました。彼らのインフラストラクチャが、前触れもなく偶発的にクラッシュするのです。頻度は高くないものの、十分に頭を悩ませるものでした。原因を突き止めるために、彼らは「法医疫学」のようなアプローチをとりました——Core Dump を大規模に分析したのです。
Core Dump に残された犯行現場
Core Dump とは、プログラムがクラッシュした時点のメモリのスナップショットです。通常、誰も見ようとしません。しかし、OpenAI の SRE チームは違います。彼らは何年にもわたって原因不明のクラッシュパターンに直面していました。毎日数千件の Core Dump を収集し、病理学者のように共通点を探し続けたのです。その作業は数か月に及びました。
最終的に、彼らは2つのまったく異なる原因を特定しました。1つはメモリハードウェアエラー。ある CPU のキャッシュが、偶発的に誤ったデータを吐き出していました。もう1つはソフトウェアバグで、Linux カーネルのエッジケースとなるパスに、なんと18年間も潜んでいたものです。2006年の Linux 2.6 時代から存在していました。この2つの問題が同時に発生したとき、システムはクラッシュしていました——まるで銃に2発の弾が同時に装填されたときだけ発火するかのように。
なぜ18年もの間、発見されなかったのか?
このソフトウェアバグのトリガー条件は極めて厳しいものでした。カーネルの SLUB メモリアロケータが、特定のレースコンディション下で誤ったポインタを返すというもので、ハードウェアエラーがちょうど同じタイミングで、その誤ったポインタを実行可能な不正なコードに変換していました。単独で見れば、どちらの問題も致命的ではありません。しかし、組み合わさると、それは災害になります。ほとんどの場合、ハードウェアエラーは ECC による誤り訂正で隠蔽され、ソフトウェアとハードウェアが同時に誤作動したときだけ、ようやくその兆候が露見しました。
OpenAI のチームは、関連性を確認するために巧妙な方法を使いました。カーネルモジュールを作成し、特定のメモリアドレスに意図的にエラーを注入したのです。すると、カーネルのバグも同時に発生した場合にのみ、システムがクラッシュすることが確認できました。このような「協調障害」パターンは、分散システムでは極めて稀ですが、一度発生すると、診断の難易度は指数関数的に跳ね上がります。
重要な発見のいくつかは、Core Dump 内の特定のレジスタの分析から得られました。たとえば、ある CPU の MCA(Machine Check Architecture)レコードにはキャッシュのパリティエラーが記録されており、別のカーネルスレッドのコールスタックは、ちょうど SLUB アロケータのその古いバグを指し示していました。
修正を終えて、何を学べるのか?
修正方法そのものは複雑ではありません。ハードウェア面では、マイクロコードの更新によって問題のあるキャッシュプリフェッチロジックを無効化し、ソフトウェア面では、カーネルのその割り当てコードにメモリバリアを追加しました。本当に価値があったのは、デバッグのプロセスそのものです。大規模な Core Dump 分析が、受動的な事後調査から、能動的な疫学調査へと変わったのです。
運用エンジニアにとって、この事例には覚えておくべき点がいくつかあります。
- ログに明示的に記録されたエラーのみに注目しないこと。Core Dump のあらゆるビットに手がかりが潜んでいる可能性がある。
- 複数のソフトウェア・ハードウェアコンポーネントが同時に「軽微な異常」を示すとき、それらの間に結合障害が存在する可能性を考慮すること。
- 自動化された分析ツールは、大量の Core Dump を扱う上で不可欠だが、最終的な判断には、カーネルメカニズムに対するエンジニアの深い理解が依然として必要である。
OpenAI は、この単一のバグを修正しただけでとどまりませんでした。彼らは分析フレームワーク全体を体系化し、本番環境で同様のパターンを継続的に監視するために活用しています。彼らの言葉を借りれば、「私たちはもうクラッシュが発生してから調査するのではなく、すべての Core Dump を能動的にスキャンし、まだ爆発していない時限爆弾を探している」のです。
これはおそらく、18年もの間潜んでいたバグが私たちに残してくれた最高の教訓でしょう。ある種の障害は、忍耐とデータ、そして少しの運がなければ発見できないものなのです。しかし、準備の整った人には、運は味方しやすいものです。











コメント
コメントはまだありません
最初のコメントを書きましょう