スワップ
このコントロールは、カーネルがメモリページをどの程度積極的にスワップするかを定義するために使用されます。値を大きくすると攻撃性が高まり、値を小さくするとスワップ量が減少します。値0は、空きページとファイルバッキングページの量が次の値より小さくなるまで、カーネルにスワップを開始しないように指示します 最高水準点 ゾーンで。
- linux-5.0/Documentation/sysctl/vm.txt
MemAvailable
スワップせずに新しいアプリケーションを開始するために利用可能なメモリの推定量。 MemFree、SReclaimable、ファイルLRUリストのサイズ、および 低透かし 各ゾーンで。この見積もりでは、システムが適切に機能するためにページキャッシュが必要であること、およびアイテムが使用されているためにすべての再生可能なスラブが再生可能であるとは限らないことを考慮しています。これらの要因の影響は、システムによって異なります。
- linux-5.0/Documentation/filesystems/proc.txt (ファイル
/proc/meminfo
)。
私のシステムの最低水準点と最高水準点の現在の値は何ですか?そして、それらはどのような値に関連していますか。パーセンテージで表現したいのですか?
ウォーターマークは、/proc/zoneinfo
のlow
とhigh
の値で、ページ単位(x86では4096バイト)で表示されます。
私の8GBシステムでは、ほとんどのページがDMA32ゾーンと通常ゾーンに分割されています。 (そして、すべてがNode 0に属しています。これは [〜#〜] numa [〜#〜] システムではないためです)。
# cat /proc/zoneinfo
Node 0, zone DMA
...
pages free 3961
min 33
low 41
high 49
spanned 4095
present 3996
managed 3961
...
Node 0, zone DMA32
pages free 139960
min 7184
low 8980
high 10776
spanned 1044480
present 888973
managed 866327
...
Node 0, zone Normal
pages free 33907
min 31449
low 33868
high 36287
spanned 1173504
present 1173504
managed 1140349
...
透かしはmanaged
の比率です。
非常に広く言えば、私のシステムの透かしは1%から3%の間のどこかです。
__ setup_per_zone_wmarks() を参照してください。 (また free_area_init_core() 、 set_dma_reserve() 、およびコミット mm:ゾーンを構築するために新しいフィールド "managed_pages"を導入 。)
カーネルは、必要に応じて透かしを動的に増やします( boost_watermark() )。
Documentation/sysctl/vm.txt のwatermark_boost_factor
およびwatermark_scale_factor
によって動作を調整できます。スケール係数のデフォルトは0.1%で、ブースト係数のデフォルトはスケール係数の150%です。
私のシステムでは、透かしはmin
が支配的です。ゾーンごとのmin
ウォーターマークは、min_free_kbytes
から比例して設定されます。カーネルは67584のデフォルトのmin_free_kbytes
値を計算しました。関連: min_free_kbytes
のこの値の計算方法の説明 。
「ノーマル」ゾーンの最小透かしが31449ページ= 125796 KiBと表示された理由がわかりません。これはソースコードと矛盾しているようです。これまでのところ、それはバグまたはハードウェアの障害であるとしか思えません。この質問を参照してください: 私の最低水準点と最高水準点は、Documentation/sysctl/vm.txtによって予測されたものより高いようです