3台のHDDを備えた専用サーバーがあります。システムディスク、バックアップディスク(システムディスクと同じ)およびデータディスク。 cpを使用して(たとえば、バックアップディスクとデータディスクの間で)大量のデータをコピーすると、負荷の平均が非常に高くなります。
たとえば、現時点での平均負荷は約0.57ですが、データをコピーすると、50を超える可能性があります。
rsync and with --bwlimit=10000
でコピーしても問題ありません。値が大きいほど、負荷が高くなります。
ファイルシステムはext3です。
% hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 13444 MB in 2.00 seconds = 6730.82 MB/sec
Timing buffered disk reads: 232 MB in 3.02 seconds = 76.73 MB/sec
% hdparm -Tt /dev/sdb
/dev/sdb:
Timing cached reads: 13740 MB in 2.00 seconds = 6879.30 MB/sec
Timing buffered disk reads: 430 MB in 3.00 seconds = 143.10 MB/sec
% hdparm -Tt /dev/sdc
/dev/sdc:
Timing cached reads: 13796 MB in 2.00 seconds = 6907.75 MB/sec
Timing buffered disk reads: 336 MB in 3.01 seconds = 111.45 MB/sec
iostat -x 1(コピーしない場合): http://Pastebin.com/4WKU7YPa
iostat -x 1(コピー時:sdc> sdb): http://Pastebin.com/fHafRCa8
% cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
他の2つのディスクは現在「期限」ですが、同様に「cfq」でした。違いがあるかどうかを確認しようとしました。ありません。
ディスクを集中的に使用する操作は、サーバーを強制終了します。一部のプロセスがより多くのメモリを使用し、スワッピングが必要な場合、負荷は非常に高くなります。負荷が下がるように、サービスを強制終了しなければならない場合があります。スワッピングにより負荷が500になる場合がありました。
サーバーには4GB RAMおよびXeonX3220 @ 2.40GHzがあります。十分なRAMがない場合はパフォーマンスの低下を受け入れることができますが、コピーするだけではサーバーが停止することはありません。これは正しく継ぎ目がありません。
何が問題になるのか考えてみませんか?他に何を確認する必要がありますか?それは悪いマザーボードコントローラーでしょうか?
%fdisk -l
ディスク/ dev/sda:500.1 GB、500107862016バイト 255ヘッド、63セクター/トラック、60801シリンダー ユニット= 16065のシリンダー* 512 = 8225280バイト デバイスブート開始エンドブロックIDシステム /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 1318 10482412+ 83 Linux /dev/sda3 1319 2623 10482412+ 83 Linux /dev/sda4 2624 60801 4673147855拡張 /dev/sda5 2624 3928 10482381 83 Linux /dev/sda6 3929 4189 2096451 82 Linuxスワップ/Solaris /dev/sda74190 60670 453683601 83 Linux /dev/sda8 60671 60801 1052226 83 Linux ディスク/ dev/sdb:2000.3 GB、 2000398934016バイト 255ヘッド、63セクター/トラック、243201シリンダー ユニット= 16065のシリンダー* 512 = 8225280バイト デバイスブート開始エンドブロックIDシステム /dev/sdb1 1 243201 1953512001 83 Linux ディスク/ dev/sdc:500.1 GB、500107862016バイト 255ヘッド、63セクター/トラック、60801シリンダー ユニット= 16065のシリンダー* 512 = 8225280バイト デバイスブート開始エンドブロックIDシステム /dev/sdc1 * 1 60801 488384001 83 Linux
%cat/proc/scsi/scsi
接続デバイス: ホスト:scsi0チャネル:00 ID:00 Lun:00 ベンダー:ATAモデル:WDC WD5002ABYS-0 Rev:02.0 タイプ:直接-ANSI SCSIリビジョンにアクセス:05 ホスト:scsi0チャネル:00 Id:01 Lun:00 ベンダー:ATAモデル:WDC WD2003FYYS-0リビジョン:01.0 タイプ:直接-アクセスANSISCSIリビジョン:05 ホスト:scsi1チャネル:00 ID:00 Lun:00 ベンダー:ATAモデル:WDC WD5002ABYS-0リビジョン:02.0 タイプ:直接アクセスANSI SCSIリビジョン:05
あなたは私と同じケースだと思います ダーティページをたくさん生成すると同期書き込みがブロックされます
トッププロセスの中でkjournald。
ext3のようなジャーナリングファイルシステムを使用しているため、同期書き込みがブロックされているようです。
あなたが試すことができます
プロセスが作成できるダーティメモリの量を減らす:
echo 100000000 > /proc/sys/vm/dirty_background_bytes
echo 200000000 > /proc/sys/vm/dirty_bytes
コピーを行うプロセスは、一度に多くを書き込むことができなくなります。データの一部を書き込み、次の部分を書き込む前にこのデータがディスクにフラッシュされることを確認します。これにより、ジャーナリングスレッドが処理する量が多すぎず、コピーの実行中に他のプロセスからの要求を処理できるようになります。
Ddを使用してコピーを実行し、同期して書き込みを行っていることを確認することもできます。
dd if=foo of=bar bs=4096 oflag=sync
これにより、ブロックが少しずつ書き込まれるようになります。
また、ユースケースに一致する場合は、リスクを理解していれば、宛先フォルダーのジャーナリングを削除できます。オプションを使用して(ext3と思いますか?)ファイルシステムを再マウントできます
data=writeback
これらは私が私のシステムで試したものです。この質問は2年前に開かれましたが、その間に解決策を見つけましたか?