Den*_*ker 14 xfs hp hp-smart-array centos6 rhel6
在具有 6 个磁盘的 raid 1+0 之上的 LVM 之上使用 XFS 的 DL380p gen8 服务器上,与 RHEL 5 相比,相同的工作负载导致 RHEL 6 上的磁盘写入增加了十倍,从而使应用程序无法使用。
请注意,我不是在尽可能地优化 co6 系统,而是在理解为什么 co6 的行为如此不同,并解决这个问题。
我们有一个 MySQL 复制设置,使用 mysql 5.5。使用 RHEL 6 作为操作系统的 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
Run Code Online (Sandbox Code Playgroud)
在 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
Run Code Online (Sandbox Code Playgroud)
使用 RHEL 5 的第 8 代服务器和使用 RHEL 5 或 6 的第 7 代服务器不会出现此问题。此外,使用 ext3 作为文件系统而不是我们默认的 xfs 的 RHEL 6 没有显示问题。问题似乎确实在 XFS、gen8 硬件和 centos 6 之间。RHEL 6 也显示了这个问题。
29/04 编辑:我们在 G8 机器上添加了 qlogic HBA。在光纤通道存储上使用 XFS 不会出现问题。所以它肯定是在 xfs/hpsa/p420i 之间的交互中的某个地方。
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
Run Code Online (Sandbox Code Playgroud)
在上面标记为 OK 的所有设置中,sunit/swidth 都是 0。我们似乎无法改变这一点,无论是在 mkfs 中还是使用 noalign 挂载选项。我们也不知道这是否是原因。
其他在 rhel 6 上遇到 XFS 问题的人说禁用大页面,尤其是透明大页面可能是有益的。我们禁用了两者,问题并没有消失。
我们已经尝试并观察了很多事情,但以下都没有帮助:
XFS 和 EL6 陷入了一个丑陋的状态……我暂时放弃了 EL6 系统上的 XFS,因为一些上游特性/更改滑入了 Red Hat 内核……
这是一个惊喜并引起了一些恐慌:为什么我的 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
Run Code Online (Sandbox Code Playgroud)
除上述之外,由于您使用的 RAID 控制器类型,典型的优化顺序如下:
挂载您的 XFS 文件系统noatime。您还应该利用Tuned 框架:
tuned-adm profile enterprise-storage
Run Code Online (Sandbox Code Playgroud)
将预读、无障碍和 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 控制器和驱动器。此时,将整个服务器更新到当前 HP Service Pack for ProLiant 固件修订版是有意义的。这是一张可引导的 DVD,它将升级系统中所有检测到的组件。
我会检查 RAID 控制器设置。Pastebin 的输出hpacucli ctrl all show config detail。这是我的。您希望缓存比率偏向于写入与读取。75:25 是常态。默认条带大小 256K 应该适合此应用程序。
我可能会在没有 LVM 的情况下尝试这个。
你的sysctl.conf参数是什么?
| 归档时间: |
|
| 查看次数: |
4114 次 |
| 最近记录: |