XFS 파티션에서 HP DL380p Gen8 (p420i 컨트롤러) I / O 홀수


14

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으로 문제가 해결되지 않습니다

XFS mkfs.xfsmount옵션을 표시하십시오 . EL6은 파티션 정렬을 인식합니다. HP6은 EL6에서 스마트 어레이 컨트롤러 유형 모두에 사용되지만 EL5는 CCISS를 사용합니다.
ewwhite

mkfs 옵션 : 없음 마운트 라인 : / mysql / bp 유형 xfs의 / dev / mapper / sysvm-mysqlVol (rw, allocsize = 1m). 게시물에 전체 xfs_info 출력을 추가합니다.
Dennis Kaarsemaker

그래서 해결책은 무엇입니까?
ewwhite

답변:


7

XFS와 EL6이 추악한 상태에 빠졌습니다 ... 여러 가지 업스트림 기능 / 변경 사항이 Red Hat 커널로 미끄러 져 들어가기 때문에 당분간 EL6 시스템에서 XFS를 포기했습니다 ...

이것은 놀라운 일이었고 일부 공황을 일으켰습니다. 왜 XFS 파일 시스템이 갑자기 더 많은 공간을 사용하고 스파 스 파일로 가득합니까?

2012 년 11 월 이후 XFS 버전 2.6.32-279.11.1.el6은 Red 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-adm profile enterprise-storage

Readahead, Nobarrier 및 I / O 엘리베이터를 적절한 기준으로 설정합니다.


편집하다:

XFS 파일 시스템 최적화와 관련된 많은 권장 사항이 있습니다. 필자는 지난 10 년 동안 파일 시스템을 독점적으로 사용했으며 운영 체제에 근본적인 변화가있을 때 매개 변수를 조정해야했습니다. 귀하와 같은 성능 저하가 발생하지 않았지만 LVM도 사용하지 않습니다.

다른 커널 생성, 컴파일 된 기본값, 스케줄러, 패키지 등을 고려할 때 EL5가 EL6과 동일한 방식으로 작동한다고 기대하는 것은 합리적이지 않다고 생각합니다 .

무엇을 것 나는 이 시점에서 할 ??

  • mkfs.xfs 파라미터와 시스템 구축 방법을 살펴 보겠습니다. 설치 중에 XFS 파티션을 사용하거나 사실 후에 파티션을 작성합니까? 주어진 매개 변수가 더 유연하기 때문에 기본 OS 설치 후에 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 서비스 팩 ProLiant 펌웨어 개정판 으로 업데이트하는 것이 좋습니다 . 이것은 부팅 가능한 DVD로 시스템에서 감지 된 모든 구성 요소를 업그레이드합니다.

  • RAID 컨트롤러 설정을 확인했습니다. 의 출력을 붙여 넣습니다 hpacucli ctrl all show config detail. 내 꺼야 캐시 비율을 쓰기 대 읽기로 편향시키기를 원합니다. 75:25가 표준입니다. 이 응용 프로그램 에는 기본 스트립 크기 256K가 적합해야합니다.

  • 나는 LVM없이 이것을 시도 할 것입니다.

  • 당신의 sysctl.conf매개 변수 는 무엇입니까 ?


불행히도, 이전 커널은 같은 행동을 보여줍니다.
Dennis Kaarsemaker

LVM없이 테스트하십시오.
ewwhite 2015 년

1

비슷한 문제가 있었고 XFS 로그 버전 변경 때문인 것으로 나타났습니다. 버전 2 로그는 mkfs.xfs와 함께 사용되는 스트라이프 너비 세트를 따릅니다. 많은 fsync를 수행하면 레이드 카드가 더 이상 해당 로그 쓰기를 위조 할 수 없습니다. 너비 설정없이 파티션을 포맷하여 테스트 할 수 있습니다 (RAID 1 + 0과 아무런 차이가 없습니다). blktrace / seekwatcher를 사용하여 로그 업데이트가 많은지 확인할 수 있습니다.


당신의 mkfs.xfs명령 문자열은 무엇입니까?
ewwhite 2016 년

우리가 결국 찾은대로 스스로 답을 제공하려고했습니다. 귀하의 답변은 솔루션의 일부이지만 전부는 아닙니다.
Dennis Kaarsemaker 2009 년

mkfs.xfs -f / your_dev
mjiang
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.