我运行的系统 IO 利用率较低:
- HP DL380G7(24GB 内存)
- 智能阵列 p410i,配备 512MB 电池支持的写入缓存
- 6 个 SAS 10k rpm 146gb 硬盘,RAID10
- Debian Squeze linux,ext4 + LVM,已安装 hpacucli
iostat(cciss/c0d1 = raid10 阵列,dm-7 = 60G lvm 分区用于测试):
设备:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util cciss/c0d0 0,00 101,20 0,00 6,20 0,00 0,42 138,58 0,00 0,00 0,00 0,00 cciss/c0d1 0,00 395,20 3,20 130,20 0,18 2,05 34,29 0,04 0,26 0,16 2,08 dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 dm-2 0,00 0,00 3,20 391,00 0,18 1,53 8,87 0,04 0,11 0,05 1,84 dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 dm-4 0,00 0,00 0,00 106,80 0,00 0,42 8,00 0,00 0,00 0,00 0,00 dm-5 0,00 0,00 0,00 0,60 0,00 0,00 8,00 0,00 0,00 0,00 0,00 dm-6 0,00 0,00 0,00 2,80 0,00 0,01 8,00 0,00 0,00 0,00 0,00 dm-1 0,00 0,00 0,00 132,00 0,00 0,52 8,00 0,00 0,02 0,01 0,16 dm-7 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
hpacucli“ctrl 全部显示配置”
插槽 0 中的智能阵列 P410i(嵌入式)(sn:5001438011FF14E0) 阵列 A(SAS,未使用空间:0 MB) 逻辑驱动器 1(136.7 GB,RAID 1,正常) 物理驱动器 1I:1:1(端口 1I:盒 1:托架 1,SAS,146 GB,正常) 物理驱动器 1I:1:2(端口 1I:盒 1:托架 2,SAS,146 GB,正常) 阵列 B(SAS,未使用空间:0 MB) 逻辑驱动器 2(410.1 GB,RAID 1+0,正常) 物理驱动器 1I:1:3(端口 1I:盒 1:托架 3,SAS,146 GB,正常) 物理驱动器 1I:1:4(端口 1I:盒 1:托架 4,SAS,146 GB,正常) 物理驱动器 2I:1:5(端口 2I:盒 1:托架 5,SAS,146 GB,正常) 物理驱动器 2I:1:6(端口 2I:盒 1:托架 6,SAS,146 GB,正常) 物理驱动器 2I:1:7(端口 2I:盒 1:托架 7,SAS,146 GB,正常) 物理驱动器 2I:1:8(端口 2I:盒 1:托架 8,SAS,146 GB,正常) SEP(供应商 ID PMCSIERA,型号 SRC 8x6G)250(WWID:5001438011FF14EF)
hpacucli“ctrl 全部显示状态”
插槽 0 中的智能阵列 P410i(嵌入式) 控制器状态:正常 缓存状态:正常 电池/电容器状态:正常
Sysbench 命令
sysbench --init-rng=on --test=fileio --num-threads=16 --file-num=128 --file-block-size=4K --file-total-size=54G --file-test-mode=rndrd --file-fsync-freq=0 --file-fsync-end=off run --max-requests=30000
Sysbench 结果
sysbench 0.4.12:多线程系统评估基准 使用以下选项运行测试: 线程数:16 从计时器初始化随机数生成器。 额外文件打开标志:0 128 个文件,每个 432Mb 文件总大小 54GB 块大小 4Kb 随机IO随机请求数:30000 组合随机 IO 测试的读/写比率:1.50 使用同步 I/O 模式 进行随机读取测试 讨论已开始! 完毕。 执行的操作:30000 次读取、0 次写入、0 次其他 = 总计 30000 读取 117.19Mb 写入 0b 总传输量 117.19Mb (935.71Kb/秒) 每秒执行 233.93 个请求 测试执行摘要: 总时间:128.2455秒 活动总数:30000 事件执行总时间:2051.5525 每个请求的统计信息: 最小值:0.00 毫秒 平均:68.39毫秒 最大:2010.15毫秒 约 95 百分位数:660.40 毫秒 线程公平性: 事件(平均值/标准差):1875.0000/111.75 执行时间(平均/标准差):128.2220/0.02
测试期间的 iostat
平均 CPU:%用户%nice%系统%iowait%steal%idle 0,00 0,01 0,10 31,03 0,00 68,86 设备:rrqm/s wrqm/sr/sw/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util cciss/c0d0 0,00 0,10 0,00 0,60 0,00 0,00 9,33 0,00 0,00 0,00 0,00 cciss/c0d1 0,00 46,30 208,50 1,30 0,82 0,10 8,99 29,03 119,75 4,77 100,00 dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 dm-2 0,00 0,00 0,00 51,60 0,00 0,20 8,00 49,72 877,26 19,38 100,00 dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 dm-4 0,00 0,00 0,00 0,70 0,00 0,00 8,00 0,00 0,00 0,00 0,00 dm-5 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 dm-6 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00 dm-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00 dm-7 0,00 0,00 208,50 0,00 0,82 0,00 8,04 25,00 75,29 4,80 100,00 dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
邦尼++ v1.96
命令:/usr/sbin/bonnie++-c 16-n 0 每次写入一个字节...完成 明智地写作...完成 重写...完成 每次读取一个字节...完成 智能阅读...完成 开始...完成...完成...完成...完成...完成... 版本 1.96 ------顺序输出------ --顺序输入- --随机- 并发性 16 -每个 Chr- --块-- -重写- -每个 Chr- --块-- --查找-- 机器大小 K/秒 %CP K/秒 %CP K/秒 %CP K/秒 %CP K/秒 %CP /秒 %CP seo-db 48304M 819 99 188274 17 98395 8 2652 78 201280 8 265.2 1 延迟 14899us 726ms 15194ms 100ms 122ms 665ms 1.96,1.96,seo-db,16,1337541936,48304M,,819,99,188274,17,98395,8,2652,78,201280,8,265.2,1,,,,,,,,,,,,,,,,,,14899us,726ms,15194ms,100ms,122ms,665ms,,,,,,
问题
因此,sysbench 显示每秒有 234 次随机读取。
我预计至少有 400 次。
瓶颈可能是什么?LVM?
另一个带有 mdadm raid1 + 2x 7200rpm 驱动器的系统显示每秒有超过 200 次随机读取...
谢谢你的帮助!
答案1
根据您的硬件规格,您的系统肯定性能不佳。我sysbench
在几台运行 CentOS 5/6 的闲置 HP ProLiant DL380 G6/G7 服务器上加载了该实用程序,以检查其性能。这些是普通的固定分区,而不是 LVM。(我通常不使用 LVM,因为 HP Smart Array 控制器提供了灵活性)
DL380 G6 配备 6 磁盘 RAID 1+0 阵列,位于 Smart Array P410 控制器上,配备 512MB 电池备份缓存。DL380 G7 配备 2 磁盘企业级 SLC SSD 阵列。文件系统为西弗斯。我使用了与您相同的 sysbench 命令行:
sysbench --init-rng=on --test=fileio --num-threads=16 --file-num=128 --file-block-size=4K --file-total-size=54G --file-test-mode=rndrd --file-fsync-freq=0 --file-fsync-end=off --max-requests=30000 run
我的结果是每秒随机读取 1595 次跨 6 个磁盘。
在 SSD 上,结果是每秒随机读取 39047 次。完整结果在本文末尾...
至于您的设置,我首先注意到的是测试分区的大小。您几乎用 54GB 的测试文件填满了 60GB 的分区。我不确定 ext4 在 90% 以上的性能下是否存在问题,但这是您修改和重新测试的最快方法。(或使用一组较小的测试数据)
即使使用 LVM,此控制器/磁盘设置也有一些可用的调整选项。检查预读并更改输入/输出调度程序默认设置韓國到最后期限或者无操作很有帮助。请参阅以下问题和答案:Linux - 实际硬件 RAID 控制器调整(scsi 和 cciss)
您的 RAID 控制器缓存比率是多少?我通常使用 75%/25% 的写入/读取平衡。这应该是一个快速测试。6 磁盘阵列在 18 秒内完成。您的阵列花了 2 分钟多。
你能运行邦尼++或者碘测试有问题的分区/阵列?看看系统上是否有其他瓶颈会很有帮助。我不熟悉系统工作台,但我认为这些其他工具可以让您更好地了解系统的功能。
文件系统挂载选项可能会产生一点差别,但我认为问题可能比这更深......
hpacucli 输出...
Smart Array P410i in Slot 0 (Embedded) (sn: 50123456789ABCDE)
array A (SAS, Unused Space: 0 MB)
logicaldrive 1 (838.1 GB, RAID 1+0, OK)
physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)
physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)
SEP (Vendor ID PMCSIERA, Model SRC 8x6G) 250 (WWID: 50123456789ABCED)
sysbench DL380 G6 6 磁盘结果...
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.
Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.
Operations performed: 30001 Read, 0 Write, 0 Other = 30001 Total
Read 117.19Mb Written 0b Total transferred 117.19Mb (6.2292Mb/sec)
1594.67 Requests/sec executed
Test execution summary:
total time: 18.8133s
total number of events: 30001
total time taken by event execution: 300.7545
per-request statistics:
min: 0.00ms
avg: 10.02ms
max: 277.41ms
approx. 95 percentile: 25.58ms
Threads fairness:
events (avg/stddev): 1875.0625/41.46
execution time (avg/stddev): 18.7972/0.01
sysbench DL380 G7 SSD 结果...
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.
Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.
Operations performed: 30038 Read, 0 Write, 0 Other = 30038 Total
Read 117.34Mb Written 0b Total transferred 117.34Mb (152.53Mb/sec)
39046.89 Requests/sec executed
Test execution summary:
total time: 0.7693s
total number of events: 30038
total time taken by event execution: 12.2631
per-request statistics:
min: 0.00ms
avg: 0.41ms
max: 1.89ms
approx. 95 percentile: 0.57ms
Threads fairness:
events (avg/stddev): 1877.3750/15.59
execution time (avg/stddev): 0.7664/0.00