使用NCQ的Linux软件RAID 5性能不佳

Modified on: Fri, 08 Nov 2019 22:20:02 +0800

在我的3磁盘RAID 5设置中挽救2磁盘故障的同时,我注意到NCQ禁用(~90M /秒)的重建速度比启用NCQ(~50M /秒)时更快。运行bonnie ++来对两种配置进行基准测试也显示出顺序输出模块的写入性能明显更好:

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

不是57秒有点过分?

我使用内核参数 libata.force = noncq 禁用NCQ并交替运行测试两次而不进行其他配置更改。我还在三个组件磁盘上的分区上运行了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的NCQ测试只是暴露出NCQ完全不知道如何将数据写入磁盘,即使它是在软件中(这是我的经验中IO调度程序和硬件raid的一个非常常见的问题) ,http://blog.nexcess.net/ 2010/11年/ 07 /改变,你-Linux的IO调度/)。

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

  

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

我认为其他测试确实证实NCQ在直接与磁盘通信时正在工作,因为它们要么显示性能提升,要么接近,因为对noNCQ测试没有任何影响。

关于57s值,它只是你拥有多少IO缓冲区和你正在使用的scehduler的工件。如果您担心IO系统的交互式响应,您应该调查一个不同的scehduler(参见:http://blog.nexcess.net/2010/11/07/changing-your-linux-io-scheduler/)。

作者:polynomial

相关问答

添加新评论