Linuxカーネル:より大きなスワップブロック

Linuxカーネル:より大きなスワップブロック

ディスクの中断に非常に満足しています。しかし、メモリがますます多くなると、以前ほど効率的ではありません。

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を超えると機能しないため、一般的な解決策ではありません。)

ベストアンサー1

おすすめ記事