mdadm RAID-6 쓰기 속도 향상


8

5x1Tb WD Green HDD의 홈 서버에 mdadm RAID-6이 있습니다. dd 단위의 읽기 속도는 268 Mb / s 이상입니다. 그러나 쓰기 속도는 37.1Mb / s에 불과합니다. (48Gb 파일에서 dd를 통해 테스트되었으며 RAM 크기는 1Gb이고 테스트에 사용 된 블록 크기는 8kb입니다.)

왜 쓰기 속도가 그렇게 느리고 개선 할 수있는 방법이 있는지 제안 해 주시겠습니까? 쓰기 중 CPU 사용량은 25 %에 불과합니다 (즉, Opteron 165의 1 코어 절반) 비즈니스 크리티컬 데이터가 없으며 서버는 UPS를 지원합니다.

mdstat는 다음과 같습니다.

Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sda1[0] sdd1[4] sde1[3] sdf1[2] sdb1[1]
      2929683456 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [5/5] [UUUUU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

unused devices: <none>

어떤 제안?

쓰기 취소, 장벽, nobh와 같은 것은 도움이되지 않았습니다. DD blocksize = 1M, 8M은 아무것도 변경하지 않았습니다. mdadm은 물리적으로 섹터를 읽어서 중요하지 않은 경우에도 패리티를 계산하는 것처럼 보입니다 ... 맞습니까?

업데이트 : 변경 된 스트라이프 캐시 후 속도 저하는 실제로 테스트 중에 1 HDD가 실패했기 때문에 실제로 저하되었습니다.

해결 : 스트라이프 캐시를 늘리고 외부 비트 맵으로 전환 한 후 속도는 160Mb / s 쓰기, 260Mb / s 읽기입니다. :-디


이봐 바. 무엇을 조정하고 어떤 변경 후 성능이 120Mb / s로 떨어졌다? 비슷한 문제가 있지만 내 성능이 훨씬 나빠집니다 : (모든 제안이 유용 할 것입니다! 감사합니다!

내 경우에는 최적화 중간에 diskfail이 발생했습니다 :-)
BarsMonster

답변:


9

/ sys / block / mdX / md / stripe_cache_size 조정을 시도 했습니까?

이 포럼 게시물 (노르웨이어, 죄송합니다)에 따르면 "이 매개 변수를 조정하는 것은 디스크가 많고 시스템이 더 빠를수록 더 중요합니다."

내 시스템에서는 8192 값을 사용하여 최상의 성능을 얻습니다. 기본값 256을 사용하면 쓰기 성능이 66 % 감소합니다.

비교를 위해 그의 속도를 인용 :

디스크 : mdadm RAID6 (-n 512)의 8xSeagate 2TB LP (5900RPM) (stripe_size_cache = 8192).

CPU : Intel X3430 (4x2.4GHz, 8GB DDR3 ECC RAM)

속도 : 387MB / s 순차 쓰기, 704MB / s 순차 읽기, 초당 669 개의 ​​랜덤 탐색.

내 홈 서버에는 RAID 5를 사용하는 디스크와 거의 동일한 디스크가 있습니다.

디스크 : RAID 5의 4x1.5TB WD 녹색 (stripe_size_cache = 256-기본값)

CPU : Intel i7 920 (2.66GHz, 6GB RAM)

속도 : 60MB / s 순차 쓰기, 138MB / s 순차 읽기 (Bonnie ++에 따름)

따라서 순차적 쓰기 성능이 읽기 성능의 약 50 % 인 것처럼 보입니다.

어떤 성능을 기대할 수 있는지 Linux Raid Wiki 는 RAID 5에 대해 말합니다.

읽기는 RAID-0 읽기와 거의 유사하며 쓰기는 다소 비쌀 수 있습니다 (데이터베이스 작업과 같은 올바른 패리티 정보를 계산하기 위해 쓰기 전에 읽기가 필요함) 또는 RAID-1과 유사합니다. 쓰기 (더 큰 순차적 쓰기가 수행되고 패리티는 다른 블록에서 직접 계산되어 기록 될 때).

그리고 RAID 6 :

읽기 성능은 RAID-5와 비슷하지만 쓰기 성능이 떨어집니다.


쓰기 속도는 110까지 15 ~ 20 MB / s의 읽기 속도를 떨어 : :-(이 그냥 sence가되지 않습니다 -S
BarsMonster

다른 값을 사용해보십시오. 무슨 일이 일어나는지보십시오. 이것에 대한 전문가는 아니지만 md RAID 5에는 동일한 문제로 쓰기 속도가 느린 WD Greens (4x1.5TB)가 있습니다. 현재 시스템이 다운되었지만 마지막에도 실험을 해보고 개선 할 수 있도록 여기에서 업데이트하겠습니다.
jg-faustus

BTW : AHCI가 활성화되어 있습니까? 어떤 파일 시스템-ext3, ext4?
jg-faustus

AHCI에 대해 잘 모르면 BIOS를 살펴보기가 매우 어렵습니다. ext4.
BarsMonster

120Mb / s의 읽기 속도를 가진 젠장, 내 268로 돌아올 수 없다 .. 그냥 바보입니다
BarsMonster

4

시험

echo 32768 > /sys/block/md0/md/stripe_cache_size

확인;)


이전 답변에서 우리는 다른 stripe_cache_sizes를 테스트했습니다. 32768로 설정해도 아무것도 개선되지 않았습니다. 업그레이드 후에도 여전히 ~ 100Mb / sec의 쓰기 속도 (E8500 CPU, 8Gb 램 및 8x1Tb 어레이)
BarsMonster

불합리한! 이로 인해 쓰기 성능이 ~ 70MB / s에서 ~ 360MB / s로 즉시 향상되었습니다!?! 세상에. WTF가 기본값이 아닙니까?!?
stolsvik

어머나 이것은 실제로 작동합니다 ... [================> ....] 복구 = 82.1 % (1604609136/1953382144) finish = 122.7min 속도 = 47348K / sec ~ [ ================> ....] 회복 = 82.3 % (1607712880/1953382144) 마무리 = 56.2 분 속도 = 102451K / 초
Lmwangi

내 테스트에서 8192의 값으로 충분합니다. 배열에서 테스트해야 할 모든 것을 던 졌음에도 불구하고 stripe_cache_active가 낮은 7000보다 높은 스파이크를 얻지 못했습니다.
조디 리 Bruchon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.