「すべてのアプリケーションについて」透明な巨大ページをサポートするディストリビューションは何ですか?

「すべてのアプリケーションについて」透明な巨大ページをサポートするディストリビューションは何ですか?

LWNがまた混乱しています。

巨大なページ、遅いドライバー、長い待ち時間——LWN.net, 2011

珍しいことですが、いざ起きても面白くありません。低速のストレージデバイス(USBスティックや音楽プレーヤーなど)を接続し、rsyncなどのコマンドを実行して大量のデータをデバイスに移動します。手術に時間がかかるのは驚くべきことではありません。ランダムなプロセスが中断し始めると、さらに驚くべきです。

ページエラーが発生した場合、プロセス(Webブラウザなど)が操作を行っています...透明なhugepages機能がカーネルに組み込まれている場合(ほとんどの販売代理店はこの機能を有効にします。)、ページフォルトハンドラは巨大なページを割り当てようとします。

Red Hat Enterprise Linuxでは、LWNで説明されているように透明な巨大ページが有効になっていることがわかります。

Red Hat Enterprise Linux 6 および 7 で透明な大容量ページをどのように使用、監視、および無効にするのですか?

THP(Transparent Huge Pages)は、RHEL 6のすべてのアプリケーションに対してデフォルトで有効になっています。

RHEL 7の場合は、以下を参照してください。Red Hat Enterprise Linux 7 で透過型の巨大ページ (THP) を無効にする方法。 RHEL 8の場合は、以下を参照してください。Red Hat Enterprise Linux 8 で透過型巨大ページ (THP) を無効にする方法。 [加入者専用コンテンツリンク]。

しかし、Fedora Workstation 29ノートブックを見たところ、「すべてのアプリケーション」でTransparent Huge Pagesが有効になっていないことがわかりました。

$ cat /sys/kernel/mm/transparent_hugepage/enabled 
always [madvise] never
$ uname -r
4.19.13-300.fc29.x86_64

一部の仮想マシンも確認しました。 Ubuntu Desktop 18.04(カーネル4.15.0-43-generic)とDebian 9デスクトップインストール(カーネル4.9.0-8-amd64)でも同じことが確認されました。 (そして私はDebianに「サーバー」のインストール、スピン、またはパッケージがあるとは思わない。設定に従って有効になります)。

  1. Fedora Server 29は、すべてのアプリケーションに対して透過的な大容量ページをサポートしていますか?
  2. Ubuntu Server 18.04は、すべてのアプリケーションに対して透過的な大容量ページをサポートしていますか?
  3. これらのディストリビューションの1つの他のバージョン番号は、2011年頃にすべてのアプリケーションに対して透明な巨大ページを可能にしましたか?

[行間:ここでLWN.netが正しいか、間違っていますか?その場合以前は正確に言えば、ほとんどの出版社は透明なhugepageを有効にし、これがいくつかの一般的な「デスクトップ」(またはラップトップ)設定に影響を与えることを示唆しています。現在のバージョンのFedora Workstation、Debian、Ubuntu Desktopが誰にでも機能しない理由を知っていますか? ]

答え1

@Stephen_Kittは、「2011年にカーネル2.6.32としてリリースされたDebian 6には透明なhugepageがなく、巨大なlbfsがありました。Debianは2.6.38から4.13まで「madvise」を使用しました。「常に」に切り替わります。したがって、Debian 7〜9は「madvise」を使用し、Debian 10は「always」を使用します。 」

サーバーにインストールされている一部のUbuntuインストールでは、すべてのアプリケーションに対して大きなページが有効になっていることが報告されています。 (つまり、Web検索を介してUbuntuのインストールで大きなページを無効にする方法を尋ねるいくつかのユーザーが表示されました:-)。 )。そのうちのいくつかはEC2画像を具体的に言及している。 @coulingは、AWSのUbuntuサーバーがすべてのアプリケーションに対して大きなページをアクティブにしていないことを報告します。だからUbuntuサーバーには答えるのが少し難しいようです。それからAskUbuntuの質問を見つけました。」[Ubuntu] 11.04カーネル.configファイルはどこで入手できますか?」。

Ubuntu 16.04では、Amazon Web Services(AWS)などの特定のビルドを使用できます。カーネルバージョン4.4.0-125.150を確認してください。AWS カーネルの有効化TRANSPARENT_HUGEPAGES_ALWAYS。しかし、共通コアにはありません。

Ubuntu 18.04では、ユニバーサルカーネルはまだアクティブではありません。TRANSPARENT_HUGEPAGES_ALWAYS

Ubuntu11.10TRANSPARENT_HUGEPAGES2011年10月にリリースされたこのバージョンは、おそらく有効になった最初のバージョンでした。有効になっていないようですTRANSPARENT_HUGEPAGES_ALWAYS

現在、SLES(SUSE Linux Enterpriseバージョン15、最小バージョン12、11)も現在のRHEL設定と一致すると思います。つまり、すべてのアプリケーションに対して透明な大容量ページを有効にします。

[ヒント:LWN.netこれは正しいですか、間違っていますか? ]

カーネル開発者Mel Gormanが引用した3つのバグレポートはすべて、遅いUSBスティックまたはSDカードにコピーするときに影響を受けるWebブラウザに関連しています。。したがって、この記事の要点は根拠が十分です。レポートの1つは「SUSE内部」です。他の2つのケースでは、カーネル構成がどこから来たのかすぐには明確ではありません。

@coulingが指摘したように、sysfsファイルに表示されている場合は、[madvise]THPが完全に無効になっているとは言わないでください。これは、この場合と同様に、THPがすべてのアプリケーションに自動的に適用されるわけではありません[always]。 LWNの記事は、Webブラウザとの関連でこれらの区別をある程度混乱させています。 「透明なhugepage機能はカーネルに組み込まれています。」と「ページエラーハンドラがhugepagesの割り当てを試みます。」間の区別は機能しないことが知られていますMADV_HUGEPAGE。明らかに、ほとんどの代理店は前者を支持していますが、後者は私にとってはあまり明確ではありません。

私は気づいたソースコードによると、カーネル設定を有効にすることを選択した場合、TRANSPARENT_HUGEPAGEデフォルト設定は常に有効になりますTRANSPARENT_HUGEPAGE_ALWAYS

たぶん、LWNはこれを誤解したかもしれません。あるいは、distroカーネルがリリースされたときに一時的な急増があり、TRANSPARENT_HUGEPAGE_ALWAYS潜在的な欠点がたくさん見つかった後に戻ってきた可能性があります。わかりません。

関連情報