RAID1configuration中的光盘吞吐量不均匀

在RAID1configuration中有两个完全相同的SSD的服务器中IO速度较慢,导致性能问题。 通过使用“atop”注意到光盘的使用甚至没有:

DD | md2 | busy 0% | read 0 | write 1717 | MBr/s 0.00 | MBw/s 0.58 | avio 0.00 ms | DSK | sdb | busy 99% | read 0 | write 842 | MBr/s 0.00 | MBw/s 0.58 | avio 11.8 ms | DSK | sda | busy 11% | read 0 | write 1058 | MBr/s 0.00 | MBw/s 0.58 | avio 1.01 ms 

问题是什么原因呢? 为什么sdb的使用率要高得多? 我已经注意到在less数服务器上的相同问题,所以它们都不太可能都有错误的sdb。 此外,通过使用hdparm检查光盘信息,以确保它们是相同的。 另外,它只发生在运行生产MySQL服务器的服务器上。 我试图通过简单地写入和读取分区来重现这个问题,但我无法以这种方式重现相同的结果。 感谢您的build议。

 [root@CentOS-67-64-minimal ~]# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdb3[1] sda3[0] 232753344 blocks super 1.0 [2/2] [UU] md1 : active raid1 sdb2[1] sda2[0] 524224 blocks super 1.0 [2/2] [UU] md0 : active raid1 sdb1[1] sda1[0] 16777088 blocks super 1.0 [2/2] [UU] unused devices: <none> [root@CentOS-67-64-minimal ~]# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 28484 MB in 2.00 seconds = 14263.62 MB/sec Timing buffered disk reads: 1096 MB in 3.00 seconds = 365.15 MB/sec [root@CentOS-67-64-minimal ~]# hdparm -tT /dev/sdb /dev/sdb: Timing cached reads: 21656 MB in 2.00 seconds = 10841.67 MB/sec Timing buffered disk reads: 14 MB in 3.95 seconds = 3.54 MB/sec [root@CentOS-67-64-minimal ~]# iostat -x 1 Linux 2.6.32-573.3.1.el6.x86_64 (CentOS-67-64-minimal) 2015.11.20 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 8,96 0,13 4,22 3,93 0,00 82,75 Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sdb 0,06 383,28 0,22 164,10 20,26 4275,72 26,15 2,26 13,76 3,21 52,79 sda 2,01 329,12 1,50 218,25 168,39 4275,72 20,22 0,17 0,77 0,35 7,71 md0 0,00 0,00 0,00 0,00 0,01 0,00 8,00 0,00 0,00 0,00 0,00 md1 0,00 0,00 0,00 0,00 0,01 0,00 7,62 0,00 0,00 0,00 0,00 md2 0,00 0,00 1,75 546,03 172,42 4274,38 8,12 0,00 0,00 0,00 0,00 

MadHatter编辑

这是我的iostat输出在很轻的负载下; 注意sdb主轴上的%util(你可以在提示符中用不同的主机名区分我的输出和Nerijus',并且我将把我的编辑保留在(上面)行之下):

 [me@lory ~]$ iostat -x 1 [...] avg-cpu: %user %nice %system %iowait %steal %idle 0.25 0.00 0.50 0.00 0.00 99.25 Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sdb 0.00 0.00 0.00 4.00 0.00 20.00 5.00 1.00 272.50 250.00 100.00 sda 0.00 0.00 0.00 4.00 0.00 20.00 5.00 0.07 17.75 17.75 7.10 md1 0.00 0.00 0.00 5.00 0.00 40.00 8.00 0.00 0.00 0.00 0.00 dm-0 0.00 0.00 0.00 4.00 0.00 32.00 8.00 2.51 272.50 250.00 100.00 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 md0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 

这里是我的hdparm输出:

 [me@lory ~]$ sudo hdparm -tT /dev/sda One-time password (OATH) for `me': /dev/sda: Timing cached reads: 1730 MB in 2.00 seconds = 864.60 MB/sec Timing buffered disk reads: 436 MB in 3.00 seconds = 145.12 MB/sec [me@lory ~]$ sudo hdparm -tT /dev/sdb /dev/sdb: Timing cached reads: 1580 MB in 2.00 seconds = 789.63 MB/sec Timing buffered disk reads: 14 MB in 8.43 seconds = 1.66 MB/sec 

我也可以确认我的/proc/mdstat指出没有重新同步,停止mysqld不会使问题消失。

我看到的可能的原因:

  1. 由于磁盘(+也许控制器)caching – 他们永远不会以同样的方式工作
  2. 不同的固件
  3. 如果不在所有级别使用TRIM,则SSD速度会降低,因为从控制器(磁盘内部)的angular度来看,磁盘将是满的,然后SSD磁盘会变慢。 基准testing显示,通常,磁盘速度也取决于其使用情况。
  4. 与之前的分配地点有关系,SSD是不是SSD,有些/大部分SSD都是RAID结构,所以最大速度取决于你在哪里写数据
  5. 从磁盘到总线的不同硬件(包括电缆,链接速度,控制器等)
  6. 操作系统块磁盘caching – 可能内存不足以平衡两个磁盘的caching…

hdparm -tT不会给你真正的结果,它是缓冲的,并不总是像我们预期的那样透明,没有必要公开内部磁盘如何工作,特别是在2秒内。

可能,他们很好。

我们已经知道你的SBD不健康,这是我的答案。 看一下,你需要得到这样的一个值(在3个不同的服务器在高I / O生产testing)

 1-Timing buffered disk reads: 560 MB in 3.00 seconds = 186.43 MB/sec 2-Timing buffered disk reads: 276 MB in 3.09 seconds = 89.23 MB/sec 3-Timing buffered disk reads: 326 MB in 3.00 seconds = 108.66 MB/sec 5-Timing buffered disk reads: 528 MB in 3.00 seconds = 175.97 MB/sec 6-Timing buffered disk reads: 528 MB in 3.00 seconds = 175.94 MB/sec 

所以你的1.66 MB到目前为止,然后在你的系统上产生过载。 我希望它有帮助!