私のコンピュータで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.swappiness
sysctlパラメーター。しかし、交換性を減らしてもシステム速度が速くなるわけではありません。これは驚くべきことではありません。システムの交換が少ない場合、ファイル(プログラムコードなど)からデータをロードするのに時間がかかります。
比較的大量のメモリがある場合、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
午前中にシステムが遅く実行されている場合、これは夜間のクローン操作(たとえば、updatedb
inodeキャッシュエントリでメモリを埋める)によるものです。同様のことを試してくださいsysctl vm.swappiness=500
。キャッシュの更新は一度だけ実行できますecho 2 >|/proc/sys/vm/drop_caches
(パフォーマンスが低下するため、定期的に実行しないでください)。