[server] RAID 10에서 SSD (Intel 530) 읽기 / 쓰기 속도가 매우 느림

설명:

우리는 서버가 있습니다 :

  • 모델 : HP ProLiant DL160 G6
  • 4 x 240GB SSD (RAID-10)
  • 72GB DDR3 RAM
  • 2 x L5639
  • HP P410 RAID 컨트롤러 (256MB, V6.40, Rom 버전 : 8.40.41.00)

SSD 드라이브는 4 개의 새로운 2.5 “Intel 530이며 읽기 속도는 540MB / s이고 쓰기 속도는 490MB / s입니다.

  • CentOS 6
  • 파일 시스템은 ext4

그러나 이것은 RAID 10의 읽기 속도에 대한 테스트 결과입니다.

hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads:  824 MB in  3.00 seconds = 274.50 MB/sec
[root@localhost ~]# hdparm -t /dev/mapper/vg_localhost-lv_root

/dev/mapper/vg_localhost-lv_root:
 Timing buffered disk reads:  800 MB in  3.01 seconds = 266.19 MB/sec

그리고 이것은 쓰기 속도입니다.

dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 4.91077 s, 109 MB/s

우리는 RAID 10으로 1GB의 읽기 속도를 원했지만 270MB는 단일 디스크의 속도조차도 아닙니다!

질문 :

  1. 왜 그렇게 느려?
  2. RAID 컨트롤러 때문입니까?

업데이트 1-동일한 읽기 / 쓰기 속도 :

답변에서 언급 한 바와 같이 일부 설정을 변경하면 아래 결과가 나타납니다.

(읽기 속도로 400MB 대신 4GB를 표시하는 이유를 아는 사람이 있습니까?)

편집 : 명령이 잘못 된 것처럼 보이며이 램 양에 -s144g를 사용해야 했으므로 4GB가 표시됩니다 (ewwhite의 의견에서 제안한 것처럼)

[root@192 ~]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.408 $
                Compiled for 64 bit mode.
                Build: linux

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  135331.80 KB/sec
        Children see throughput for  1 rewriters        =  124085.66 KB/sec
        Children see throughput for  1 readers          = 4732046.50 KB/sec
        Children see throughput for 1 re-readers        = 4741508.00 KB/sec
        Children see throughput for 1 random readers    = 4590884.50 KB/sec
        Children see throughput for 1 random writers    =  124082.41 KB/sec

그러나 이전 hdparm -t /dev/sda명령은 여전히 ​​표시합니다 :

타이밍 버퍼 디스크 읽기 : 3.00 초에 810MB = 269.85MB / 초

업데이트 2 (tunes-utils pack)-읽기 속도가 600MB / s입니다.

마지막으로, RAID 컨트롤러에서 캐시를 비활성화하고 운 좋게도 다른 작업을 수행했지만 서버를 다시로드하고 OS를 다시 설치했기 때문에 ewwhite의 답변에서 제안한대로 “tuned-utils”를 설치하지 않았습니다 (감사합니다) 당신이 제안한이 멋진 패키지에 대한 ewwhite)

프로파일을 설치 tuned-utils하고 선택한 후 enterprise-storage읽기 속도는 ~ 600MB / s +이지만 쓰기 속도는 여전히 매우 느립니다 (~ 160MB) (:

iozone -t1 -i0 -i1 -i2 -r1m -s144g명령 결과는 다음과 같습니다 .

    Children see throughput for  1 initial writers  =  165331.80 KB/sec
    Children see throughput for  1 rewriters        =  115734.91 KB/sec
    Children see throughput for  1 readers          =  719323.81 KB/sec
    Children see throughput for 1 re-readers        =  732008.56 KB/sec
    Children see throughput for 1 random readers    =  549284.69 KB/sec
    Children see throughput for 1 random writers    =  116389.76 KB/sec

심지어와 hdparm -t /dev/sda명령을 우리는 가지고 :

타이밍 버퍼 디스크 읽기 : 3.00 초에 1802MB = 600.37MB / 초

매우 느린 쓰기 속도에 대한 제안 사항이 있습니까?

업데이트 3-의견으로 요청 된 일부 정보 :

쓰기 속도는 여전히 매우 낮습니다 (단일 디스크의 1/3이 아닌 ~ 150MB / s)

의 출력 df -hfdisk -l:

[root@192 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       441G  3.2G  415G   1% /
tmpfs            36G     0   36G   0% /dev/shm


[root@192 ~]# fdisk -l
Disk /dev/sda: 480.0 GB, 480047620096 bytes
255 heads, 63 sectors/track, 58362 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00040c3c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       58363   468795392   83  Linux



답변

다른 답변은 여기에 있지만, 특정 문제는 플랫폼 제한 및 OS 구성으로 인한 것입니다.

  • HP Smart Array P410 RAID 컨트롤러에서 소비자 SATA SSD를 사용하면 처리량이 제한됩니다 . SATA 디스크는 이러한 컨트롤러에서 6.0Gbps (6G)가 아닌 3.0Gbps (3G)로 실행됩니다. 이것이 인텔 SSD의 읽기 속도에 영향을 미치는 장벽입니다. 드라이브 당 300MB / s 이하

  • Smart Array P410 컨트롤러에는 SSD와 함께 사용할 때 특정 요구 사항과 모범 사례 가 있습니다. 즉, 컨트롤러는 50,000 IOPS가 가능하고 SSD 볼륨에 대해 어레이 가속기를 비활성화하고 성능이 ~ 6 드라이브에서 최고가됩니다.

  • 디스크 성능이 항상 순차적 읽기 / 쓰기 속도에 관한 것은 아닙니다. iozone 또는 bonnie ++ 와 같은 적절한 도구를 사용하여 벤치마킹을 시도하십시오. 여전히 여러 드라이브의 임의 I / O 이점이 있습니다.

  • 운영 체제 레벨에서 tuned-utils 패키지를 설치하고 enterprise-performance파일 시스템에서 쓰기 장벽을 제거하고 설정에 적합한 I / O 엘리베이터를 설정하도록 프로파일을 설정하십시오. 이것도 다른 질문에 포함되어 있습니다.

  • LVM을 사용중인 것 같습니다. 그것은 또한 영향을 줄 수 있습니다 …

다음 은 동일한 HP Smart Array P410 RAID 컨트롤러 에서 4 개의 소비자 6G SATA SSD (3G 속도로 다운 시프트)로 실행되는 G7 ProLiant에 대한 iozone 보고서입니다 .

~ 470MB / s 쓰기 및 650MB / s + 읽기가 표시되어야합니다.

[root@mdmarra /data/tmp]# iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Iozone: Performance Test of File I/O
                Version $Revision: 3.394 $
                Compiled for 64 bit mode.
                Build: linux

        Record Size 1024 KB
        File size set to 58720256 KB
        Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s56g
        Output is in Kbytes/sec
        Each process writes a 58720256 Kbyte file in 1024 Kbyte records

        Children see throughput for  1 initial writers  =  478209.81 KB/sec
        Children see throughput for  1 rewriters        =  478200.84 KB/sec
        Children see throughput for  1 readers          =  677397.69 KB/sec
        Children see throughput for 1 re-readers        =  679523.88 KB/sec
        Children see throughput for 1 random readers    =  437344.78 KB/sec
        Children see throughput for 1 random writers    =  486254.41 KB/sec


답변

오, 어디에서 시작해야합니까?

너무 많은 관련이 있으며 모든 것을 잘 이해해야합니다. RAID 컨트롤러에 대해 많은 디스크를 던져도 원하는 결과를 얻지 못합니다.

이것은 쉽게 대답 할 수 없습니다. 그러나 최소한 여기에 살펴 봐야 할 것들이 있습니다.

  • 컨트롤러에 처리량이 필요한가? (-> 데이터 시트)
  • 컨트롤러는 호스트에 충분한 대역폭을 가지고 있습니까 (x8이기 때문에 v1.0에서도 가능)
  • 시스템 칩셋의 처리량이 충분합니까 (CPU-Controller)? (알 수 없는)
  • Controller에 어떤 쓰기 전략을 사용하도록 지시 했습니까? ( 이것은 당신을 물린 가장 가능성이 높은 것입니다 )
  • 모든 것이 정렬 되었습니까 (파티션 시작, LV, PV)?
  • 블록 크기가 조화됩니까? (RAID 스트라이프 크기, 블록 크기, FS 블록 등)
  • 파일 시스템이 RAID 설정에 최적화되어 있습니까? (레벨 및 블록 크기)

전체 RAID (FS 무시)에 대한 처리량이 단일 디스크보다 상당히 낮기 때문에 쓰기 전략을 잘못 설정했을 수 있습니다. 컨트롤러는 아마도 모든 디스크가 쓰기를 확인하기를 기다리고있을 것입니다 (컨트롤러 배터리의 RAM이 백업되어 있지 않은 한, 이것은 가장 관심이있을 수 있습니다).


답변