当前位置: 首页 > 科技观察

学习Ceph性能测试

时间:2023-03-19 13:45:12 科技观察

在使用Ceph集群进行生产工作之前,您应该首先对其进行基准测试。基准测试提供了关于您的集群在读取、写入、延迟和其他工作负载期间如何执行的近似结果。在进行真正的基准测试之前,最好通过测量连接到集群节点的硬件(例如磁盘和网络)的性能来建立预期最大性能的基线。磁盘性能基线测试将分两步完成。首先,我们将测量单个磁盘的性能,然后,将同时测量连接到CephOSD节点的所有磁盘的性能。为了获得磁盘读写性能,我们可以使用dd命令,设置oflag参数,直接绕过磁盘缓存,获得真实的效果。测试单盘写性能,清除pagecache;echo3>/proc/sys/vm/drop_caches使用dd写入一个文件名为deleteme,大小为10G,其中填充0/dev/zero作为CephOSD安装目录输入文件,即/var/lib/ceph/osd/cep-0/:ddif=/dev/zeroof=/var/lib/ceph/osd/ceph-0/zerobs=10Gcount=1重复执行后取平均值,我没有绕过这里有kernelcache,所以测试结果会偏高,(ubuntu系统执行dd绕过kernelcache的参数好像不支持。)接下来可以测试单个节点上所有osd的写入性能。我这边每台主机上只有一个osd,所以数据和上面一样;因为我在`mount|grep操作系统|awk'{print$3}';做(ddif=/dev/zeroof=$i/zerobs=10Gcount=1&);doneosd单盘读性能测试清除pagecache;echo3>/proc/sys/vm/drop_cachesddif=/var/lib/ceph/osd/ceph-0/deletemeof=/dev/nullbs=10Gcount=1iflag=direct接下来就可以测试写性能了单个节点上的所有OSD。这里每台主机上只有一个osd,所以数据同上;echo3>/proc/sys/vm/drop_cachesforiin`mount|grep操作系统|awk'{print$3}';做(ddif=$i/zeroof=/dev/nullbs=10Gcount=1&);done网络基准性能测试CephOSD节点之间网络的基准性能。Ceph节点需要安装iper包。iperf是一个简单的点对点网络带宽测试器,工作在c/s模型上。要启动网络基准测试,请在第一个Ceph节点上执行带有服务器选项的iperf,在第二个Ceph节点上执行客户端选项。安装iperf;使用端口6900将iperfnode1节点安装为服务器;node2节点作为客户端;由于我这边是千兆网络,实际网络带宽不是很高,生产环境还是需要使用10G网络进行连接;radosbenchbenchmark测试Ceph带有一个名为radosbench的内置基准测试工具,可以测试池上Ceph集群的性能。radosbench工具支持写入、顺序读取和随机读取基准测试,它还允许清理临时基准数据。接下来,我们将测试libvirt-pool池10秒。--no-cleanup写入后,测试数据不会被清除,测试数据会在后续测试中使用;radosbench-plibvirt-pool10write--no-cleanup测试libvirt-pool池的顺序读取;radosbench-plibvirt-pool10seq可以看到不到十秒就读完了测试数据,因为读操作比写操作快,测试用了十秒写数据,同样的数据一定要不到十秒;随机读取数据测试;radosbench-plibvirt-pool10randradosbench语法如下;radosbench-p-b-t--no-cleanup-p:-p或-poo指定池名称。:测试时间(以秒为单位)。:测试类型,如写入、顺序读取或随机读取。-b:块大小,默认块大小为4M。-t:并发线程数;默认值为16--no-cleanup:radosworkbench写入池中的临时数据不会被清除。当这些数据用于顺序读取或随机读取时,它们用于读取操作。默认情况下会清理数据。RADOSload-genradosload-gen是CEPH提供的另一个测试工具。radosload-gen工具就像它的名字一样,可以用来在Ceph集群上产生负载,模拟高负载场景。rados-plibvirt-poolload-gen--num-objects200--min-object-size4M--max-object-size8M--max-ops10--read-percent0--min-op-len1M--max-op-len4M--target-throughput2G--run-length20命令行格式及参数说明:rados-pload-gen--num-objects:生成测试对象个数,default200--min-object-size:测试对象的最小大小,默认1KB,unitbyte--max-object-size:测试对象的最大大小,默认5GB,unitbyte--min-ops:最小IOOperands,相当于iodepth--max-ops:最大IO操作数,相当于iodepth--min-op-len:压测IO的最小操作大小,默认1KB,单位byte--max-op-len:pressure衡量IO的最大操作大小,默认2MB,单位byte--max-backlog:一次提交IO的吞吐量限制,默认10MB/s(单位:MB)--percent:读取操作的百分比--target-throughput:目标吞吐量,默认5MB/s(inMB)--run-length:running时间,默认60s,单位秒也可以使用watchceph-s命令或者ceph-w来监控集群的读写速度/运行状态;同时,RADOSload-gen将运行以查看发生了什么。块设备基准测试cephrbd命令行界面提供了一个名为bench-write的选项,这是一个用于在CephRados块设备上执行写基准操作的工具。您可以使用bench-write工具的不同选项来调整块大小、线程数和io模式。先创建一个块设备,映射到ceph客户端;rbdcreatelibvirt-pool/289--size10240--image-featurelayeringrbdinfo-plibvirt-pool--image289rbdmaplibvirt-pool/289rbd在showmapped块设备上创建文件系统并挂载;mkfs.xfs/dev/rbd2mkdir-p/mnt/289mount/dev/rbd2/mnt/289df-h/mnt/289写入5G大小测试到289;rbdbench-writelibvirt-pool/289--io-total5368709200rbdbench-write语法为:rbdbench-write--io-size:写入大小,单位byte,默认4M;--io-threads:线程数,默认16;--io-total:写入的总字节数,单位为字节,默认1024M;--io-pattern:写入模式,默认为seq,表示顺序写入;使用fio对cephrbd进行基准测试;安装菲奥;aptinstallfio-y写入fio配置文件;vimwrite.fio[write-4M]ioengine=rbddirect=1#排除OS的IO缓存机制的影响size=5g#每个fio进程/线程的最大读写lockmem=1G#锁使用的内存大小runtime=30#运行时间group_reporting#多个作业合并生成一个报告numjobs=1iodepth=32pool=libvirt-poolclientname=adminrbdname=289rw=write#读写模式,支持随机读写,顺序读写bs=4Mfilename=/dev/rbd0开始fio测试;fio写.fio