XFS分区上的HP DL380p Gen8(p420i控制器)I / O异常


14

在使用XFS在RAID 1 + 0之上的LVM和6个磁盘之上的DL380p gen8服务器上,相同的工作负载导致RHEL 6上的磁盘写入量是RHEL 5的十倍。

请注意,我并不是在尽可能地优化co6系统,而是在理解为什么co6的行为如此巨大地不同,并加以解决。

vmstat / iostat

我们有一个使用MySQL 5.5的MySQL复制设置。在使用RHEL 6作为OS的gen8服务器上的MySQL从服务器性能不佳,对vmstat和iostat的检查表明,这些服务器的页面输出活动是其十倍,而磁盘子系统的写入量是其十倍。blktrace显示这些写入不是由mysql启动的,而是由内核启动的。

Centos 5:

[dkaarsemaker@co5 ~]$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0     12 252668 102684 10816864    0    0     8   124    0    0  9  1 90  0  0
 1  0     12 251580 102692 10817116    0    0    48  2495 3619 5268  6  1 93  0  0
 3  0     12 252168 102692 10817848    0    0    32  2103 4323 5956  6  1 94  0  0
 3  0     12 252260 102700 10818672    0    0   128  5212 5365 8142 10  1 89  0  0

[dkaarsemaker@co5 ~]$ iostat 1
Linux 2.6.18-308.el5 (bc290bprdb-01.lhr4.prod.booking.com)  02/28/2013

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           8.74    0.00    0.81    0.25    0.00   90.21

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0      277.76       399.60      5952.53 2890574849 43058478233
cciss/c0d0p1      0.01         0.25         0.01    1802147      61862
cciss/c0d0p2      0.00         0.01         0.00     101334      32552
cciss/c0d0p3    277.75       399.34      5952.52 2888669185 43058383819
dm-0             32.50        15.00       256.41  108511602 1854809120
dm-1            270.24       322.97      5693.34 2336270565 41183532042

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.49    0.00    0.79    0.08    0.00   91.64

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0      300.00        32.00      4026.00         32       4026
cciss/c0d0p1      0.00         0.00         0.00          0          0
cciss/c0d0p2      0.00         0.00         0.00          0          0
cciss/c0d0p3    300.00        32.00      4026.00         32       4026
dm-0              0.00         0.00         0.00          0          0
dm-1            300.00        32.00      4026.00         32       4026

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.25    0.00    0.46    0.21    0.00   95.09

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0      507.00       160.00     10370.00        160      10370
cciss/c0d0p1      0.00         0.00         0.00          0          0
cciss/c0d0p2      0.00         0.00         0.00          0          0
cciss/c0d0p3    507.00       160.00     10370.00        160      10370
dm-0              0.00         0.00         0.00          0          0
dm-1            507.00       160.00     10370.00        160      10370

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.33    0.00    0.50    0.08    0.00   94.09

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0      318.00        64.00      4559.00         64       4559
cciss/c0d0p1      0.00         0.00         0.00          0          0
cciss/c0d0p2      0.00         0.00         0.00          0          0
cciss/c0d0p3    319.00        64.00      4561.00         64       4561
dm-0              0.00         0.00         0.00          0          0
dm-1            319.00        64.00      4561.00         64       4561

在Centos 6上,分页和磁盘写入增加了十倍:

[root@co6 ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 361044  52340 81965728    0    0    19  1804   36  110  1  1 98  0  0  
 0  0      0 358996  52340 81965808    0    0   272 57584 1211 3619  0  0 99  0  0  
 2  0      0 356176  52348 81966800    0    0   240 34128 2121 14017  1  0 98  0  0 
 0  1      0 351844  52364 81968848    0    0  1616 29128 3648 3985  1  1 97  1  0  
 0  0      0 353000  52364 81969296    0    0   480 44872 1441 3480  1  0 99  0  0  

[root@co6 ~]# iostat 1
Linux 2.6.32-279.22.1.el6.x86_64 (bc291bprdb-01.lhr4.prod.booking.com)  02/28/2013  _x86_64_    (32 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.08    0.00    0.67    0.27    0.00   97.98

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             373.48      1203.02    115203.05   11343270 1086250748
dm-0             63.63        74.92       493.63     706418    4654464
dm-1            356.48      1126.72    114709.47   10623848 1081596740

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.19    0.06    0.00   99.50

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             330.00        80.00     77976.00         80      77976
dm-0              0.00         0.00         0.00          0          0
dm-1            328.00        64.00     77456.00         64      77456

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.38    0.00    0.19    0.63    0.00   98.81

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             570.00      1664.00    128120.00       1664     128120
dm-0              0.00         0.00         0.00          0          0
dm-1            570.00      1664.00    128120.00       1664     128120

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.66    0.00    0.47    0.03    0.00   98.84

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             317.00       448.00     73048.00        448      73048
dm-0             34.00         0.00       272.00          0        272
dm-1            309.00       448.00     72776.00        448      72776

缩小范围

使用RHEL 5的Gen 8服务器和使用RHEL 5或6的Gen 7服务器不会显示此问题。此外,使用ext3作为文件系统而不是默认xfs的RHEL 6不会显示此问题。实际上,问题似乎出在XFS,gen8硬件和centos 6之间。RHEL6也显示了问题。

编辑29/04:我们在G8机器上添加了qlogic HBA。在光纤通道存储上使用XFS不会显示此问题。因此,它肯定在xfs / hpsa / p420i之间的交互中。

XFS文件

Rhel 8中较新的xfs似乎能够检测到底层的条带宽度,但只能在使用hpsa驱动程序的p420i控制器上,而不能在使用cciss的p410i控制器上检测到。

xfs_info输出:

[root@co6 ~]# xfs_info /mysql/bp/
meta-data=/dev/mapper/sysvm-mysqlVol isize=256    agcount=16, agsize=4915136 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=78642176, imaxpct=25
         =                       sunit=64     swidth=192 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=38400, version=2
         =                       sectsz=512   sunit=64 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

在上面标记为“确定”的所有设置中,sunit / swidth均为0。我们似乎无法通过mkfs或使用noalign mount选项来更改此设置。我们也不知道这是不是原因。

大页面

其他在rhel 6上遇到XFS问题的人说,禁用大页面,尤其是透明的大页面可能是有益的。我们都禁用了,问题并没有消失。

我们已经尝试并观察了许多事情,但以下任何一项都无济于事:

  • 使用numactl影响内存分配。我们注意到g7和g8的numa布局不同,未见效果
  • 较新的内核(最新的3.6版)似乎无法解决此问题。使用fedora 17都没有。
  • iostat不会报告写入事务增加十倍,而只是报告写入的字节数
  • 使用不同的I / O调度程序无效。
  • 挂载相关文件系统noatime / nobarrier / nopdiratime没有帮助
  • 更改/ proc / sys / vm / dirty_ratio无效
  • 在基于2640和2670 CPU的系统上都会发生这种情况
  • hpsa-3.2.0无法解决问题

显示您的XFS mkfs.xfsmount选项。EL6支持分区对齐。在EL6下,两种类型的Smart Array控制器都将使用HPSA,但EL5将使用CCISS。
ewwhite

mkfs选项:无。挂载行:/ mysql / bp上的/ dev / mapper / sysvm-mysqlVol类型xfs(rw,allocsize = 1m)。将完整的xfs_info输出添加到帖子中。
丹尼斯·考斯玛克

那么解决方案是什么?
ewwhite 2014年

Answers:


7

XFS和EL6陷入了丑陋的状态...由于一些上游功能/更改已渗入Red Hat内核,我暂时放弃了EL6系统上的XFS ...

这是一个惊喜,并引起了一些恐慌:为什么我的XFS文件系统突然占用更多空间并充满稀疏文件?

自2012年11月以来,内核中发布的XFS版本比2.6.32-279.11.1.el6Red Hat Bugzilla 860787产生的令人讨厌的负载和性能问题更新。从那时起,我的性能一直都无法预测,并且运行队列比平均水平还高。

对于新系统,我正在使用ZFS或ext4。对于较旧的系统,我将其冻结在2.6.32-279.11.1.el6

尝试使用以下方法回滚到该版本:

yum install kernel-2.6.32-279.11.1.el6.x86_64

除上述内容外,由于您使用的RAID控制器类型不同,典型的优化顺序如下:

挂载XFS文件系统noatime。您还应该通过以下方式利用Tuned框架

tuned-adm profile enterprise-storage

将readahead,nobarrier和I / O电梯设置为良好的基准。


编辑:

关于XFS文件系统优化,有很多建议。在过去的十年中,我只使用了文件系统,并且在操作系统发生根本性变化时不得不偶尔调整参数。我没有遇到像您这样的性能急剧下降的情况,但是我也不使用LVM。

考虑到不同的内核生成,内置的默认值,调度程序,程序包等,我认为期望EL5与EL6行为相同不合理的

此时该怎么办?

  • 我将检查mkfs.xfs参数以及如何构建系统。您是在安装过程中使用XFS分区还是事后创建分区?我在安装主要操作系统之后进行XFS文件系统的创建,因为在给定的参数上我具有更大的灵活性。

  • 我的mkfs.xfs创建参数很简单:mkfs.xfs -f -d agcount=32 -l size=128m,version=2 /dev/sdb1例如。

  • 我的挂载选项是:noatime,logbufs=8,logbsize=256k,nobarrier我将允许XFS动态预分配本机运行,而不像您在此处那样对其进行约束。我的表现因此而提高。

  • 所以我不使用LVM。特别是在硬件RAID之上... 特别是在HP Smart Array控制器上,那里有一些设备固有的类似LVM的功能。但是,使用LVM,您无权fdisk创建原始分区。从EL5更改为EL6的一件事是安装程序中的分区对齐,并更改为fdisk以在圆柱边界上设置起始扇区。

  • 确保以当前版本级别运行HP Smart Array控制器和驱动器。此时,将整个服务器更新为适用于ProLiant固件版本当前HP Service Pack是有意义的。这是可引导DVD,它将升级系统中所有检测到的组件。

  • 我会检查RAID控制器设置。粘贴的输出hpacucli ctrl all show config detail这是我的。您希望缓存比率偏向于写入与读取。75:25是常态。对于该应用程序,默认的条带大小为256K即可。

  • 如果没有LVM,我可能会尝试这样做。

  • 你的sysctl.conf参数是什么?


不幸的是,较早的内核显示出相同的行为。
丹尼斯·考斯玛克

不使用LVM进行测试。
ewwhite

1

我们遇到了类似的问题,发现这是由于XFS日志版本更改所致。第2版​​日志记录了与mkfs.xfs一起使用的条带宽度集。如果您执行大量fsync,则RAID卡将无法再伪造那些日志写入。您可以在没有任何宽度设置的情况下通过格式化分区来测试它(它与RAID 1 + 0没有任何区别)。您可以使用blktrace / seekwatcher进行验证,以查看是否涉及大量日志更新。


您的mkfs.xfs命令字符串是什么?
ewwhite 2014年

我一直想自己提供一个答案,因为我们最终确实找到了答案。您的答案是解决方案的一部分,但不是全部。
丹尼斯·考斯玛克

mkfs.xfs -f / your_dev
mjiang 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.