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 -h과 fdisk -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.