ディスクの中断に非常に満足しています。しかし、メモリがますます多くなると、以前ほど効率的ではありません。
TOディスクを一時停止するのはうまくいきます。 1〜2分かかり、これは私のディスクのパフォーマンスを考慮して予想していました。
問題は立ち上がる一時停止後:ディスクはスキャンに時間がかかり、単一のページのみを読み取るため、ページイン速度は1 MB / s未満になります。
カーネルに次のページ(10 MBなど)を読み、単一のページを読み取るのではなく、機会に合わせて置き換える方法はありますか?
10MBのページがすぐに必要になっても無駄になりません。 10MBの大部分が必要なくても、これらのページはまだきれいで無料のページに簡単にリサイクルできます。交換されたコピーは影響を受けません。
はい
これは6.5GのRAMを消費し、そのメモリを積極的に使用し、コア全体を100%使用します。
perl -e 'while(1){for(1..25000000){$t{$_}++}}'
ディスクに一時停止する前:
total used free shared buffers cached
Mem: 8074280 7876864 197416 93460 169524 625912
-/+ buffers/cache: 7081428 992852
Swap: 8282108 8 8282100
ディスクサスペンドにかかる時間:7分10秒
ディスクの生のパフォーマンスは50MB / sです。
ディスクからモニターを復元して実行するのにかかる時間:0分32秒
ただし、システムがキー押下に反応する前に、さらに切り替える必要があります:2m02s
このときのメモリ使用量は次のとおりです。
total used free shared buffers cached
Mem: 8074280 2846392 5227888 74232 8312 157588
-/+ buffers/cache: 2680492 5393788
Swap: 8282108 5103264 3178844
Perlプログラムで使用されている6.5Gスペース全体は交換されませんでした。また、4〜5GBが必要です。
vmstat 1
システムが600KB / sで交換していることを報告します。
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
0 2 3506124 1525652 27732 274036 632 0 632 0 228 740 6 1 50 44 0
iostats
ディスク I/O 使用率を 100% と報告します (常に確認するためである可能性があります)。
このperl
プログラムは、何かをするたびにページフォールトを引き起こすため、CPUの約0.3%を使用します。
別の交換として続きます: 1h15m12s
最後に、perl
プログラムが完全に置き換えられ、再び100%で実行される可能性があります。
だから私が望むのは必要性を交換することです。たくさん短いです。これを達成する1つの方法は、単一ページフレームの代わりに一度に10MBを交換して600K / sを増やすことです。
ただし、スワップをすばやく実行できる他の調整パラメータもあります。
(swapoff -a
私の場合、これはオプションでした。10 MB / sにスワップインされましたが、スワップアウトされたデータが8 GBを超えると機能しないため、一般的な解決策ではありません。)