РЕДАКТИРОВАТЬ: я не могу заставить свой экземпляр hs1.8xlarge AWS обеспечивать высокопроизводительный ввод-вывод с его локальные 24 диска. Пожалуйста, не говорите мне, как сделать тома EBS быстрее.
Контекст: после нескольких лет успешной работы Greenplum single-node edition 4.0.4.0 на экземпляре Amazon cc1.4xlarge (назовем его gp
), Я подумал, что было бы действительно неплохо воспользоваться экземпляром hs1.8xlarge и его 24 жесткими дисками (48 ТБ необработанных) локально смонтированными, а также 120 ГБ ОЗУ. Назовем эту новую установку hsgp
.
На gp
, Я смонтировал в RAID-0 20 томов EBS (учитывая, что тома EBS имеют резервную копию и относительно устойчивы к битовым ошибкам, я решил, что буду использовать максимальную скорость).
Я подумал, что новый блестящий hs1.8xlarge будет просто превосходить эту установку. Пока я ошибался. Куча небольших и простых запросов (несколько миллионов строк каждый) занимает в среднем около 900 мс для gp
, 2800 мс для hsgp
. Более крупные запросы (6 миллиардов строк) также показывают как минимум 2–3-кратное преимущество для gp
.
Я ни в коем случае не являюсь экспертом по уровням RAID, но я решил, что RAID-10 был разумным выбором для дисков 24x 2TB. я использую ext4
в массиве рейдов, с -m .1 -b 4096
варианты, и он установлен с -a noatime
.
Я заметил одну вещь: даже после трех дней, которые потребовались для mdadm для урегулирования («повторной синхронизации дисков»), это не так быстро, как Amazon утверждает, что hs1.8xlarge может доставить: я получаю примерно 305 МБ / с на запись , 705 МБ / с при чтении. Amazon заявляет, что можно получить скорость последовательной записи до 2,4 ГБ / с и последовательного чтения 2,6 ГБ / с.
Есть идеи, как получить более производительную установку?
Должен ли я отказаться от унифицированного дискового пространства (массива с 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
Ряд вещей, которые могут объяснить этот разрыв в производительности:
Вы также не упомянули подробную информацию о настройке тома 20-EBS. Без указания размера или типа тома (ssd GP, ssd Provisioned IOPS или магнитный) нам остается только гадать об этом размере уравнения.
Если diskio является вашим узким местом, вы можете получить гораздо лучшую производительность и простоту управления, запустив том iops на скорости 4000 Гбит / с ... этим легче управлять, чем raid0 на обычных томах ebs, и возможность снимать моментальные снимки ebs облегчает восстановление. Мои предварительные тесты показывают, что iops 4000 быстрее, чем raid0 с 6 осколками по 100 Гбайт, но я не тестировал достаточно тщательно и последовательно, чтобы дать точные цифры.