デフォルトでは、swappinessが60に設定されているのはなぜですか?

デフォルトでは、swappinessが60に設定されているのはなぜですか?

私はLinuxでのスワップについての内容を読んだだけです。なぜデフォルト値が60に設定されているのかわかりません。

私によると、交換を減らすためにこのパラメータを10に設定する必要があります。スワップは私のハードドライブにあるので、私のRAMよりはるかに遅いです。

なぜカーネルをこのように構成するのですか?

ベストアンサー1

カーネル 2.6.28 以降、Linux は以下を使用します。最近使用した項目を分割します。(LRU)ページ交換戦略。ファイルシステムソース(プログラムテキストや共有ライブラリなど)を含むページはファイルキャッシュに属します。ファイルシステムのバックアップがないページは匿名ページと呼ばれ、アプリケーション用に予約されているスタックスペースなどのランタイムデータで構成されます。通常、ファイルキャッシュに属するページはメモリから削除する方が安いです(これらのページは必要に応じてディスクから読み直すことができるからです)。匿名ページはファイルシステムをサポートしていないため、それらを格納するスワップスペースがない限り、プログラムが必要とする限りメモリに残る必要があります。

これが一般的な誤解です。スワップパーティション何らかの方法でシステムの速度が遅くなります。スワップパーティションがないとしても、カーネルがメモリからページを削除しないという意味ではありません。カーネルが削除するページに対する選択肢が少ないという意味にすぎません。使用可能なスワップ量は使用量に影響しません。

Linuxでは、デフォルトでは、カーネルメモリ統計ポリシーがスワップ領域不足に対処できます。過剰なメモリ使用量。欠点は、物理メモリが使い果たされ、カーネルが匿名ページをディスクに交換できない場合、メモリ不足キラー(OOM-killer)メカニズムは、メモリを占有する「不良」プロセスを終了し、他のプロセスのためにメモリを解放します。

これvm.swappinessオプションは、匿名ページ用にファイルキャッシュページを交換することとのバランスを変更する修飾子です。ファイルキャッシュには、vm.swappiness修飾子()を引いたランダムな優先順位200が指定されますfile_prio=200-vm.swappiness。デフォルトでは、匿名ページは60()で始まりますanon_prio=vm.swappiness。つまり、デフォルトでは匿名ページ(anon_prio=60、、file_prio=200-60=140)に優先順位の重みが通常です。この動作はmm/vmscan.cカーネルソースツリーで定義されています。

が与えられると、vm.swappiness優先100順位は同じです(file_prio=200-100=100、、anon_prio=100)。これは、匿名ページが原因でファイルキャッシュのページを削除したくない場合は、I / O集中型システムに適しています。

逆に設定するvm.swappinessと、0カーネルがファイルキャッシュ内のページの匿名ページを削除するのを防ぎます。これは、プログラムがほとんどのキャッシュを独自に実行する場合(一部のデータベースの場合でも)、便利です。デスクトップシステムでは相互作用性を向上させることができますが、I / Oパフォーマンスが低下する可能性があるという欠点があります。

デフォルト値は、おおよそこの2つの極端の中間に選択される可能性が高いです。すべてのパフォーマンスパラメータと同様に、チューニングは直観だけvm.swappinessでなく、実際のワークロードと比較できるベンチマークデータに基づいている必要があります。

おすすめ記事