6 개의 디스크가있는 RAID 1 + 0 위에 LVM 위에 XFS를 사용하는 DL380p gen8 서버에서 동일한 워크로드로 인해 RHEL 5에 비해 RHEL 6의 디스크 쓰기가 10 배 증가하여 응용 프로그램을 사용할 수 없습니다.
나는 co6 시스템을 가능한 많이 최적화하는 것이 아니라 co6가 왜 그렇게 다른 행동을하는지 이해하고 해결하는 것에 주목하고 있습니다.
vmstat / iostat
mysql 5.5를 사용하는 MySQL 복제 설정이 있습니다. OS로 RHEL 6을 사용하는 gen8 서버의 MySQL 슬레이브는 성능이 좋지 않습니다. vmstat 및 iostat로 검사하면 이러한 서버가 페이지 아웃 활동의 10 배, 디스크 하위 시스템에 대한 쓰기 양의 10 배를 수행합니다. blktrace는 이러한 쓰기가 mysql이 아니라 커널에 의해 시작되었음을 보여줍니다.
센 토스 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에서는 페이지 아웃 및 디스크 쓰기가 10 배 증가했습니다.
[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 서버에는이 문제가 표시되지 않습니다. 또한 기본 xfs 대신 파일 시스템으로 ext3을 사용하는 RHEL 6에는 문제가 없습니다. 문제는 실제로 XFS, gen8 하드웨어 및 centos 6 사이에있는 것 같습니다. RHEL 6도 문제를 보여줍니다.
29/04 편집 : 우리는 qlogic HBA를 G8 머신에 추가했습니다. 파이버 채널 스토리지에서 XFS를 사용하면 문제가 표시되지 않습니다. 따라서 xfs / hpsa / p420i 사이의 상호 작용에 있습니다.
XFS
rhel 8의 최신 xfs는 기본 스트라이프 너비를 감지 할 수 있지만 cciss를 사용하는 p410i 컨트롤러가 아닌 hpsa 드라이버를 사용하는 p420i 컨트롤러에서만 감지 할 수 있습니다.
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 문제가있는 다른 사람들은 hugepages, 특히 투명한 hugepages를 비활성화하면 도움이 될 수 있다고 말합니다. 우리는 둘 다 비활성화했지만 문제는 사라지지 않았습니다.
우리는 이미 많은 것을 시도하고 관찰했지만 다음 중 어느 것도 도움이되지 않았습니다.
- numactl을 사용하여 메모리 할당에 영향을줍니다. 우리는 g7과 g8이 다른 numa 레이아웃을 가지고 있음을 알았습니다. 효과는 보이지 않았습니다.
- 최신 커널 (3.6과 같은)은이 문제를 해결하지 못한 것 같습니다. 페도라 17도 사용하지 않았습니다.
- iostat는 쓰기 트랜잭션이 10 배 증가한 것으로보고하지 않고 기록 된 바이트 수만보고합니다
- 다른 I / O 스케줄러를 사용해도 효과가 없습니다.
- 관련 파일 시스템 noatime / nobarrier / nopdiratime을 마운트해도 도움이되지 않았습니다.
- / proc / sys / vm / dirty_ratio를 변경해도 아무런 영향이 없습니다.
- 이것은 2640 및 2670 CPU 기반 시스템에서 발생합니다.
- hpsa-3.2.0으로 문제가 해결되지 않습니다
mkfs.xfs
및mount
옵션을 표시하십시오 . EL6은 파티션 정렬을 인식합니다. HP6은 EL6에서 스마트 어레이 컨트롤러 유형 모두에 사용되지만 EL5는 CCISS를 사용합니다.