投機的実行の脆弱性によるパフォーマンスへの影響: CVE-2017-5754、CVE-2017-5753、および CVE-2017-5715 に対するセキュリティーパッチによるパフォーマンスへの影響
概要:
先日公開された投機的実行に関する CVE は、様々なアーキテクチャーおよびハードウェアプラットフォームに影響を与える、潜在的な 3 つの攻撃に対応しています (フィックスは環境によって多少異なります)。このフィックスを適用するには、多くの場合、ハードウェアベンダーから提供されるマイクロコードのアップデートが必要になります。Red Hat では、アップデートした Red Hat Enterprise Linux カーネルを提供していますが、このカーネルでは、デプロイメントのセキュリティーを保護することに重点を置いています。このような脆弱性とそのフィックスの性質上、パッチを当てたシステムでパフォーマンスが低下する可能性があります。パフォーマンスへの影響は、ハードウェアとアプリケーションによって異なります。
この攻撃は、一般的に使用される、パフォーマンス向上を目的とした最適化を標的としています。その結果、セキュリティー脆弱性を修正すると、そのワークロードにより、パフォーマンスが大きく低下します。ここでは、Red Hat パフォーマンスエンジニアリングチームが、マイクロコードとカーネルパッチの組み合わせを変えて調査したパフォーマンス問題の内容を説明します。最適化に関するパフォーマンスの特性と開発は、今後のカーネル機能の強化と、レポートの改訂につながる可能性を秘めた継続的努力となります。 また、パフォーマンスに与えるこのような影響をできるだけ早く取り除くために、Red Hat はテクノロジーパートナーと積極的に連携しています。
説明:
CVE-2017-5754、CVE-2017-5753、および CVE-2017-5715 で提供されたフィックスの潜在的な影響については、アプリケーションのワークロードを専門とする Red Hat パフォーマンスエンジニアリングチームがサポートします。これには、OEM マイクロコード、Red Hat Enterprise Linux カーネル、および仮想化へのパッチが含まれます。ワークロードおよびハードウェア設定によっては、これらのパッチが与えるパフォーマンスへの影響が大きく変わる可能性があります。計測は、業界標準ベンチマーク (ISB) に基づいて行われます。このベンチマークにおける一連のワークロードが、一般的なデプロイメントに最も類似しています。
Red Hat では、現在、大量に使用されている Intel システム (Haswell、Broadwell、Skylake) で、アップデートしたカーネルと、アップデートしたマイクロコードを使用した完全なソリューションをテストしました。 各テストでは、ユーザーからカーネルへの移行時、またはカーネルからユーザーへの移行時におけるセキュリティーを強化するためにオーバーヘッドが追加されたため、パフォーマンスに影響が出ています。その影響の大きさは、ワークロードと、ハードウェアの実装および設定によって変わります。 パフォーマンスにおいては一般的ですが、ISB のアプリケーションワークロードで行ったテストでは、影響の範囲が 1 - 20% と特定されました。
より詳細な情報を提供するために、Red Hat のパフォーマンスチームは、パフォーマンスへの影響度に基づいて、Red Hat Enterprise Linux 7 のパフォーマンス結果を以下のように分類しました (Red Hat Enterprise Linux 6 と Red Hat Enterprise Linux 5 でも同じような挙動となりました)。
-
Measureable: 8-19% 高度にキャッシュされたランダムメモリー、バッファード I/O、OLTP データベースワークロード、カーネル空間からユーザー空間への遷移の頻度が高いベンチマークなどに対する影響は 8-19% になります。この例には、OLTP ワークロード (tpc)、sysbench、pgbench、netperf (256 バイト未満のパケット)、および fio (NvME へのランダム I/O) が該当します。
-
Modest: 3-7% データベース解析、意思決定支援システム (DSS)、および Java VM は、上記 Measurable よりも影響が少なくなります。このようなアプリケーションでは、シーケンシャルアクセスのディスク I/O またはネットワークのトラックの量が非常に多い場合がありますが、カーネルおよびデバイスのドライバーがリクエストを集約させ、カーネル空間からユーザー空間へ遷移する頻度を抑えることができます。この例には、SPECjbb2005、クエリー/時間と、解析の合計時間 (秒) が該当します。
-
Small: 2-5% HPC (ハイパフォーマンスコンピューティング) で CPU 処理が集中するワークロードでは、大抵のジョブがユーザー空間で実行し、cpu ピニングまたは NUMA 制御 (numactl) を使用してスケジュールされているため、パフォーマンスへの影響は少なく、2-5% となります。この例には、x86 および SPECcpu2006 の Linpack NxN が該当します。
-
Minimal: Linux の各種アクセラレーター技術への影響が最も少なく、これらは多くの場合カーネルの処理をバイパスするため、ユーザー空間への直接アクセスが行われます。したがって、測定されたオーバーヘッドは 2% 未満となりました。この例には、DPDK (64 バイトの VsPERF) および OpenOnload (STAC-N) が該当します。gettimeofday などの VDSO に対するユーザー空間からのアクセスは影響を受けません。 同様に、その他のオフロードへの影響度もMinimal に該当します。
-
注意: netperf、uperf、iozone、および fio などのマイクロベンチマークは、特定のハードウェアコンポーネントやオペレーションに重点を置いています。したがって、通常のカスタマーワークロードを示しているわけではありません。一部のマイクロベンチマークでは、重点を置いている特定領域におけるパフォーマンスへの影響が大きくなります。
コンテナー化アプリケーションは Linux の一般的なプロセスとして実装されているため、コンテナーにデプロイされたアプリケーションへのパフォーマンスの影響は、ベアメタルにデプロイされたアプリケーションと同じになります。仮想ゲストにデプロイされたアプリケーションでは、ユーザーからカーネルへの移行頻度が増えるため、その影響はベアメタルよりも高くなること予想されます。この調査結果は、ここで近日公開されます。
パフォーマンスに対する実際の影響は、ワークロード、ハードウェア、デバイス、およびシステム制限 (ワークロードが CPU に関するものかメモリーに関するものかなど) によって、大きく異なる可能性があります。 メモリーおよび CPU の全容量を消費したシステムでアプリケーションを実行している場合は、この修正に関するオーバーヘッドによりシステムのペイロードがオーバーロードし、パフォーマンス低下がより顕著になる可能性があります。したがって、その影響を判断する唯一の方法は、エンド環境で、エンドへのワークロードの影響を評価することです。
上述のパッチに関する Red Hat Enterprise Linux 設定は、セキュリティの設定を最大にしています。 このパッチは、システムの起動時またはランタイム時に有効または無効にできます。 したがって、CVE パッチを有効または無効にした設定で、パッチを当てたカーネルへの影響を調査することをお客様が希望されることが予想されます。これを容易にするために、カーネルチームは、パラメーター、または新たに調整したプロファイルの構築すること、もしくはその両方を行うことで、CVE マイクロコードとセキュリティーパッチのほとんどを有効または無効にする動的なパラメーターを追加しました。このパラメーターに関する詳細は、以下を参照してください。
この機能を無効にするパラメーターを使用すると、失われたパフォーマンスの多くが戻ります。 ただし、無効にしても、追加コードとマイクロコードのアップデートにより、パフォーマンスが多少の影響を受ける場合があります。
Red Hat は、将来バージョンの Red Hat Enterprise Linux で、パッチを当てたカーネルを引き続き最適化していきます。また、長期的には、ハードウェアベンダーが、silicon またはマイクロコードの新しい実装で、この脆弱性に対応することが十分に予想されます。その間、Red Hat では、パフォーマンスに影響を与えるワークロードと要因を特定し、カスタマーアプリケーションのパフォーマンスを改善することに重点的に取り組みます。また、その他の問題と同様、お客様のアプリケーションと環境に特化した内容に関するご質問については、弊社の専門チームが対応します。
Comments