CPUの脆弱性「Meltdown」に対処するLinuxのカーネルページテーブルアイソレーション(KPTI)が、CPUの大幅な性能低下を招く恐れがあると、NetflixのシニアパフォーマンスアーキテクトであるBrendan Gregg氏が指摘した。
Intelの「Spectre」向けパッチが引き起こす、性能と安定性の問題が大きな注目を集めているが、Gregg氏はKPTIの与える影響について、「これまで見た中で、最も大きなカーネルの性能低下」だと述べている。
KPTIは、ユーザーモードとカーネルモードの実行で、完全に個別のテーブルを使用することで、Meltdownによるデータ漏えいを防いでいる。
Gregg氏は、KPTIの影響をテストするために、マイクロベンチマークを準備し、KPTIによってNetflixで0.1~6%の性能のオーバーヘッドが見られる可能性があることがわかったとしている。NetflixはAWSの大型ユーザーの1社だ。しかし、より大きなオーバーヘッドが見られる可能性もあるという。
Gregg氏は、「Meltdownに対処するKPTIパッチは、1%〜800%まで、膨大なオーバーヘッドを引き起こす可能性がある」と記している。
提供:Brendan Gregg
同氏は分析するにあたり、オーバーヘッドに影響を与える5つの要素、すなわちシステムコール回数、コンテキストスイッチ、ページフォールト率、メモリのワーキングセットサイズ、キャッシュのアクセスパターンに目を向けた。
オーバーヘッドが800%を超える可能性があるのは、プロセスコンテキストID(PCID)に未対応のLinuxバージョンを使用している場合だという。
Linuxカーネルは、バージョン4.14でPCIDをサポートしており、CPUがPCIDに対応している限り、Meltdown対策の個別のテーブルに対する取り扱いが改善される。
システムがどのくらいKPTIの影響を受けるかは、アプリケーション次第である。Gregg氏が述べているように、小さな入出力を頻繁に行うプロキシやデータベースなど、システムコールの呼び出し回数が多いアプリケーションほど、最も性能が損なわれる。また、コンテキストスイッチとページフォールトの回数が増えるほど、影響の度合いも大きくなる。
Netflixは、PCIDをサポートするLinux 4.14の使用、huge pagesの利用、システムコールの低減といった調整をうまく行うことで性能のオーバーヘッドを2%以下に抑えることができると同氏は見ている。
しかし、KPTIは性能のオーバーヘッドを引き起こしているMeltdownとSpectre向けパッチの1つにすぎない。ほかにもクラウド向けハイパーバイザの変更、Intelのマイクロコード、Googleのソフトウェア修正パッチ「Retpoline」などがあると、Gregg氏は指摘している。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。