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 提供：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氏は指摘している。