资讯

展开

memtier_benchmark内存性能测试利器

作者:快盘下载 人气:

memtier_benchmark内存性能测试利器

//

memtier_benchmark内存性能测试工具

//

最近在测试英特尔的傲腾可持久化内存,使用到了memtier_benchmark这个工具,在使用这个工具的时候,遇到了一些问题,我简单总结了一下,写在这里,后续如果有测试需求,可以参考下。

memtier_benchmark是类似redis-benchmark的内存测试工具,但是它又不仅限redis的测试,还可以覆盖memcache,它提供了丰富的选项和报表功能,能够产生各种各样的流量模拟。下面我们看下它的安装方法和主要参数。

memtier_benchmark安装方法还是有必要了解下的,因为我自己的安装的时候出现了一些小问题,这里给出一个经过测试的安装过程:

1、准备工作
## 安装编译环境
yum install -y autoconf automake make gcc-c++
## 安装依赖包
yum install -y pcre-devel zlib-devel libmemcached-devel wget git

2、安装libevent库,memtier_benchmark对于libevent库的版本要求比较高
# 使用下面的方法可以安装libevent-2.0.22的库:
cd /root/Downloads
wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
tar xvzf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure
make && make install

# 配置libevent库的环境变量
echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}" >> /etc/profile
source /etc/profile
ldconfig /usr/local/lib

3、下载、编译、安装memtier_benchmark的库
cd /root/Downloads
git clone https://github.com/RedisLabs/memtier_benchmark.git
cd memtier_benchmark
autoreconf -ivf
./configure --prefix=/usr/local/memtier
make && make install
echo "export PATH=/usr/local/memtier/bin:${PATH}" >> /etc/profile
source /etc/profile

4、运行帮助命令查看是否安装成功
memtier_benchmark --help

以上就是经过验证的安装过程。

下面我们来看常用的参数,当然,你也可以使用--help参数来查看使用手册,可能会得到更详细的结果,这里我介绍比较常见的参数。

-s --server:代表服务器地址,默认localhost

-p --port:代表端口,默认为redis的6379端口

-x --run-number:代表完整测试的重复次数

--client-stats=file:生成每个客户端的统计文件

--out-file=file:生成最后的统计结果

-n --request:每个客户端发出的请求数,默认是10000

-c --clients:每个线程驱动的客户端数量,默认是50

-t --thread:模拟的线程数量,默认是4

--test-time:测试的时间,这里时间最好不要太短,否则有可能捕捉不到bad case

--ratio=Ratio:set和get请求的比例,默认是1:10

--data-size:对象数据大小,默认是32

-R、--random-data:使用随机化的测试数据

--data-size-range:数据对象大小范围,可以写成32-512,代表32字节到512字节

--data-size-list:这个参数比较关键,它可以帮助你去对key值的大小进行配比,按照一定的比例去模拟key值,关于这个参数,手册上没有很清楚的讲述,也是查看了日本一位作者的测试报告才看到的,举例如下:

--data-size-list=4000:50,16000:50

上面的样例代表4k大小的key值占比50%,16k大小的key值占比50%,当然,你可以增加到3个key,只要权重的和是100%即可

--data-size-pattern=R|S 这个参数的取值只能是R或者S,R代表random,S代表sequence,试想,如果你的数据对象大小是在32-512字节之间,如何分配所有的字节大小呢?该参数就是帮你解决这个问题,配置成R,则会随机的在这个定义好的范围内去取值,配置成S则会顺序均匀生成32-512大小的key

有了上面的参数说明,我们现在可以看一个完整的命令怎么写了:

上面的命令代表:

测试本地6379端口,模拟并发线程4个,每个线程驱动100个客户端,其中4k大小的key占比50%,512k大小的key占比50%,总共测试1800s,读写比例10:1,将每个客户端的日志保存在/dir/client.txt中,将总的结果保存在/dir/result.txt中。

最后面,给出一个测试结果的内容,供大家参考:

4         Threads
100       Connections per thread
1800      Seconds


ALL STATS
=========================================================================
Type         Ops/sec     Hits/sec   Misses/sec      Latency       KB/sec 
-------------------------------------------------------------------------
Sets         2218.15          ---          ---    110.76500    558106.44 
Gets        22179.61       102.75     22076.86      6.95500     26237.25 
Waits           0.00          ---          ---      0.00000          --- 
Totals      24397.76       102.75     22076.86     16.39300    584343.69 


Request Latency Distribution
Type     <= msec         Percent
------------------------------------------------------------------------
SET       1.500         0.00
SET       3.900         0.01
SET       4.000         0.01
SET       4.100         0.01
SET       4.200         0.02
SET       4.300         0.03
SET       4.400         0.03
SET       4.500         0.05
SET       4.600         0.06
SET       4.700         0.09
SET       4.800         0.14
......
SET     330.000        99.98
SET     340.000        99.99
SET     350.000       100.00
SET     360.000       100.00
SET     370.000       100.00
---
GET       3.000         0.00
.......
GET      23.000        99.98
GET      24.000        99.99
GET      25.000        99.99
GET      26.000        99.99
GET      27.000        99.99
GET      28.000       100.00
GET      29.000       100.00
GET      30.000       100.00
GET      31.000       100.00
GET      32.000       100.00

有帮助的话还希望点下再看哈

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!