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


11

설명:

우리는 서버가 있습니다 :

  • 모델 : 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

이 테스트에서는 서버에 설치된 RAM 크기의 두 배를 지정해야합니다.
ewwhite

Smart Array P410 컨트롤러의 펌웨어 버전을 알려주시겠습니까?
ewwhite

@ewwhite 귀하의 의견에 감사드립니다, 펌웨어 버전은 p410 (256MB, V6.40)이고 rom 버전은 8.40.41.00이며 내 iozone 명령이 잘못 되었습니까? 그렇다면 테스트 할 올바른 명령을 알려주십시오. 내가 시도하는 모든 것은 GB 단위로 읽기 속도를 얻습니다
Ara

여기서 뭔가 잘못되었습니다. ~ 122MB / s 쓰기 만 받고 있습니다. 표시되는 4GB / s 수치는 캐시에서의 작업이므로 명령 문자열은 다음과 같아야 iozone -t1 -i0 -i1 -i2 -r1m -s144g합니다. :(
ewwhite

@ewwhite 대단히 감사합니다. 읽기 속도가 매우 우수합니다 (내 질문에 업데이트 2로 자세히 설명되어 있음). 쓰기 속도가 매우 실망 스럽습니다. 제안이 있습니까?
Ara

답변:


16

다른 답변은 여기에 있지만, 특정 문제는 플랫폼 제한 및 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

대단히 감사합니다, 모델 "DL160 G6는"입니다, 네, 심지어 여기에 6백메가바이트에 만족하실 것입니다 :( 백플레인 관련이 있지만, 270메가바이트 당신은 내가 어떻게해야 생각, 정말 느리다, 소프트웨어 RAID 도움을합니까?
아라를

2
DL160 G6을 사용하면 RAID 컨트롤러에서 드라이브 백플레인으로가는 두 개의 케이블이 있어야합니다. 8 개의 드라이브 슬롯. 여기서 문제는 드라이브 처리량, 테스트 방법 및 서버 설정입니다. 내 답변에 나열된 다른 제안을 시도하십시오.
ewwhite

SATA에서 3G 만 수행하는 P410 및 특정 모범 사례에 대한 흥미로운 내용입니다. 모드 업. (LVM은 성능에 부정적인 영향을 미쳐서는 안됩니다 . unix.stackexchange.com/questions/7122/… )
Roman

1
@Ara ProLiant 용 6G SATA 컨트롤러가 없습니다. 그게 요점입니다. SAS SSD 를 사용하지 않으면 SSD는이 플랫폼에서 3G 속도로만 실행됩니다 .
ewwhite

1
@Ara Software RAID는 SAS HBA (예 : LSI 9211-8i)와 같은 다른 컨트롤러에 연결해야합니다. 디스크의 전체 대역폭을 볼 수는 있지만 SSD 성능의 다른 측면은 순수한 것 이상입니다. 순차적 읽기 / 쓰기 대역폭.
ewwhite

12

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

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

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

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

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


이것은 내가 생각했던 것보다 정말로 어렵습니다. Raid Controller 램을 512MB로 업그레이드하는 것만 큼 간단하다고 생각했습니다! , 로마에게 감사합니다. 방금 이유를 찾기 위해 당신이 말한 내용 중 일부를 확인하겠습니다
Ara

위의 대부분은 엣지 케이스에 대한 유효한 문제 해결 전략이지만 원래 포스터 구성의 세부 사항에는 적용되지 않습니다. 여기에 컨트롤러에는 필요한 처리량과 대역폭이 있으며 CPU는 정상이며 RAID 컨트롤러는 기본적으로 25:75 R / W 캐시 비율 (SSD 사용을 위해 완전히 비활성화해야 함), CentOS6은 파티션을 올바르게 정렬하고 얻을 수있는 너무 많은 추상화가 있습니다. 블록 크기는 "조화 된"입니다. 현재 직면하고있는 3 가지 문제는 6G 디스크가 3G 속도로 조절되고 파일 시스템 쓰기 장벽이 활성화되어 있고 I / O 엘리베이터가 기본 CFQ라는 것입니다.
ewwhite

1
불행히도 서버 모델은 대답 할 때 언급되지 않았습니다. 조절에 대해 알아두면 좋습니다. 나는이 특정 "벤치 마크"에서 장벽과 CFQ가 많이 들지 않았지만 그럼에도 불구하고 귀중한 정보가 필요하다고 생각합니다.
로마

@Roman 죄송합니다. 이전에 모델을 언급하지 않았습니다. 정말로 도움을 주셔서 감사합니다. 귀하와 ewwhite의 가이드 모두 500-600MB에 도달하려고합니다.이 3G 제한으로 도달 할 수있는 최고 속도 인 것 같습니다
Ara

1
전혀 문제 없습니다. SSD와 함께 P410과 관련이 있으므로 ewwhite의 답변에있는 링크를 따라 가십시오. 또한 백플레인에서 컨트롤러로 두 개의 연결을 통해 네 개의 디스크를 균등하게 분배하십시오.
로마
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.