分布式对象存储系统Sheepdog性能测试

上传人:添*** 文档编号:189863930 上传时间:2021-08-07 格式:WPS 页数:9 大小:157KB
返回 下载 相关 举报
分布式对象存储系统Sheepdog性能测试_第1页
第1页 / 共9页
分布式对象存储系统Sheepdog性能测试_第2页
第2页 / 共9页
分布式对象存储系统Sheepdog性能测试_第3页
第3页 / 共9页
分布式对象存储系统Sheepdog性能测试_第4页
第4页 / 共9页
分布式对象存储系统Sheepdog性能测试_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《分布式对象存储系统Sheepdog性能测试》由会员分享,可在线阅读,更多相关《分布式对象存储系统Sheepdog性能测试(9页珍藏版)》请在金锄头文库上搜索。

1、分布式对象存储系统分布式对象存储系统 Sheepdog 性能测试性能测试 Sheepdog 是一个分布式对象存储系统,专为虚拟机提供块存储,号称无单点、零配置、可 线性扩展(省略更多优点介绍) 。本文主要关注其性能究竟如何,测试版本为目前的最新稳 定版 0.7.4。 测试环境 节点数量:6 个 磁盘:各节点都配备 7200 转 SATA 硬盘,型号 WDC WD10EZEX-22RKKA0,容量为 1TB,另外测试节点(即用于启动虚拟客户机的宿主机)多配置一块 SSD 硬盘,型号 INTEL SSDSA2CW300G3,容量为 300GB 网络:测试节点配备 PCI-E 双千兆网卡,通过 bo

2、nding 进行负载均衡 文件系统:ext4fs,挂载参数:rw,noatime,barrier=0,user_xattr,data=writeback sheepdog 集群 可用空间:6 个节点各分配 100GB,总共 600GB 对象副本数量:3 个,客户机实际最大可用空间为 200GB,接近项目规划的容量 对象缓存:使用 SSD 硬盘,分配 256GB,可完全缓存客户机文件系统,随测试项 目需要挂载或卸载 虚拟客户机 资源:4GB 内存,4 个逻辑 CPU 使用 qemu 1.7 启动,支持 KVM 加速、virtio 两大测试项目 IOPS:主要考察较小数据块随机读和写的能力,测试工

3、具 fio(sudo apt-get install fio) ,测试文件固定为 150GB 吞吐量:主要考察较大数据块顺序读或者写的能力,测试工具 iozone(sudo apt- get install iozone3) ,测试文件从 64MB 倍数递增到 4GB,如没有特别说明,测试结果取自 操作 512MB 的数据文件 除特别说明,qemu 启动虚拟客户机命令如下: 1 2 qemu-system-x86_64 -enable-kvm -m 4096 -smp 4 -drive file=sheepdog:mint,if=virtio,index=0 -drive file=sheep

4、dog:data,if=virtio,index=1 -net nic,model=virtio -net user -vnc :1 -daemonize IOPS 测试 测试须知 关于 SATA 硬盘的 IOPS 测试用的普通 7200 转 SATA 硬盘,官方公布其平均寻道时间 10.5 毫秒,所以,根据以下 公式,理论上的 IOPS 值最多只有 65。 实测结果,在单线程同步 IO 的情况下(下图深蓝线) ,也是 65,在多任务(紫线)或者使 用异步 IO(黄线)的情况下,由于操作系统 IO 调度,IOPS 能够达到 80 到 100 之间。如 果进行读写操作的文件远远小于 SATA 磁

5、盘大小,缩小了存储单元寻址范围,减少了全磁 盘寻道时间,也能提高 IOPS,例如,测试文件大小占磁盘大小的 1/8 的时候,IOPS 最高 在 90 左右(浅蓝线) 。 关于 SSD 硬盘的 IOPS 测试用的 SSD 硬盘,在单线程同步 IO 的情况下,IOPS 最多能够达到 9000 左右(下图深 蓝线) ,在多任务(紫线)或者异步 IO(黄线)的情况下,最多能够达到 40000-50000 之 间。由于构造原理不同于传统磁盘,减小测试文件大小并不能明显提高 IOPS。 关于读写比例 由于大多数业务场景既有读操作,也有写操作,而且一般读操作比写操作多很多,因此, 读写混合测试项目中的读写比

6、例设定为 4:1。一般业务很少有完全随机写的情况,因此不进 行只写测试。 关于电梯算法 虚拟的客户机操作系统的 IO 调度算法使用 noop,网上有资料能够提高 IOPS,但是实测效 果不明显,因此最终报告并没有把它单列出来。 IOPS 测试 1:不使用对象缓存,只读测试 单线程同步 IO 的情况下(下图深蓝线) ,sheepdog 的 IOPS 差不多达到 100,比单节点单 SATA 硬盘高,究其原因:客户机中的测试文件为 150GB,共有三个副本,即共占 450GB,集群有 6 个节点,平均每个节点 75GB,而各个节点所在磁盘容量为 1TB,仅占 其 1/13,因此,无其它 IO 任务

7、的情况下,IOPS 会比全磁盘随机操作高。 减少客户机的测试文件大小为原来的 1/8,即 19GB,IOPS 能够达到 130-140 左右,验证了 无其它 IO 任务的情况下,测试文件越小,IOPS 越高(浅蓝线) 。 恢复客户机的测试文件为 150GB,在多任务(线程数量为 10,紫线)或者异步 IO(队列 深度为 10,黄线)的情况下,IOPS 可达 230-250。 250 左右是否该 sheepdog 集群的极限?进一步换其它 numjob 和 iodepth 的组合进行测试, 答案是肯定的,测试结果都在 250 左右,以下是线程数量为 8,异步 IO 队列深度分别为 1、4、16、

8、64、256 的测试结果,线程数量增加到 16,测试数据并没有提高。 IOPS 测试 2:使用对象缓存,只读测试 单线程同步 IO、使用对象缓存且缓存命中率 100%的情况下(下图蓝线) ,sheepdog 的 IOPS 最高可达 6000,对比相同条件下 SSD 硬盘的测试结果(最高 9000) ,还是有些损耗。 通过多任务(紫线)或者异步 IO(黄线)的方式提高并发 IO 数量,在缓存命中率 100%的 情况下,IOPS 可以提高到 40000-50000,基本与相同条件下 SSD 硬盘的测试结果相当。 注意上图为对数刻度,且没有数据值,很难比较数值大小,下图省略了一半数据块,但是 标上了

9、数据值。 之所以强调缓存命中率,是因为在不完全命中缓存的时候,IOPS 下降很厉害,低于 80%的 话,可能还不如没有对象缓存。下图是 sheepdog 对象缓存命中率与 IOPS 的关系图,其中, 测试的数据块大小从 512B 倍数递增到 512KB,缓存命中率是在测试过程中,根据 sheepdog 的 cache 目录中已有的对象文件数量估算的平均值,IOPS 值是读取数据块操作在 估算的缓存命中率条件下测量的平均值。 50000 是否该 sheepdog 集群的极限?仿照上面的方法进行测试,答案也是肯定的,测试结 果都在 50000 以内,以下是线程数量为 8,异步 IO 队列深度分别为

10、 1、4、16、64、256 的 测试结果,线程数量增加到 16,测试数据并没有提高。 IOPS 测试 3:不使用对象缓存,读写混合测试 读写混合测试的 IOPS 比只读测试的结果,总的来说要低一些,而且起伏较大,需要多次 测试计算其平均值。 单线程同步 IO 的情况下(下图深蓝线) ,能够达到 80-100。 减少客户机的测试文件大小为原来的 1/8,即 19GB,IOPS 能够达到 100-120(浅蓝线) 。 恢复客户机的测试文件为 150GB,在多任务(线程数量为 10,紫线)或者异步 IO(队列 深度为 10,黄线)的情况下,IOPS 大多在 180-250 之间,但也有时候只到 1

11、60 左右。 IOPS 测试 4:使用对象缓存,读写混合测试 单线程同步 IO、使用对象缓存且缓存命中率 100%的情况下,IOPS 差不多达到 4000。 通过多任务或者异步 IO 的方式提高并发 IO 数量,在缓存命中率 100%的情况下,IOPS 可 达 10000-20000 之间。 注意上图为对数刻度,且没有数据值,下图省略了一半数据块,但是标上了数据值。可以 看到,大数据块读写混合的情况下,多任务或异步 IO 的 IOPS 可能还不如单任务同步 IO 吞吐量测试 测试须知 关于 SATA 硬盘的吞吐量 普通 7200 转 SATA 硬盘的吞吐量数据,对比一下后面 SSD 硬盘的吞吐

12、量数据,说明传统 磁盘顺序读写的能力还是相当出色的。 关于 SSD 硬盘的吞吐量 大数据块(512KB 以上)顺序读,吞吐量可达 250MB/s-270MB/s,顺序写,吞吐量可达 200MB/s-210MB/s。 小数据块(16KB)顺序读,吞吐量也有 140MB/s,顺序写大概 120MB/s-130MB/s。 无优化 sheepdog 的吞吐量 在软硬件不做任何优化的情况下(不绑定双网卡、不使用 virtio、以默认参数启动 sheepdog) ,sheepdog 的吞吐量数据比较低: 顺序写 数据块大小为 16KB,吞吐量 13-14MB/s 数据块大小在 256KB-4MB 之间,吞

13、吐量 30-35MB/s 顺序读 数据块大小为 16KB,吞吐量 25MB/s 左右,如果数据文件大小超过可用内存,降 低到 20MB/s 数据块大小在 512KB-4MB 之间,吞吐量 125-140MB/s,如果数据文件大小超过 可用内存,降低到 80MB/s 以下 以下两图,上图为数据文件 512MB 的测试数据,下图为数据文件 4GB 的测试数据 注,不使用 virtio 方式启动 sheepdog 的命令行参数为: 1 2 qemu-system-x86_64 -enable-kvm -m 4096 -smp 4 -drive file=sheepdog:mint,index=0 -

14、drive file=sheepdog:data,index=1 -vnc :1 -daemonize 吞吐量测试 1:不使用对象缓存 从测试结果看,使用 virtio 方式启动客户机有利有弊: 提高了中小数据块读写操作的吞吐量 当数据块大小在 16KB-512KB 之间时,顺序读的吞吐量提高 10MB/s-30MB/s 不等 当数据块大小在 16KB-256KB 之间时,顺序写的吞吐量提高 5MB/s-8MB/s 不等 大大降低了超大数据块读操作的吞吐量,至于为何 virtio 在这种情况下会降低测试的 吞吐量,尚不清楚 当数据块大小达到 2MB 或者 4MB 时,顺序读的吞吐量降低 80M

15、B/s-90MB/s 以下两图,上图为 512MB 下的测试数据,下图为该情况下,与无优化 sheepdog 读写 512MB 数据文件两者吞吐量之差。 吞吐量测试 2:使用对象缓存 使用了对象缓存,顺序读写的吞吐量与数据文件大小没有直接关系,即使数据文件大小超 过可用内存。 同时也使用了 virtio,并没有因此降低读取大数据块的吞吐量。 由于 SSD 硬盘的特点,数据块越大,吞吐量越高,在数据块大小为 4MB 的情况下,顺序 读的吞吐量可达 240MB/s,顺序写也有 130MB/s;如果数据块大小只有 16KB,顺序读和 顺序写的吞吐量分别只有 55MB/s 和 35MB/s。 总结 sheepdog 性能 对象缓存 IOPS 吞吐量(MB/s) 无 只读 250,读写混合(4:1)200 数据块 512KB,顺序读 150,顺序写 35 有 只读 45000,读写混合(4:1)16000 数据块 512KB,顺序读 175,顺序写 105;数据 块 4MB,顺序读 240,顺序写 130 以上为 sheepdog 集群节点数为 6 个,且各节点都只挂载一块 SATA 硬盘的情况下测得的结 果,如果增加集群节点数,并且每个节点都挂满硬盘,IOPS 应该会更高,而吞吐量取决于 缓存和网络带宽,应该不会有明显变化

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 存储

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号