去年我们 开源了 memtier_benchmark,这是一个用于 Redis 和 Memcached 资源的高吞吐量基准测试工具。在 Redis,我们每天都在使用这个工具,并且那些尝试过它的人给出了很好的反馈。根据这些建议,我们在项目中做了一些改进,我想今天与大家分享一下。
我们基准测试工具的第一个新增功能是根据已知大小范围生成随机数据。这可以通过将新的 –data-size-pattern 开关设置为值 'S'(顺序)并使用 –data-size-range 开关 指定其范围来实现。以下示例将产生一个基准键空间,其值均匀地从 4 到 204 字节的值范围内。
memtier-benchmark --random-data --data-size-range=4-204 --data-size-pattern=S --key-minimum=200 --key-maximum=400 <additional parameters>
在上面的示例中,我们使用了 -–random-data 开关来生成随机数据,以及 –key-minimum 和 –key-maximum 开关来控制键名 ID 的范围,从而产生总共 200 个键。第一个键,memtier-200,将保存 4 字节的数据,下一个将保存 5 字节,以此类推,直到最后一个键,memtier-400,它将存储 204 字节的数据。
下一个新增功能是能够使用高斯(又称正态)分布来访问数据。在我们进行此更改之前,您可以为基准的访问模式指定均匀随机或顺序分布。但是,为了更好地模拟现实世界的用例,这个新选项允许您将 memtier_benchmark 键访问模式符合熟悉的正态分布的钟形曲线。使用它时,您还可以控制和设置分布将遵循的标准差和中位数。例如,使用以下参数调用该工具
memtier-benchmark --random-data --data-size-range=4-204 --data-size-pattern=S --key-minimum=200 --key-maximum=400 --key-pattern=G:G --key-stddev=10 --key-median=300 <additional parameters>
将导致大多数读/写访问集中在第 100 个 (memtier-300) 键上。
最后,我们添加了使用 SETRANGE 和 GETRANGE Redis 命令代替 SET 和 GET 的能力。这允许您构建使用明显更少的网络流量但仍使用更大数据量的基准。例如,您可以使用 1MB 的键值,但仅使用以下参数读取和写入最后一个字节
memtier-benchmark --data-offset=1048575 --data-size=1 <additional parameters>
希望您会发现这些新增功能有用——如果您想分享您的 memtier_benchmark 意见或故事,请随时在项目的 GitHub 仓库 中直接分享。