使用NCQ的Linux软件RAID 5性能较差

在我的3磁盘RAID 5设置中挽回了2个磁盘的故障的同时,我偶然发现禁用NCQ(〜90M / sec)时的重build比启用NCQ(〜50M / sec)时更快。 运行bonnie ++来对这两种configuration进行基准testing也显示了顺序输出块的写入性能明显更好:

  • 没有NCQ – 85M /秒,2021ms的延迟
  • NCQ – 62M /秒,延迟57118ms

57秒是不是有点过分?

我使用内核参数libata.force = noncq禁用了NCQ,交替执行了两次testing,没有其他configuration更改。 我还在三个组件磁盘上的分区上运行了bonnie ++,发现运行有或没有NCQ之间没有显着差异。

以下是完整的bonnie ++输出:

Version 1.96 ------Sequential Output------ --Sequential Input- --Random- -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 raid5-noncq 24G 435 92 85154 18 53585 9 3409 93 154272 10 297.6 13 Latency 525ms 2021ms 235ms 27652us 158ms 747ms raid5 24G 372 81 61591 7 60999 9 3130 86 160280 10 296.4 13 Latency 18784us 57118ms 11323ms 59583us 133ms 150ms sdd-ext4-noncq 24G 513 97 73428 8 33118 4 3324 91 90266 5 170.6 1 Latency 17985us 503ms 1805ms 30066us 15626us 1341ms sdd-ext4 24G 499 97 71223 8 33015 4 3326 95 95342 5 276.0 3 Latency 17689us 1124ms 1345ms 11202us 18187us 1213ms sde-ext4-noncq 24G 517 97 48200 5 22385 3 3555 94 62578 3 174.3 1 Latency 22423us 1609ms 2296ms 13131us 22446us 1960ms sde-ext4 24G 491 97 47942 5 22317 3 3281 95 62669 3 257.1 3 Latency 20081us 2860ms 2434ms 12207us 27984us 990ms sdb-ext4-nonc-2 24G 976 99 81552 9 47557 6 3514 95 146167 8 208.6 7 Latency 13004us 227ms 758ms 40575us 59198us 219ms sdb-ext4 24G 1014 99 79603 8 48778 6 3598 97 146225 8 310.1 10 Latency 10686us 659ms 400ms 20054us 67295us 226ms ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP raid5-noncq 16 8997 38 +++++ +++ 18071 22 18097 75 +++++ +++ +++++ +++ Latency 25974us 695us 738us 123us 21us 43us raid5 16 4227 21 +++++ +++ 15053 25 11634 58 +++++ +++ 20341 33 Latency 26221us 735us 735us 172us 15us 55us sdd-ext4-noncq 16 10453 53 +++++ +++ +++++ +++ 16324 82 +++++ +++ +++++ +++ Latency 245us 1126us 895us 204us 30us 46us sdd-ext4 16 15339 51 +++++ +++ +++++ +++ 23763 77 +++++ +++ +++++ +++ Latency 192us 957us 641us 115us 94us 101us sde-ext4-noncq 16 12825 41 +++++ +++ +++++ +++ 21636 68 +++++ +++ +++++ +++ Latency 452us 662us 642us 115us 20us 41us sde-ext4 16 13185 45 +++++ +++ +++++ +++ 23033 77 +++++ +++ +++++ +++ Latency 136us 634us 655us 118us 28us 41us sdb-ext4-noncq 16 4657 78 +++++ +++ +++++ +++ 6912 97 +++++ +++ 23160 95 Latency 89592us 180us 115us 348us 46us 131us sdb-ext4 16 5061 75 +++++ +++ +++++ +++ 7011 97 +++++ +++ 23400 95 Latency 12010us 110us 119us 633us 30us 143us 

感谢您更新问题! 看起来好像用RAID5进行的NCQtesting只是暴露出NCQ完全无视数据必须写入磁盘(即使它是在软件中)(这是IO调度器和硬件突袭我的经验, http://blog.excess.net/2010/11/07/changing-your-linux-io-scheduler/ )。

来自: https : //raid.wiki.kernel.org/index.php/Performance

控制器的NCQ可能会干扰Linux内核优化

我认为其他testing确实certificateNCQ直接与磁盘通信时工作正常,因为它们或者显示性能提升或者接近于对noNCQtesting没有影响。

关于57s值,它只是你有多lessIO缓冲区和你正在使用的调度程序的人为因素。 如果您担心IO系统的交互式响应,您应该调查一下不同的调度程序(请参阅: http ://blog.excess.net/2010/11/07/changing-your-linux-io-scheduler/)。