분산 파일 시스템을 구축하면서 노드에 대한 벤치마킹을 수행하고 있습니다. 파일은 여러 노드에 분산되고 복제될 예정이므로 노드 자체에서는 raid0을 사용하고 있습니다. 그러나 성능 수치가 이상한데 StackOverflow 커뮤니티가 그 이유를 알아내는 데 도움을 줄 수 있는지 궁금합니다. 저는 벤치마킹 도구로 fio를 사용하고 있습니다. 버전 1.38은 나에게 작동하지 않았으며 버전 1.59 또는 1.60을 사용해야 했습니다.
내 fio 구성 파일은 다음과 같습니다.
[global]
directory=/mnt/gluster
lockfile=readwrite
ioengine=libaio
iodepth=8
rw=randrw
nrfiles=200
openfiles=30
runtime=900
[file]
filesize=16-8k/8M-512M
size=1GiB
소프트웨어 raid를 사용하는 raid0의 경우 다음과 같은 결과를 얻었습니다(필수 항목만 요약).
read : io=285240KB, bw=324535 B/s, iops=79 , runt=900011msec
write: io=283532KB, bw=322592 B/s, iops=78 , runt=900011msec
소프트웨어 raid를 사용하는 raid1에서 다음과 같은 결과를 얻었습니다.
read : io=683808KB, bw=778021 B/s, iops=189 , runt=900000msec
write: io=488184KB, bw=628122 B/s, iops=153 , runt=795864msec
단일 디스크 성능은 여전히 raid0 성능을 능가합니다.
read : io=546848KB, bw=622179 B/s, iops=151 , runt=900018msec
write: io=486736KB, bw=591126 B/s, iops=144 , runt=843166msec
4k 익스텐트로 구성된 4개의 디스크에 걸쳐 LVM 스트라이프:
read : io=727036KB, bw=827198 B/s, iops=201 , runt=900007msec
write: io=489424KB, bw=604693 B/s, iops=147 , runt=828800msec
하드웨어 RAID0(HighPoint RocketRaid 2470)
read : io=326884KB, bw=371918 B/s, iops=90 , runt=900008msec
write: io=328824KB, bw=374125 B/s, iops=91 , runt=900008msec
위의 처음 4개 결과는 마더보드의 SATA 컨트롤러에서만 실행되고 있습니다. 하지만 RocketRaid 카드로 옮긴 후 소프트웨어 RAID로 결과를 재현했습니다. 1TB SATA 드라이브입니다. 멀티스레드 테스트를 실행하면 거의 동일한 결과가 나왔습니다. RAID0이 이렇게 느리게 실행되는 이유가 있나요? 단일 드라이브나 RAID1보다 우수한 랜덤 I/O 성능을 제공할 것이라고 생각했습니다.
후속 조치: Scalable Informatics의 Joe의 몇 가지 제안(좋은 사람, 그의 물건을 사세요!)을 기반으로 더 깊은 대기열과 더 임의적인 블록 크기를 사용하도록 테스트를 변경했습니다.
[global]
directory=/mnt/glusterfs
lockfile=readwrite
ioengine=libaio
iodepth=32
rw=randrw
numjobs=8
[file]
filesize=16-8k/8M-512M
blocksize_range=64k-1M
size=1GiB
nrfiles=50
openfiles=8
runtime=900
그리고 최종 결과는 HighPoint RocketRaid 2740 카드가 형편없다는 것입니다.
- 단일 디스크 성능(SuperMicro 마더보드 SATA): 43.2mb/s 읽기, 42.6mb/s 쓰기
- MD Raid 0(드라이버가 로드되거나 로드되지 않은 상태에서 HBA로 사용되는 RocketRAID): 읽기 53.1mb/s, 쓰기 54.1mb/s
- RocketRaid Raid 0: 29.4mb/s 읽기, 29.2mb/s 쓰기
- MD RAID 0(마더보드 SATA): 58.0mb/s 읽기, 58.3mb/s 쓰기
RocketRaid 카드에 연결된 성능은 전반적으로 느렸습니다.
이 질문은 열어두겠습니다. 테스트를 위해 다음 주나 2주 안에 새로운 RAID 카드를 가져올 예정이며, 저는 여전히 단일 디스크 성능 이상의 성능을 얻기 위한 최적화 팁을 찾고 있습니다. , 철저하게 답변되지 않은 것 같습니다.
답변1
쓰거나 읽은 데이터가 단일 디스크에 핫스팟되는 스트라이프 크기 문제가 발생할 수 있습니다.소프트웨어 RAID 사용법자세한 내용은. 출력을 보면 이것이 사실인지 확인할 수 있습니다.iostat.
선형 액세스 성능을 확인하려면 벤치마킹을 위해 "hdparm -t" 또는 dd를 사용해 보십시오. 이렇게 하면 단일 디스크 성능의 약 두 배에 해당하는 성능 수치가 표시됩니다.
답변2
단일 드라이브나 RAID1보다 우수한 랜덤 I/O 성능을 제공할 것이라고 생각했습니다.
아니요, 무작위로 검색하는 블록이 스트라이프 크기보다 크면 단일 드라이브의 속도와 비슷해야 합니다. 단일 드라이브보다 더 나쁜 결과를 여전히 설명하지 못합니다.
에서위키피디아.
파일 복사 또는 비디오 재생과 같이 스트라이프 크기보다 큰 읽기 및 쓰기의 경우 디스크는 각 디스크에서 동일한 위치를 찾습니다.따라서 어레이의 탐색 시간은 단일 드라이브의 탐색 시간과 동일합니다.. 데이터베이스 액세스와 같이 스트라이프 크기보다 작은 읽기 및 쓰기의 경우 드라이브는 독립적으로 검색할 수 있습니다.