Xenベースのサーバーで深刻な問題が発生しています。これはゲストパーティションにあります。これは準仮想化されたCentOS5.5です。それがハードウェアまたはソフトウェアに関連するのか、それともその中間(ドライバー)なのかわかりません。
基本情報
コントローラーファームウェアを更新しました(これは最後のステップとして実行されました)
Smart Array 6i in Slot 0
Hardware Revision: Rev B
Firmware Version: 2.84
更新されたカーネル
Linux domU 2.6.18-194.32.1.el5xen #1 SMP Wed Jan 5 19:32:33 EST 2011 i686 i686 i386 GNU/Linux
問題はディスクの書き込み速度にあります。
ベースラインパフォーマンスは
次の番号は、ネットワークを介して大きなファイルをコピーするときに上から取得したものです。
もう一度ファイルをコピーすると、負荷平均に比べて速度が低下します。つまり、2回目は1回目の半分の速度です。
この後、冷えるのに少し時間がかかります。負荷平均は、再び使用できるようになるまでゆっくりと減少します。 ls /
約30秒かかります。
top - 13:26:44 up 13 days, 21:44, 2 users, load average: 7.03, 5.08, 3.15
Tasks: 134 total, 2 running, 132 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 25.3%id, 74.5%wa, 0.0%hi, 0.0%si, 0.1%st
Mem: 1048752k total, 1041460k used, 7292k free, 3116k buffers
Swap: 2129912k total, 40k used, 2129872k free, 904740k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1506 root 10 -5 0 0 0 S 0.3 0.0 0:03.94 cifsd
1 root 15 0 2172 644 556 S 0.0 0.1 0:00.08 init
一方、ホストは平均で約0.5の負荷であり、時間の経過とともに安定しています。 〜50%待つ
サーバーハードウェアはデュアルxeon、3gb ram、170gb scsi 320 10k rpmであり、ネットワーク経由でのファイルのコピーに問題はありません。
disk = [ "tap:aio:/vm/domU.img,xvda,w" ]
これらもログに記録されます
INFO: task syslogd:1350 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
syslogd D 00062E4F 2208 1350 1 1353 1312 (NOTLB)
c0ef0ed0 00000286 6e71a411 00062e4f c0ef0f18 00000009 c0f20000 6e738bfd
00062e4f 0001e7ec c0f2010c c181a724 c1abd200 00000000 ffffffff c0ef0ecc
c041a180 00000000 c0ef0ed8 c03d6a50 00000000 00000000 c03d6a00 00000000
Call Trace:
[<c041a180>] __wake_up+0x2a/0x3d
[<ee06a1ea>] log_wait_commit+0x80/0xc7 [jbd]
[<c043128b>] autoremove_wake_function+0x0/0x2d
[<ee065661>] journal_stop+0x195/0x1ba [jbd]
[<c0490a32>] __writeback_single_inode+0x1a3/0x2af
[<c04568ea>] do_writepages+0x2b/0x32
[<c045239b>] __filemap_fdatawrite_range+0x66/0x72
[<c04910ce>] sync_inode+0x19/0x24
[<ee09b007>] ext3_sync_file+0xaf/0xc4 [ext3]
[<c047426f>] do_fsync+0x41/0x83
[<c04742ce>] __do_fsync+0x1d/0x2b
[<c0405413>] syscall_call+0x7/0xb
=======================
提案されているようにirqbalancedを無効にしようとしました ここ ですが、違いはないようです。
更新:
domU# cat /sys/block/xvda/queue/scheduler
[noop] anticipatory deadline cfq
ディスクとの間でファイルをコピーすると、負荷は4未満のままになります。その後のコピーでは、負荷が増加します。ネットワーク経由でファイルをコピーすると、最初の実行で4を超える負荷が発生し、その後のコピーではサーバーがほぼ完全に停止し、冷却する時間が必要になります。サーバーがダウンすることはなく、10〜15分で復旧します。しかし、サーバーがそのように動作することは実際には実行可能ではありません。
ネットワークトラフィック自体は、たとえばiperfの実行に問題を引き起こしておらず、測定可能な効果はありません。報告された帯域幅は> 1gbitです。
Dom0での書き込みパフォーマンスはOKです
dom0# dd if=/dev/zero of=./test1024M bs=1024k count=1024 conv=fsync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 34.9725 seconds, 30.7 MB/s
DomUでの書き込みパフォーマンスが遅い
domU# dd if=/dev/zero of=./test1024M bs=1024k count=1024 conv=fsync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 622.163 seconds, 1.7 MB/s
これは約95%のパフォーマンス低下です。
読み取りパフォーマンスはOKです
dom0# hdparm -tT /dev/cciss/c0d0p1
/dev/cciss/c0d0p1:
Timing cached reads: 3352 MB in 2.00 seconds = 1676.70 MB/sec
Timing buffered disk reads: 100 MB in 2.59 seconds = 38.57 MB/sec
domU# hdparm -tT /dev/xvda
/dev/xvda:
Timing cached reads: 3144 MB in 2.00 seconds = 1571.51 MB/sec
Timing buffered disk reads: 120 MB in 3.03 seconds = 39.67 MB/sec
更新:
したがって、これは結局のところハードウェアに関連しているようです。しかし、xenを実行するまで表示されませんでした。バッテリーは正常に充電されていませんでした。これにより、キャッシュが無効になりました。これをVM集中的に実行するIOと組み合わせると、待機時間が長くなります。
ファームウェアをアップグレードした直後は何も変更されていませんが、ファームウェアのアップグレード以降、バッテリーは正しく充電されています。そして、バッテリーが完全に充電された後、書き込み速度は許容できるようになりました。小さなファイルの場合、dom0の速度を超えているため、なぜそれが発生するのかわかりません。
domU# dd if=/dev/zero of=./test1024M bs=1024k count=1024 conv=fsync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 39.1087 seconds, 27.5 MB/s
私はあなたのホスト(CentOS5.5)で使用されている古いxenバージョンのせいにします。 SLES10または11の使用を強くお勧めします。11にはXEN4.xが組み込まれています。
SLES 10Dom0で実行されているCentOS5DomUでパフォーマンスの問題はありません。