![KVM IO 导致系统负载过高,WD Caviar Green(EACS)](https://linux22.com/image/585137/KVM%20IO%20%E5%AF%BC%E8%87%B4%E7%B3%BB%E7%BB%9F%E8%B4%9F%E8%BD%BD%E8%BF%87%E9%AB%98%EF%BC%8CWD%20Caviar%20Green%EF%BC%88EACS%EF%BC%89.png)
我有一台运行 Linux 3.2.0-24-generic、libvirt 0.9.8-2ubuntu17、qemu-kvm 1.0+noroms-0ubuntu13 的 Ubuntu 12.04 主机。主机使用 elevator=deadline,客户机使用 elevator=noop。所有 KVM 客户机都使用 virtio、无缓存、io 模式默认和 LVM 逻辑卷作为存储。我使用 bonnie++ 1.96 来评估 IO 性能。
硬件:
- 超微 X8SIL-F
- 英特尔(R) 酷睿(TM) i7 CPU 870
- 4 x 金士顿 4GiB DIMM DDR3 同步 1333 MHz(0.8 ns)
- 2 个 WDC WD10EACS-00D(WD 鱼子酱绿)我已使用 wdidle3 工具禁用了硬盘上的 IntelliPark(8 秒睡眠定时器)。
两个硬盘的分区如下:
- 20 GB,以 md RAID-1 形式存储,用于主机根文件系统
- 640 GB,采用 md RAID-1,带有 LVM 作为客户文件系统
- 330 GB,采用 md RAID-0 模式,带有 LVM 作为客户文件系统
- 4 GB,交换主机
Fdisk 输出:
# fdisk -b 4096 /dev/sda
Note: sector size is 4096 (not 512)
Command (m for help): p
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 15200 cylinders, total 244190646 sectors
Units = sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 39070000 156271812 fd Linux raid autodetect
/dev/sda2 39070080 1297361280 738197508 fd Linux raid autodetect
/dev/sda3 1297361288 1945712472 2593404740 fd Linux raid autodetect
/dev/sda4 1945712480 1953525160 31250724 82 Linux swap / Solaris
观察结果:
- 当我在主机上运行 bonnie++ 时,在 md RAID-1 支持的文件系统上,“智能写入”期间系统负载会增加到大约 12,并且所有系统(主机和客户机)都会变得非常慢并且无法使用。
输出:
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
hostname 2G 1132 91 21439 1 21741 2 5131 86 +++++ +++ 1747 8
Latency 10093us 459ms 128us 3928us 113us 83us
Version 1.96 ------Sequential Create------ --------Random Create--------
hostname -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 23851 19 +++++ +++ 28728 17 28138 21 +++++ +++ 31239 19
Latency 1017us 602us 1144us 323us 61us 1196us
- 当我在客户机上运行 bonnie++ 时,在 md RAID-1 支持的文件系统上,在“智能写入”期间,主机系统负载上升到大约 25,并且所有系统(主机和客户机)都变得无法使用。
输出:
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
hostname 2G 965 88 9244 0 7981 1 2595 74 54185 4 248.4 4
Latency 16439us 13832ms 4195ms 126ms 280ms 236ms
Version 1.96 ------Sequential Create------ --------Random Create--------
hostname -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 4433 5 +++++ +++ 8005 4 8373 8 +++++ +++ 7325 4
Latency 101ms 1003us 494us 298us 64us 419us
- 当我在客户机上运行 bonnie++ 时,在 md RAID-0 支持的文件系统上,在“智能写入”期间,主机系统负载上升到大约 50,并且所有系统(主机和客户机)变得无法使用。
输出:
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
hostname 2G 1019 93 16786 2 12406 2 1747 30 39973 2 659.2 6
Latency 18226us 7968ms 2617ms 445ms 212ms 1613ms
Version 1.96 ------Sequential Create------ --------Random Create--------
hostname -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ 16709 14
Latency 28112us 440us 442us 166us 96us 123us
问题:
- 运行 bonnie++ 时如此高的负载正常吗?
- 我感觉主机和客户端的 IO 都非常慢,您会根据结果确认这一点吗,还是我期望太高?
- 什么原因会导致这种现象?(难道 Caviar Green 磁盘就像你在互联网上看到的一样糟糕吗?)
- 我可以调整任何东西来提高 IO 速度/负载吗?
- 有没有办法“隔离”单个客户机中的高 IO 结果,以便单个客户机不会显著影响其他客户机的性能?
答案1
听起来像是 4k 块对齐问题。您在 fdisk 中使用了 -b 选项吗?