メルトダウンのLinuxパッチだけでもCPUに大きな負荷がかかるが、これは4つの修正のうちの1つに過ぎない。

Table of Contents

メルトダウンのLinuxパッチだけでもCPUに大きな負荷がかかるが、これは4つの修正のうちの1つに過ぎない。

Netflix のエンジニアであり、dTraceハードディスク ドライブの第一人者、そして有名な批判家でもある Brendan Gregg 氏は、Meltdown CPU 設計上の欠陥に対する Linux カーネル ページ テーブル分離 (KPTI) パッチを評価し、重大だが管理可能なパフォーマンス低下を予測するための「マイクロベンチマーク」を考案しました。

グレッグ氏は金曜日、パッチが生み出すオーバーヘッドを適切に評価するために、以下の 5 つの要素を考慮していると説明した。

  • システムコール率:システムコール率に応じてオーバーヘッドは発生しますが、これが顕著になるには高いシステムコール率が必要です。CPUあたり5万システムコール/秒の場合、オーバーヘッドは2%程度で、システムコール率の増加に伴い増加します。私の勤務先(Netflix)では、クラウドで高いシステムコール率が発生することは稀ですが、一部の例外(データベースなど)があります。
  • コンテキスト スイッチ: これらは syscall レートと同様のオーバーヘッドを追加しますが、次の推定ではコンテキスト スイッチ レートを syscall レートに単純に追加できると思います。
  • ページ フォールト レート: レートが高い場合は、オーバーヘッドも若干追加されます。
  • ワーキングセットサイズ(ホットデータ):10MBを超えると、TLBフラッシュによるオーバーヘッドが増加します。これにより、システムコールサイクルだけで1%のオーバーヘッドが7%にまで増加する可能性があります。このオーバーヘッドは、A) Linux 4.14で利用可能なpcid、およびB) Huge Pagesによって軽減できます。
  • キャッシュアクセスパターン:キャッシュの性能が良好な状態からやや劣る状態へと切り替わる特定のアクセスパターンによって、オーバーヘッドが悪化します。最悪の場合、これにより10%のオーバーヘッドがさらに発生し、例えば7%のオーバーヘッドが17%にまで増加する可能性があります。

この投稿は驚くほど詳細で、時間をかけて読む価値があるので、そのすべてのポイントを要約することはしません。

バックギア

マイクロソフトはインテルの粗悪なスペクターパッチを排除するために週末に作業している

続きを読む

グレッグ氏は、パッチによってオーバーヘッドが場合によっては最大 800 パーセント増加するが、システムを詳細に調整することで、それほど心配するほどではないレベルまで事態が収束するはずだと結論付けたと言えば十分だろう。

注目すべき変数は、システムコール番号、使用しているLinuxカーネルがプロセスコンテキスト識別子(PCID - カーネル4.14以降)をサポートしているかどうか、そして追跡するページ数を減らすためにヒュージページを使用しているかどうかです。適切な調整を加えることで、Greggは新しいコードがLinuxにもたらすオーバーヘッドを大幅に削減することができました。

彼はまた、勤務先である Netflix が使用している AWS インフラストラクチャへの影響も考慮し、「システム コール レートにより、KPTI では 0.1% ~ 6% のオーバーヘッドが発生しますが、チューニングによってこれを 2% 未満にまで下げられると期待しています」と結論付けました。

これはまだかなりの影響であり、Gregg 氏はハイパーバイザーへの変更やマイクロコードのインストールによるパフォーマンスの低下を計算できなかったことも指摘しています。®

Discover More