HP DL380 G7 + 스마트 어레이 P410i + sysbench-> RAID 10 성능 저하 : 박스 1 : 베이

IO 활용도가 낮은 시스템을 실행 중입니다.

  1. HP DL380G7 (24GB RAM)
  2. 512MB Battary Backed Write Cache를 갖춘 Smart Array p410i
  3. RAID10에 6 개의 SAS 10k rpm 146gb 드라이브
  4. 데비안 스퀴즈 리눅스, ext4 + LVM, hpacucli 설치

iostat (cciss / c0d1 = raid10 어레이, dm-7 = 60G lvm 파티션 테스트) :

장치 : rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz await svctm % util
cciss / c0d0 0,00 101,20 0,00 6,20 0,00 0,42 138,58 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 395,20 3,20 130,20 0,18 2,05 34,29 0,04 0,26 0,16 2,08
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 3,20 391,00 0,18 1,53 8,87 0,04 0,11 0,05 1,84
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 106,80 0,00 0,42 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,60 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 2,80 0,00 0,01 8,00 0,00 0,00 0,00 0,00
dm-1 0,00 0,00 0,00 132,00 0,00 0,52 8,00 0,00 0,02 0,01 0,16
dm-7 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

hpacucli “ctrl all show config”

슬롯 0의 스마트 어레이 P410i (내장) (sn : 5001438011FF14E0)

   배열 A (SAS, 사용되지 않은 공간 : 0MB)


      논리 드라이브 1 (136.7GB, RAID 1, 확인)

      physicaldrive 1I : 1 : 1 (포트 1I : 박스 1 : 베이 1, SAS, 146GB, 확인)
      물리적 드라이브 1I : 1 : 2 (포트 1I : 박스 1 : 베이 2, SAS, 146GB, 확인)

   배열 B (SAS, 사용되지 않은 공간 : 0MB)


      논리 드라이브 2 (410.1GB, RAID 1 + 0, 확인)

      물리적 드라이브 1I : 1 : 3 (포트 1I : 박스 1 : 베이 3, SAS, 146GB, 확인)
      물리적 드라이브 1I : 1 : 4 (포트 1I : 박스 1 : 베이 4, SAS, 146GB, 확인)
      physicaldrive 2I : 1 : 5 (포트 2I : 박스 1 : 베이 5, SAS, 146GB, 확인)
      physicaldrive 2I : 1 : 6 (포트 2I : 박스 1 : 베이 6, SAS, 146GB, 확인)
      physicaldrive 2I : 1 : 7 (포트 2I : 박스 1 : 베이 7, SAS, 146GB, 확인)
      physicaldrive 2I : 1 : 8 (포트 2I : 박스 1 : 베이 8, SAS, 146GB, 확인)

   SEP (공급 업체 ID PMCSIERA, 모델 SRC 8x6G) 250 (WWID : 5001438011FF14EF)

hpacucli “ctrl 모든 표시 상태”

슬롯 0의 스마트 어레이 P410i (내장)
   컨트롤러 상태 : OK
   캐시 상태 : OK
   배터리 / 커패시터 상태 : 정상

Sysbench 명령

sysbench --init-rng = on --test = fileio --num-threads = 16 --file-num = 128 --file-block-size = 4K --file-total-size = 54G-파일 테스트 -mode = rndrd --file-fsync-freq = 0 --file-fsync-end = off 실행 --max-requests = 30000

Sysbench 결과

sysbench 0.4.12 : 다중 스레드 시스템 평가 벤치 마크

다음 옵션으로 테스트를 실행하십시오.
스레드 수 : 16
타이머에서 난수 생성기를 초기화합니다.


추가 파일 열기 플래그 : 0
128 개 파일, 각 432Mb
총 파일 크기 54Gb
블록 크기 4Kb
임의 IO에 대한 임의 요청 수 : 30000
랜덤 랜덤 IO 테스트의 읽기 / 쓰기 비율 : 1.50
동기식 I / O 모드 사용
랜덤 읽기 테스트 수행
스레드가 시작되었습니다!
끝난.

수행 된 작업 : 30000 읽기, 0 쓰기, 0 기타 = 30000 총계
읽기 117.19Mb 기록됨 0b 전송 된 총 117.19Mb (935.71Kb / sec)
  233.93 요청 / 초 실행

테스트 실행 요약 :
    총 시간 : 128.2455s
    총 이벤트 수 : 30000
    이벤트 실행에 걸린 총 시간 : 2051.5525
    요청 당 통계 :
         최소 : 0.00ms
         평균 : 68.39ms
         최대 : 2010.15ms
         약. 95 백분위 수 : 660.40ms

스레드 공정성 :
    이벤트 (avg / stddev) : 1875.0000 / 111.75
    실행 시간 (avg / stddev) : 128.2220 / 0.02

테스트 중 iostat

평균 CPU : % user % nice % system % iowait % steal % idle
           0,00 0,01 0,10 31,03 0,00 68,86

장치 : rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz await svctm % util
cciss / c0d0 0,00 0,10 0,00 0,60 0,00 0,00 9,33 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 46,30 208,50 1,30 0,82 0,10 8,99 29,03 119,75 4,77 100,00
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 0,00 51,60 0,00 0,20 8,00 49,72 877,26 19,38 100,00
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 0,70 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-7 0,00 0,00 208,50 0,00 0,82 0,00 8,04 25,00 75,29 4,80 100,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

보니 ++ v1.96

cmd : / usr / sbin / bonnie ++ -c 16 -n 0

한 번에 바이트 쓰기 ... 완료
지능적으로 글쓰기 ... 완료
다시 쓰기 ... 완료
한 번에 바이트를 읽는 중 ... 완료
지능적으로 읽기 ... 완료
시작해 ... 완료 ... 완료 ... 완료 ... 완료 ... 완료 ... 완료 ...
버전 1.96 ------ 순차 출력 -------순차 입력--랜덤-
동시성 16 -Chr 당--블록--다시 쓰기 -Chr 당 ---- 블록--찾기-
기계 크기 K / 초 % CP K / 초 % CP K / 초 % CP K / 초 % CP K / 초 % CP / 초 % CP
seo-db 48304M 819 99 188274 17 98395 8 2652 78 201280 8 265.2 1
지연 시간 14899us 726ms 15194ms 100ms 122ms 665ms

1.96,1.96, seo-db, 16,1337541936,48304M ,, 819,99,188274,17,98395,8,2652,78,201280,8,265.2,1 ,,,,,,,,,,,,,,, ,,,,, 14899us, 726ms, 15194ms, 100ms, 122ms, 665ms ,,,,,,

질문

따라서 sysbench는 초당 234 개의 임의 읽기를 표시했습니다.
400 이상일 것으로 예상됩니다.
병목 현상은 무엇입니까? LVM?
mdadm raid1 + 2x 7200rpm 드라이브가있는 다른 시스템은 초당 200 개 이상의 임의 읽기를 표시합니다.

도움을 주셔서 감사합니다!



답변

하드웨어 사양에 따라 시스템 성능이 저하됩니다. sysbenchCentOS 5/6을 실행하는 유휴 HP ProLiant DL380 G6 / G7 서버에 유틸리티를 로드하여 성능을 확인했습니다. 이들은 LVM 대신 일반 고정 파티션입니다. (HP Smart Array 컨트롤러가 제공하는 유연성으로 인해 일반적으로 LVM을 사용하지 않습니다)

DL380 G6에는 512MB의 배터리 백업 캐시가있는 Smart Array P410 컨트롤러에 6 디스크 RAID 1 + 0 어레이가 있습니다. DL380 G7에는 2 디스크 엔터프라이즈 SLC SSD 어레이가 있습니다. 파일 시스템은 XFS 입니다. 나는 sysbench 명령 행을 사용했다 :

sysbench --init-rng=on --test=fileio --num-threads=16 --file-num=128 --file-block-size=4K --file-total-size=54G --file-test-mode=rndrd --file-fsync-freq=0 --file-fsync-end=off --max-requests=30000 run

내 결과는 6 디스크에서 초당 1595 건의 랜덤 읽기 였습니다.

SSD에서 결과는 초당 39047 개의 임의 읽기 입니다. 전체 결과는이 게시물의 끝에 있습니다 …

  • 당신의 설정에 관해서, 나에게 가장 먼저 나오는 것은 테스트 파티션의 크기입니다. 거의 54GB의 테스트 파일로 60GB 파티션을 채우고 있습니다. ext4에 90 + %의 성능 문제가 있는지 확실하지 않지만, 수정하고 다시 테스트하는 것이 가장 빠릅니다. (또는 더 작은 테스트 데이터 세트 사용)

  • LVM을 사용하더라도이 컨트롤러 / 디스크 설정에는 몇 가지 튜닝 옵션이 있습니다. 미리 읽기를 확인하고 I / O 스케줄러 설정을 기본 cfq 에서 최종 기한 또는 noop 로 변경하면 도움이됩니다. Linux-실제 하드웨어 RAID 컨트롤러 튜닝 (scsi 및 cciss) 에서 질문 및 답변을 참조하십시오.

  • RAID 컨트롤러 캐시 비율은 얼마입니까? 나는 보통 75 % / 25 % 쓰기 / 읽기 균형을 사용합니다. 이것은 빠른 테스트 여야합니다. 6 디스크 어레이가 18 초 안에 완료되었습니다. 당신은 2 분 이상 걸렸습니다.

  • 문제의 파티션 / 배열에서 보니 ++ 또는 iozone 테스트 를 실행할 수 있습니까 ? 시스템에 다른 병목 현상이 있는지 확인하면 도움이됩니다. 나는 sysbench에 익숙하지 않았지만 이러한 다른 도구는 시스템 기능에 대한 더 나은 개요를 제공한다고 생각합니다.

  • 파일 시스템 마운트 옵션은 약간의 차이를 만들 수 있지만 문제는 그보다 깊을 수 있다고 생각합니다 …

hpacucli 출력 …

Smart Array P410i in Slot 0 (Embedded)    (sn: 50123456789ABCDE)

   array A (SAS, Unused Space: 0 MB)

      logicaldrive 1 (838.1 GB, RAID 1+0, OK)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)

   SEP (Vendor ID PMCSIERA, Model  SRC 8x6G) 250 (WWID: 50123456789ABCED)

sysbench DL380 G6 6 디스크 결과 …

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.

Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30001 Read, 0 Write, 0 Other = 30001 Total
Read 117.19Mb  Written 0b  Total transferred 117.19Mb  (6.2292Mb/sec)
 1594.67 Requests/sec executed

Test execution summary:
    total time:                          18.8133s
    total number of events:              30001
    total time taken by event execution: 300.7545
    per-request statistics:
         min:                                  0.00ms
         avg:                                 10.02ms
         max:                                277.41ms
         approx.  95 percentile:              25.58ms

Threads fairness:
    events (avg/stddev):           1875.0625/41.46
    execution time (avg/stddev):   18.7972/0.01

sysbench DL380 G7 SSD 결과 …

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.


Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30038 Read, 0 Write, 0 Other = 30038 Total
Read 117.34Mb  Written 0b  Total transferred 117.34Mb  (152.53Mb/sec)
39046.89 Requests/sec executed

Test execution summary:
    total time:                          0.7693s
    total number of events:              30038
    total time taken by event execution: 12.2631
    per-request statistics:
         min:                                  0.00ms
         avg:                                  0.41ms
         max:                                  1.89ms
         approx.  95 percentile:               0.57ms

Threads fairness:
    events (avg/stddev):           1877.3750/15.59
    execution time (avg/stddev):   0.7664/0.00