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


8

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 개 이상의 임의 읽기를 표시합니다.

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


스트라이프 크기는 얼마입니까? iostat는 sysbench가 하나의 물리적 드라이브에서만 작동하는 것처럼 보입니다.
Dmitri Chubarov

hpacucli는 스트립 크기가 256k라고 말합니다. iostat의 DM-x 장치는 물리적 드라이브가 아니라 lvm 파티션입니다. DM-7은 60GB lvm 파티션이며 sysbench를 실행했습니다.
Oleg Golovanov

이 특정 sysbench명령 줄로 정확히 무엇을 테스트하고 있습니까? 실제 사용 시나리오를 시뮬레이션하고 있습니까?
ewwhite

내부적으로 4kb 블록을 사용하는 PostgreSql 데이터베이스를 시뮬레이션하고 있습니다. 내 응용 프로그램은 임의의 많은 / 읽고 큰 데이터 파일에 기록합니다 (응용 프로그램 테스트시 정지)
올렉 골로 베 노브

답변:


10

하드웨어 사양에 따라 시스템 성능이 저하됩니다. 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

자세한 답변 감사합니다! >> >> 일반적으로 LVM을 사용하지 않습니다. 특히 HP RAID 컨트롤러가 제공하는 유연성에는 어떤 종류의 유연성이 있습니까? >> RAID 컨트롤러 캐시 비율은 무엇입니까? 75/25, 기본값) >> 문제가 그보다 깊다고 생각합니다 ... yu! 내 주요 게시물 끝에 bonnie ++ v1.96 결과를 추가했습니다. 결과가 그렇게 좋지 않은 것 같습니다. (처음에는 LVM에서 벗어나서 다시 테스트를 시도합니다. 도움이되지 않는 경우-컨트롤러에 문제가 있다고 생각합니다.
Oleg Golovanov

bonnie++명령 줄 을 보여줄 수 있습니까 ?
ewwhite

미안 내 잘못이야. 명령 행 : / usr / sbin / bonnie ++ -c 16 -n 0
Oleg Golovanov

3
스케줄러를 cfq에서 noop로 변경했으며 벤치 마크 결과가 크게 증가했습니다! )) 나를 위해 지금 sysbench 쇼 1500 + 랜덤 초 / ... 큰 큰 감사합니다 :) 읽고
올렉 골로 베 노브

1
시도해보십시오 deadline... DB로드시,보다 나은 성능을 noop발휘할 수 있으며을 /sys/block/cciss1/queue/iosched/사용하는 경우 추가 튜너 블 이 있습니다 deadline. 미세 조정에 대한 자세한 내용은이 게시물참조하십시오 . 그렇게하면 초당 2600 건의 임의 읽기를 테스트 할 수있었습니다.
ewwhite
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.