编辑:我无法让我的 hs1.8xlarge AWS 实例从其本地 24 个驱动器。请不要告诉我如何使 EBS 卷更快。
背景:在 Amazon cc1.4xlarge 实例(我们称之为)上运行 Greenplum 单节点版本 4.0.4.0 几年并取得巨大成功后gp
,我认为利用 hs1.8xlarge 实例及其 24 个 hdd(48TB 原始)本地安装磁盘以及 120GB RAM 确实很不错。我们称此新设置为hsgp
。
在 上gp
,我已将其安装在 RAID-0 20 EBS 卷中(鉴于 EBS 卷已备份并且对位错误具有相对强大的抵抗力,我认为我会追求最大的速度)。
现在,我认为新的 hs1.8xlarge 会比该设置好很多。到目前为止,我错了。一堆小而简单的查询(每个查询几百万行)的平均时间为 900 毫秒gp
, 为 2800 毫秒hsgp
。更大的查询(60 亿行)也显示出至少 2 到 3 倍的优势gp
。
我绝对不是 RAID 级别的专家,但我认为 RAID-10 是 24x 2TB 驱动器的合理选择。我ext4
在 RAID 阵列上使用,带有-m .1 -b 4096
选项,并且已安装-a noatime
。
我注意到的一件事是,即使 mdadm 花了三天时间才稳定下来(“重新同步驱动器”),它也没有亚马逊声称的 hs1.8xlarge 那样快:我的写入速度大约为 305MB/s,读取速度为 705MB/s。亚马逊表示,连续写入速度可以达到 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
。
下面给出了调整系统的参数。
系统配置信息:
# 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
答案2
如果 diskio 是您的瓶颈,通过以 4000G/s 的速度运行 iops 卷,您可能会获得更好的性能和更轻松的管理......这比常规 ebs 卷上的 raid0 更容易管理,并且 ebs 快照的能力使恢复变得容易。我的初步基准测试显示 iops 4000 比具有 6 个 100G 分片的 raid0 更快,但我还没有进行彻底和持续的测试来给出确切的数字。