THPを無効にするとどのような欠点がありますか?多くのディストリビューションでデフォルトで有効になっているのはなぜですか?

THPを無効にするとどのような欠点がありますか?多くのディストリビューションでデフォルトで有効になっているのはなぜですか?

私たちのチームと私は最近、仮想マシンでRedisを実行すると、次の警告が表示されることを確認しました。 「カーネルで透過的に巨大なページ(THP)サポートが有効になっているという警告です。

このトピックについて調査した結果、ほとんどのデータベースベンダーはTHPを無効にすることをお勧めします(必要でない場合)。いくつか言うと:

また、多くのディストリビューションでは、デフォルトでこの機能を有効にしていることがわかりました。

  • 赤い帽子
  • 中央オペレーティングシステム
  • Ubuntu
  • コアオペレーティングシステム

質問は次のとおりです。

  • デフォルトで有効になっているのはなぜですか?
  • クラスタ VM (さまざまな Docker コンテナを実行している CoreOS ベースの Kubernetes クラスタ) で THP を無効にすると発生する可能性のある欠点/リスクは何ですか?

答え1

THPは、アプリケーションのパフォーマンスを向上させるために、いくつかのLinuxディストリビューションでデフォルトで有効になっているLinux機能です。ただし、一部のオペレーティングシステムデータベースベンダーは製品のパフォーマンスを低下させるため、これはお勧めできません。

~からRed-HAT ドキュメント(THPが有効になった理由):

THPの目標はパフォーマンスの向上であるため、開発者(コミュニティとRed Hat)は、さまざまなシステム、構成、アプリケーション、およびワークロードでTHPをテストして最適化しました。これにより、THPのデフォルト設定がほとんどのシステム構成でパフォーマンスを向上させることができます。ただし、データベース・ワークロードにはTHPは推奨されません。

から:Oracleドキュメント(THPを無効にする理由は何ですか?)

残念ながら、透明な大容量ページはOracleデータベースでは正常に機能しないため、RACのインストール時のノードの再起動と単一インスタンスとRACのインストール時のパフォーマンスの問題に関連しています。したがって、Oracleは、Oracleデータベースを実行しているすべてのサーバーで透明な大容量ページを無効にすることをお勧めします。

クラスタ化されたVMでTHPを無効にすると発生する可能性がある欠点/リスクは何ですか?

THPを有効にすることは、以下を防止するセキュリティ機能です。mmap洪水攻撃

mmapただし、この機能を活用するようにアプリケーションをさらに最適化できます。たとえば、以前はmalloc(4k)あたりの多数のシステムコールを防ぐために最適化されていました。現時点では、ユーザースペースの最適化は必須ではありません。khugepagedは、大容量メモリを処理するhugepage対応アプリケーションの場合でも、すでに長期ページ割り当てを処理できます。

関連情報