sudo swapoff -a
スワップ(またはテスト前の実行)がないLinuxシステムの最小テストケース。一般ユーザーとして次の bash 行を実行します。
while true; do date; nice -20 stress --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 + 4000;}' < /proc/meminfo)k --vm-keep -m 1 --timeout 10s; sleep 5s; done
そして、優先順位の高いルートシェルを使用して、次のbashシングルライナー(例sudo nice -n -19 bash
:)を実行します。
while true; do NS=$(date '+%N' | sed 's/^0*//'); let "S=998000000 - $NS"; S=$(( S > 0 ? S : 0)); LC_ALL=C sleep "0.$S"; date --iso=ns; done
優先順位の高いプロセスは、date
毎秒できるだけ正確に実行する必要があります。ただし、プロセスが優先順位で実行されている場合でも、優先順位-19
で実行されるバックグラウンド プロセスによって20
大きな遅延が発生する可能性があります。値を大きくすると、より高いレイテンシがアクティブになる可能性があるため、優先度の低いバックグラウンドプロセスによって発生するレイテンシに制限はないようですstress --timeout
。
stress
これを達成するために最大遅延を制限し(必要な場合)、自動的にシャットダウンする方法はありますか?追加/proc/sys/vm/user_reserve_kbytes
または役に立たないようです/proc/sys/vm/admin_reserve_kbytes
。/proc/sys/vm/min_free_kbytes
答え1
*カーネルパッチを試してください。これ質問です。これまでは私は仕事をしているようで(oomの周りの高いレイテンシを防ぎ)(質問のコードを使ってテストしたり)、ディスクスラッシングもかなり避けました(例:コンパイル時)。 Firefox) メモリ不足によりオペレーティングシステムがフリーズすることがよくあります。
パッチはActive(file)
ページの除去を防ぎ、(少なくとも)実行可能なコードページをRAMに保持し、コンテキスト切り替えによる問題を防止する。kswapd0(?)再読み込み(これにより多くのディスク読み取りが発生し、オペレーティングシステムの凍結)。
*またはより良い方法を提案しますか?