大容量ファイルをコピーすると過度のスワップが発生する

大容量ファイルをコピーすると過度のスワップが発生する

32GBのRAM、3TBの空きディスク容量を備えた中級CentOS 6.4/64サーバーでKVMハイパーバイザーとして実行しながら、同じローカルファイルシステムのターゲット場所に200GBのファイルをコピーし始めました。実際、このファイルはKVM仮想ディスクイメージ(電源がオフになっているVMに対応)です。他の12台の仮想マシンは同じマシンで正常に実行されています。

十分なスペースで始まります。

[root@myserver]$ free
             total       used       free     shared    buffers     cached
Mem:      32847956   16722708   16125248          0      63756     407740
-/+ buffers/cache:   16251212   16596744
Swap:     16383992          0   16383992

ただし、コピーが進むにつれて、メモリ使用量はスワップ領域に達するまで着実に増加し始めます。もちろん、これを行うとすべてが遅くなります...コピーは最終的に約30分後に終了します。結局私の記憶はこうだ。

[root@myserver]$ free
             total       used       free     shared    buffers     cached
Mem:      32847956   32643564     204392          0      24392   23213400
-/+ buffers/cache:    9405772   23442184
Swap:     16383992   12057880    4326112

どのプロセスがスワップを使用しているかを見て、qemu-kvmの複数のインスタンスを観察しました。そのため、すべての仮想マシンがスワップされるわけではなく、多くのサーバーのパフォーマンスが影響を受けています。本番サーバーを再起動しなくても、スワップを0(そうでない場合は正常)に戻す方法が見つかりません。

この問題の原因は何ですか?単純なcpプロセスがどのように多くのメモリを消費するのか、そしてこれを防ぐ方法は何ですか?どんなアドバイス?

ありがとう

ベストアンサー1

スワップ領域をゼロに復元することは有用な目標ではありません。

何もないそれ自体物を交換するのは間違っています。プログラムが実際に使用していないリソースをロードすることは非常に可能です。これは、ライブラリの全機能のほんの一部しか必要としませんが、プログラムが他の人が提供する巨大なライブラリに大きく依存している今日の肥大したソフトウェアの世界でしばしば起こります。

あなたが提供した唯一のハード数字(30分に200GB)も私の目にはかなりよさそうです。これは114MB /秒で、単一の物理ボリューム内でファイルをコピーすることを考慮すると、驚くべきコピー速度です。しばらく前まで、順次読み取り速度100MB/秒はかなり印象的でした。インタリーブされた読み書きよりも優れた管理が可能です!

最も重要なことは、あなたが間違った木を吠えていると思います。

おすすめ記事