AWS hs1.8xlarge RAID 성능 문제

AWS hs1.8xlarge RAID 성능 문제

편집: hs1.8xlarge AWS 인스턴스에서 고성능 IO를 제공할 수 없습니다.로컬 24개 드라이브. EBS 볼륨을 더 빠르게 만드는 방법을 알려주지 마십시오.


컨텍스트: Amazon cc1.4xlarge 인스턴스(라고 부르겠습니다)에서 Greenplum 단일 노드 에디션 4.0.4.0을 몇 년 동안 실행하여 큰 성공을 거둔 후 gphs1.8xlarge 인스턴스를 활용하면 정말 좋을 것이라고 생각했습니다. 24개의 hdd(48TB 원시) 로컬 마운트 디스크와 120GB RAM이 있습니다. 이 새로운 설정을 이라고 부르겠습니다 hsgp.

에서는 gpRAID-0 20 EBS 볼륨에 마운트했습니다(EBS 볼륨이 백업되고 비트 오류에 대해 상대적으로 견고하다는 점을 고려하면 최대 속도를 추구할 것이라고 생각했습니다).

이제 나는 반짝이는 새로운 hs1.8xlarge가 그 설정보다 훨씬 더 훌륭할 것이라고 생각했습니다. 지금까지 나는 틀렸다. 여러 개의 작고 간단한 쿼리(각각 수백만 행)가 의 경우 평균 약 900ms, 의 경우 gp2800ms로 들어옵니다 hsgp. 더 큰 쿼리(60억 행)도 gp.

나는 RAID 수준의 전문가라고 상상할 수 없지만 RAID-10이 24x 2TB 드라이브에 대한 합리적인 선택이라고 생각했습니다. 나는 옵션과 함께 ext4raid 어레이를 사용하고 .-m .1 -b 4096-a noatime

내가 알아차린 한 가지는 mdadm이 해결("드라이브 다시 동기화")하는 데 3일이 걸린 후에도 Amazon이 주장하는 hs1.8xlarge가 제공할 수 있는 것만큼 빠르지 않다는 것입니다. 쓰기 속도는 약 305MB/s입니다. , 705MB/s 읽기. Amazon에서는 최대 2.4GiB/s 순차 쓰기, 2.6GiB/s 순차 읽기가 가능하다고 밝혔습니다.

보다 성능이 뛰어난 설정을 얻을 수 있는 아이디어가 있습니까?

통합 디스크 공간(드라이브 24개로 구성된 어레이)을 버리고 대신 Greenplum 슬라이스당 하나씩 더 작은 어레이를 사용해야 합니까?

다음은 설정 세부정보입니다 hsgp.

hvm Amazon Linux 인스턴스( amzn-ami-hvm-2013.09.1.x86_64-ebs (ami-d1bfe4b8)) 를 사용하고 vmlinuz-3.4.71-63.98.amzn1.

시스템을 조정하기 위한 매개변수는 다음과 같습니다.

sysctl.conf:

# greenplum specifics in /etc/sysctl.conf
kernel.sem = 250 64000 100 512
kernel.shmmax = 68719476736
kernel.shmmni = 4096
kernel.shmall = 4294967296
kernel.sem = 250 64000 100 512
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_max_syn_backlog=4096
net.ipv4.conf.all.arp_filter = 1
net.core.netdev_max_backlog=10000
vm.overcommit_memory=2

제한:

# greenplum specifics in /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

RAID 어레이 세부정보:

mdadm --create --verbose /dev/md0 --chunk=2048 --level=raid10 --raid-devices=24 /dev/xvd[b-y]

mkfs.ext4 -v -m .1 -b 4096 /dev/md0
mount -o noatime /dev/md0 /data

답변1

이러한 성능 격차를 설명할 수 있는 여러 가지 사항은 다음과 같습니다.

  1. 24개 스핀들 RAID-10과 20개 스핀들 RAID-0 볼륨 쓰기 성능을 비교하면 단일 디스크의 최대 12배 및 20배로 예상됩니다. 따라서 방망이에서 ~2배의 속도 저하가 미친 것은 아닙니다.
  2. 청크 크기를 2KB로 만들었습니다. 기본값은 512KB입니다. (벤치마크 지원).
  3. 실제 견적 "초당 2.6GB 읽기 및 쓰기 성능…2MiB 블록 크기." (원천). ext4 블록 크기는 4K로 512배 더 작습니다.

20-EBS 지원 볼륨 설정에 대한 세부 정보도 생략했습니다. 볼륨 크기나 유형(ssd GP, ssd 프로비저닝된 IOPS 또는 자기)을 지정하지 않고 방정식의 크기를 전체적으로 추측하게 됩니다.

답변2

diskio가 병목 현상을 일으키는 경우 iops 볼륨을 4000G/s로 실행하면 훨씬 더 나은 성능과 관리 용이성을 얻을 수 있습니다. 이는 일반 ebs 볼륨의 raid0보다 관리하기 쉽고 ebs 스냅샷 기능도 있습니다. 회복을 쉽게 해줍니다. 내 예비 벤치마크에서는 6개의 100G 샤드를 사용하는 raid0보다 iops가 4000 더 빠른 것으로 나타났습니다. 하지만 정확한 수치를 제공할 만큼 철저하고 일관되게 테스트하지 않았습니다.

관련 정보