我的失误/秒被填充,没有命中。数据包含的键范围从1到300 K,存储的数据是字符串类型
memtier_benchmark -s xx.xxx.xxx.xxx -p xxxxx -P redis -t 1 -n 1 --ratio 0:1 -c 1 -x 2 --key-pattern S:S --authenticate=xxxxxxx --key-prefix=
字符串
aoyhnmkz1#
memtier_benchmark在这方面的文档非常少,如果你在第一次运行时使用它,它不会模拟任何缓存命中,这对于一个测试缓存性能的工具来说是非常无用的。这里的两个关键参数是:
memtier_benchmark
--key-pattern=[SET:GET] --ratio=[SET:GET]
字符串--key-pattern定义了设置的键的名称和请求的键的名称。例如,如果您使用S:S,这意味着软件将第一个键设置为memtier-0,然后立即请求memtier-1,然后设置memtier-1,然后请求memtier-2(Go figure...)。这就是为什么您会得到100%的miss结果。如果你设置了R:R,这意味着软件会在Set和Get中随机设置keyname中的数字。这通常会导致> 90%的未命中率,具体取决于你设置了多少个客户端和线程。如果你正在运行一个未命中率> 90%的缓存,那么你是否应该运行缓存就值得怀疑了,所以再次强调,这是相当无用的。为了模拟真实的世界缓存应该做的事情,您希望未命中率<50%。为了实现这一点,您需要扩展获取超过集合的数量。memtier_benchmark的默认值是1:10,但同样,在第一次运行时(或者,如果您持续对冷缓存运行此操作),并将--key-pattern=S:S作为默认值,你仍然会得到一个非常高的未命中率。如果你继续对你不断填充的同一个缓存重复测试,你应该会看到你的未命中率开始下降,但是,如果您在一个短暂的环境中进行测试,这可能不是您可以依赖的东西。为了在第一次运行时获得较低的未命中率,我使用:用途:
--key-pattern
S:S
memtier-0
memtier-1
memtier-2
R:R
1:10
--key-pattern=S:S
--key-pattern=S:R --ratio=1:20
型这应该会导致未命中率<50%。这是我能够模拟的最好的结果。我的实际缓存将具有<5%的未命中率。我仍在试图找出一种方法来用memtier_benchmark测试。此外,使用--hide-histogram来摆脱恼人的测试结果转储。编辑:为了实现100%命中率/ 0%未命中率,请执行以下操作:从一个冷的、空的缓存开始运行一个使用-ratio=参数的测试,以便在非常窄的键范围内仅将Sets包含在测试中:
--hide-histogram
-ratio=
Sets
--hide-histogram --key-pattern=S:S --key-minimum=1 --key-maximum=50 --ratio=1:0
型现在,再次运行测试,这一次,翻转比率,只包含Gets:
Gets
--hide-histogram --key-pattern=S:S --key-minimum=1 --key-maximum=50 --ratio=0:1
型然后,您可以通过重新运行这两个部分并扩展--key-maximum=值来调整命中/未命中率。
--key-maximum=
a8jjtwal2#
你的比率是0 set add 1 get。把它改成1:1或类似的值。
0 set add 1 get
1:1
2admgd593#
在尝试只读基准测试之前,您需要填充memcached。要填充它,您可以运行只写工作负载来至少一次写入所有键。
3条答案
按热度按时间aoyhnmkz1#
memtier_benchmark
在这方面的文档非常少,如果你在第一次运行时使用它,它不会模拟任何缓存命中,这对于一个测试缓存性能的工具来说是非常无用的。这里的两个关键参数是:
字符串
--key-pattern
定义了设置的键的名称和请求的键的名称。例如,如果您使用S:S
,这意味着软件将第一个键设置为memtier-0
,然后立即请求memtier-1
,然后设置memtier-1
,然后请求memtier-2
(Go figure...)。这就是为什么您会得到100%的miss结果。如果你设置了
R:R
,这意味着软件会在Set和Get中随机设置keyname中的数字。这通常会导致> 90%的未命中率,具体取决于你设置了多少个客户端和线程。如果你正在运行一个未命中率> 90%的缓存,那么你是否应该运行缓存就值得怀疑了,所以再次强调,这是相当无用的。为了模拟真实的世界缓存应该做的事情,您希望未命中率<50%。为了实现这一点,您需要扩展获取超过集合的数量。
memtier_benchmark
的默认值是1:10
,但同样,在第一次运行时(或者,如果您持续对冷缓存运行此操作),并将--key-pattern=S:S
作为默认值,你仍然会得到一个非常高的未命中率。如果你继续对你不断填充的同一个缓存重复测试,你应该会看到你的未命中率开始下降,但是,如果您在一个短暂的环境中进行测试,这可能不是您可以依赖的东西。为了在第一次运行时获得较低的未命中率,我使用:用途:
型
这应该会导致未命中率<50%。这是我能够模拟的最好的结果。我的实际缓存将具有<5%的未命中率。我仍在试图找出一种方法来用
memtier_benchmark
测试。此外,使用
--hide-histogram
来摆脱恼人的测试结果转储。编辑:
为了实现100%命中率/ 0%未命中率,请执行以下操作:
从一个冷的、空的缓存开始
运行一个使用
-ratio=
参数的测试,以便在非常窄的键范围内仅将Sets
包含在测试中:型
现在,再次运行测试,这一次,翻转比率,只包含
Gets
:型
然后,您可以通过重新运行这两个部分并扩展
--key-maximum=
值来调整命中/未命中率。a8jjtwal2#
你的比率是
0 set add 1 get
。把它改成1:1
或类似的值。2admgd593#
在尝试只读基准测试之前,您需要填充memcached。
要填充它,您可以运行只写工作负载来至少一次写入所有键。