问题描述
在 Ceph 上线前,需要进行性能测试,以确定 Ceph 是否能够满足自己的场景需求。我们的目的是清楚掌握当前 Ceph Cluster 性能,所以要针对 Ceph Cluster 进行性能测试。
解决方案
在进行测试时,我们要清楚以下几点:
测试对象
Hardware:Network;Raw Block Device;
Ceph Cluster:RDB;CephFS;RGW;
测试指标
IOPS、MBPS、Latency;
测试方法
在宣布测试结果时,需要说明该测试的工具、参数、方法,以便于比较。
测试工具:
1)Fio:灵活的I/O测试工具,通过其广泛的配置选项,测试各种复杂的I/O性能。它拥有适用于本地块设备和RBD的插件,这意味着可以直接从Ceph集群测试RBD,也可以通过Linux内核驱动程序将RBD映射到客户端,然后使用Fio对通过客户端映射的块设备进行I/O性能测试。
2)S3bench:提供了针对兼容S3接口的基本吞吐量测试功能。它执行一系列put操作,然后执行一系列get操作,并显示相应的统计信息。该工具使用AWS GoSDK。
3)Ping:除了能够诊断许多网络问题外,Ping对网络连接的延迟测试也非常有用。
4)iPerf:其允许进行一系列网络测试,以确定两台服务器之间的带宽。该工具是最常用的网络性能测试工具。
5)RADOS:Ceph自带的性能测试工具,包括对带宽等指标的全面测试。
测试参数:
在测试过程中,我们将调整 IO Size、寻址空间、队列深度、读写模式、随机/顺序模式 等等参数;
测试方法:
测试是为了对比,所以需要定性和定量。基准测试,实际上是一种比较。基准测试(benchmarking)是一种测量和评估软件性能指标的活动。你可以在某个时候通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化后,再进行一次基准测试以确定那些变化对性能的影响。这是基准测试最常见的用途。
基准测试可以在不同层级执行:
第一步、获取硬件基准性能(针对存储集群底层硬件的基准测试)
如果想要知道 Ceph Cluster 性能,那首先要知道可能的集群最大性能。而最大性能不可能超过基础设施的性能,所以我们首先将针对硬件进行独立测试,以获取特定硬件的最大性能;
第二步、获取集群基准性能(关键指标的上层基准测试,比如块存储、对象网关等等)
当完成硬件基准测试后,我们已经知道性能基线,可以开始进行 Ceph Cluster 的性能测试,以检查集群是否具有相近的性能;
参考文献
BENCHMARK CEPH CLUSTER PERFORMANCE