dsbench性能测试工具#
本文档介绍dsbench性能测试工具的使用方法、命令行参数和配置说明。dsbench是一个用于测试datasystem性能的命令行工具,它会模拟客户端向datasystem的worker节点发送各种操作请求,以此来评估datasystem的性能表现。
环境准备#
dsbench工具需要配合已部署好的datasystem worker使用,而datasystem worker的运行又依赖etcd服务,所以需要先完成以下环境准备工作:
安装Python#
安装Python的详细步骤可以参考dscli.md中的安装Python部分。
安装并部署ETCD#
datasystem worker运行需要etcd服务,因此需要先安装并部署etcd。
安装并部署ETCD的步骤可以参考dscli.md中的安装并部署ETCD部分。
SSH互信配置#
如果需要在多台机器上运行dsbench测试,或者需要从远程机器访问datasystem worker,建议配置SSH互信(免密码登录)。
SSH互信配置的步骤可以参考dscli.md中的SSH互信配置部分。
部署datasystem worker#
在使用dsbench进行性能测试之前,需要先部署好datasystem worker。可以使用dscli工具的start或up命令来部署worker节点。
部署datasystem worker的步骤可以参考dscli.md中的dscli使用教程部分。
dsbench安装教程#
dsbench命令与dscli命令集成在同一个openYuanrong datasystem安装包中,因此只要安装了openYuanrong datasystem,就可以同时使用dsbench和dscli这两个命令行工具。
安装方式#
详细安装步骤请参考openYuanrong datasystem的安装教程,包括:
安装完成后,可以通过以下命令检查dsbench是否安装成功:
dsbench --help
如果能正常显示dsbench的帮助信息,说明安装成功。
dsbench使用教程#
本节介绍dsbench的使用方法,dsbench主要提供了两个命令:kv(用于KV性能测试)和show(用于查看节点信息)。
KV性能测试#
使用dsbench kv命令可以进行KV性能测试,该命令支持三种测试模式:全量测试、定制化测试和单个测试。
1. 单个测试(SINGLE模式)#
如果不需要使用全量测试或定制化测试模式,可以直接指定测试参数来运行单个测试用例:
dsbench kv -n 100 -s 72KB -t 16 -b 10 -S "127.0.0.1:31501,127.0.0.2:31501" -G "127.0.0.1:31501,127.0.0.2:31501"
参数说明:
-t, --thread_num:测试使用的线程数(默认:8,范围:1-128)-b, --batch_num:每批处理的请求数量(默认:1,范围:1-10000)-n, --num:测试数据的数量(默认:100)-s, --size:数据大小(默认:1MB,支持2B/4KB/8MB/1GB等格式,也可以直接写数字,单位为字节)-p, --prefix:键的前缀(默认:Bench,长度:1-64,只能包含字母、数字和下划线)
也可以使用默认参数快速运行测试:
dsbench kv -S "127.0.0.1:31501" -G "127.0.0.1:31501"
默认参数如下:
线程数:8
批次大小:1
测试数据数量:100
数据大小:1MB
键前缀:Bench
2. 全量测试(FULL模式)#
使用-a或--all参数可以运行所有内置的测试用例,这种模式需要每个worker节点至少有25GB的共享内存:
dsbench kv --all -S "127.0.0.1:31501,127.0.0.2:31501,127.0.0.3:31501" -G "127.0.0.1:31501,127.0.0.2:31501,127.0.0.3:31501"
这种模式会使用内置配置运行一系列预设的测试用例,全面评估datasystem在不同场景下的性能表现。
3. 定制化测试(CUSTOMIZED模式)#
使用-f或--testcase_file参数可以指定自定义的测试用例文件,按照自己的需求运行特定的测试场景:
dsbench kv -f testcases.json -S "127.0.0.1:31501,127.0.0.2:31501" -G "127.0.0.1:31501,127.0.0.2:31501"
测试用例文件格式(JSON格式)如下:
[
{"num": 1000, "size": "1MB", "thread_num": 1, "batch_num": 1},
{"num": 250, "size": "1MB", "thread_num": 4, "batch_num": 1},
{"num": 125, "size": "1MB", "thread_num": 8, "batch_num": 1}
]
每个测试用例需要包含以下参数:
num:测试数据的数量size:数据大小(支持2B/4KB/8MB/1GB等格式,也可以直接写数字,单位为字节)thread_num:测试使用的线程数batch_num:每批处理的请求数量
全局参数使用示例#
全局参数是指适用于所有dsbench子命令(如kv、show等)的参数,用于控制通用行为(如日志级别)。这些参数需要放在子命令前面,可以与任何子命令一起使用。详细说明请参考全局参数部分:
# 设置日志级别为INFO并启用日志监控
dsbench --min_log_level=0 --log_monitor_enable=true kv --all -S "127.0.0.1:31501" -G "127.0.0.1:31501"
# 仅设置日志级别为WARNING
dsbench --min_log_level=1 kv -f testcases.json -S "127.0.0.1:31501" -G "127.0.0.1:31501"
查看节点信息#
使用dsbench show命令可以查看当前节点的系统信息,包括IP地址、版本号、内存使用情况、CPU信息等。
dsbench show
输出示例:
IP: 192.168.1.100
Version: 0.1.0
Commit ID: abcdef1234567890
Total Memory: 64GB
Free Memory: 48GB
THP: disabled
HugePages: Total=1024, Free=1024, Size=2MB
CPU MHz: 2500
命令行参数说明#
全局参数#
这些参数可以与任何子命令一起使用,需要放在子命令前面:
参数 |
类型 |
说明 |
|---|---|---|
|
整数 |
设置数据系统客户端日志级别:INFO=0, WARNING=1, ERROR=2(默认:2,只显示错误日志) |
|
布尔值 |
启用数据系统客户端日志监控功能,需要传入true或false(默认:false) |
dsbench kv#
dsbench kv命令用于进行KV性能测试,支持以下参数:
测试配置参数#
参数 |
类型 |
说明 |
|---|---|---|
|
开关 |
运行所有内置测试用例,需要每个worker至少有25GB共享内存 |
|
字符串 |
自定义测试用例文件的路径(必须是.json格式) |
运行配置参数#
参数 |
类型 |
说明 |
|---|---|---|
|
整数 |
测试使用的线程数(默认:8,范围:1-128) |
|
整数 |
每批处理的请求数量(默认:1,范围:1-10000) |
|
整数 |
测试数据的数量(默认:100) |
|
字符串 |
数据大小(默认:1MB,支持2B/4KB/8MB/1GB等格式,也可以直接写数字,单位为字节) |
|
字符串 |
键的前缀(默认:Bench,长度:1-64,只能包含字母、数字和下划线) |
|
字符串 |
对象元数据所属的worker地址(默认:空) |
|
字符串 |
绑定测试进程到特定的NUMA节点(例如0-3,10-20,1,2,3),与worker参数的CPU亲和性设置不同(默认:空) |
集群配置参数#
参数 |
类型 |
说明 |
|---|---|---|
|
字符串 |
用于执行set操作的worker地址列表(必须填写,格式:“127.0.0.1:31501,127.0.0.2:31501”)。dsbench会为列表中的每个worker创建一个任务来执行set操作。 |
|
字符串 |
用于执行get操作的worker地址列表(必须填写,格式:“127.0.0.1:31501,127.0.0.2:31501”)。dsbench会为列表中的每个worker创建一个任务来执行get操作,同时也会使用该列表中的第一个worker来执行del操作。 |
|
字符串 |
访问密钥(默认:空) |
|
字符串 |
密钥(默认:空) |
dsbench show#
dsbench show命令用于查看当前节点的系统信息,该命令不需要额外参数。
注意事项#
在运行性能测试之前,请确保:
datasystem worker已经正确部署并正常运行
如果是多节点环境,已配置好SSH互信(免密码登录),dsbench当前使用的SSH配置有如下限制:
用户名:当前执行命令的用户
RSA私钥路径:~/.ssh/id_rsa
默认端口号22,可通过~/.ssh/config自定义
多个节点之间网络通畅,可以互相访问