CPU使用率が低いときにLinuxでスワップを強制的にキャンセルする方法はありますか?

CPU使用率が低いときにLinuxでスワップを強制的にキャンセルする方法はありますか?

私のコンピュータで1日以上作業した結果、スワップ容量は約1GBになりました。私のパネルプラグインの一部は交換を実行するため、速度が遅くなります。また、システムは私がキャンセルされるまでスワップをキャンセルしませんswapoff -all;swapon --all。負荷が低い、または同様の状況でスワップをキャンセルするメカニズムは、Linuxカーネルにありますか?

swapoff -all;swapon --all時々RAMの使用量は90%に達するため、毎時間実行されるスクリプトを書くのはお勧めできません。

答え1

おそらくデフォルトのスワップ値は60です。メモリへのスワップの優先順位を下げるには、この値を10に減らして後の動作を監視してください。

echo 10 > /proc/sys/vm/swappiness

永久に作成するには(たとえば、再起動後も保持します)、この行を/etc/sysctl.conf編集して追加します。

vm.swappiness = 10

このパラメーターの詳細については、以下で確認できます。ウィキペディア:交換性

答え2

Linuxは、何かを保存するためにRAMを見つける必要があるときに、最も長い間使用されていないRAMのページを探します。そのページがファイルに属している場合は解放されます。これらのページがプロセスメモリの場合は、スワップに移動します。

Linuxは、どのページがすぐに使用されるのかわからず、どのページがすぐに必要になるかもしれません(例えば、インタラクティブプログラムは反応的です)。 RAMに残っている特定のプロセスに優先順位を付ける方法はないと思います。ページをRAMにロックすることはできますが(この場合はルートまたは適切な機能が必要です)、コンテンツをRAMにロックすると残りのスペースが少なくなるためお勧めできません。

次の方法で特定のプロセスをRAMに強制的にロードできます。記憶を読む— 私のものを見てunswapスクリプト

あなたはできます交換傾向の減少設定としてvm.swappinesssysctlパラメーター。しかし、交換性を減らしてもシステム速度が速くなるわけではありません。これは驚くべきことではありません。システムの交換が少ない場合、ファイル(プログラムコードなど)からデータをロードするのに時間がかかります。

比較的大量のメモリがある場合、3.0〜3.16+カーネルでデフォルトでうまく調整されていない設定の1つは別の設定です。VM sysctl パラメータvm.vfs_cache_pressure。このパラメータはswappinessと多少似ていますが、カーネルオブジェクト、特にinodeキャッシュとdentryキャッシュに関連しています。この値を大きくすると、このキャッシュに使用されるメモリ量が効果的に減少します。slabtopまたはを使用して、inodeキャッシュとdentryキャッシュで使用されているメモリ量を確認できます。

</proc/slabinfo awk '{print $1, $3*$4}' |sort -k2n | tail

午前中にシステムが遅く実行されている場合、これは夜間のクローン操作(たとえば、updatedbinodeキャッシュエントリでメモリを埋める)によるものです。同様のことを試してくださいsysctl vm.swappiness=500。キャッシュの更新は一度だけ実行できますecho 2 >|/proc/sys/vm/drop_caches(パフォーマンスが低下するため、定期的に実行しないでください)。

関連情報