3.5 Greenplum性能测试
gpcheckperf是Greenplum数据库自带的性能测试工具,在指定的主机上启动会话并进行以下性能测试。
1)磁盘I/O测试(dd测试):测试逻辑磁盘或文件系统的顺序吞吐性能,该工具使用dd命令。dd命令是一个标准的UNIX工具,记录了在磁盘上读写一个大文件需要花费的时间,以MB/s为单位计算磁盘I/O性能。默认情况下,用于测试的文件尺寸按照主机上随机访问内存(RAM)的两倍计算。这样确保了测试是真正地测试磁盘I/O而不是使用内存缓存。
2)内存带宽测试:为了测试内存带宽,该工具使用STREAM基准程序来测量可持续的内存带宽(以MB/s为单位)。本项测试内容是检验操作系统在不涉及CPU计算性能的情况下是否受系统内存带宽的限制。在数据集较大的应用程序中(如在Greenplum数据库中),低内存带宽是一个主要的性能问题。如果内存带宽明显低于CPU的理论带宽,则会导致CPU花费大量的时间等待数据从系统内存传递过来。
3)网络性能测试:为了测试网络性能以及Greenplum数据库Interconnect组件的性能,该工具运行一种网络基准测试程序,该程序在当前主机连续发送5s的数据流到测试包含的每台远程主机上。数据被并行传输到每台远程主机,并以MB/s为单位,分别报告最小、最大、平均和中位网络传输速率。如果汇总的传输速率比预期慢(小于100MB/s),可以使用-r N选项串行运行该网络测试以获取每台主机的结果。要运行全矩阵带宽测试,用户可以指定-r M选项,这将导致每台主机都发送和接收来自指定的其他主机的数据。该测试适用于验证交换结构是否可以承受全矩阵负载。
gpcheckperf命令应用举例如下。
#使用/data1和/data2作为测试目录在文件host_file中的所有主机上运行磁盘I/O和内存带宽测试 gpcheckperf -f hostfile_gpcheckperf -d /data1 -d /data2 -r ds #在名为sdw1和sdw2的主机上只使用测试目录/data1运行磁盘I/O测试。显示单个主机结果并以详细模式运行 gpcheckperf -h sdw1 -h sdw2 -d /data1 -r d -D -v #使用测试目录/tmp运行并行网络测试,其中hostfile_gpcheck_ic*指定同一Interconnect子网内的所有网络接口的主机地址名称 gpcheckperf -f hostfile_gpchecknet_ic1 -r N -d /tmp gpcheckperf -f hostfile_gpchecknet_ic2 -r N -d /tmp
性能测试时间通常较长,为了进行完整的测试,我一般会创建如下测试脚本,在后台执行性能测试任务。
#创建如下shell脚本 [gpadmin@gp-master ~]$ cat gpcheckperf-test.sh #!bin/bash echo "--------- start ----------- " a=`date +"%Y-%m-%d %H:%M:%S"` echo $a gpcheckperf -f /data/greenplum/greenplum-db/all_hosts -d /data/greenplum/ -v echo "------------- end ----------" b=`date +"%Y-%m-%d %H:%M:%S"` echo $b
性能测试后台执行nohup sh gpcheckperf-test.sh &命令后,查看nohup.out的输出结果,如图3-6所示(每台服务器采用10块普通硬盘通过软件组成Raid 5)。
图3-6 Greenplum集群性能测试结果