You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
this can be easily reproduced with master ( or any previous stable version ) and more than 1 shards scenario on OSS cluster.
with a simple > 1 shard scenario:
you can see that there is no assurance that the 4 requests generated are for the connections that is sending the requests ( given we have 3 connections ).
$ memtier_benchmark --threads 1 --clients 1 -n 4 --ratio 0:1 --cluster-mode --hide-histogram -D
Writing results to stdout
[RUN #1] Preparing benchmark client...
client.cpp:111: new client 0x55a181879400 successfully set up.
[RUN #1] Launching threads now...
shard_connection.cpp:372: sending cluster slots command.
shard_connection.cpp:425: cluster slot command successful
shard_connection.cpp:587: server 127.0.0.1:6379: GET key=[memtier-1168204]
shard_connection.cpp:587: server 127.0.0.1:6383: GET key=[memtier-6263819]
shard_connection.cpp:438: server 127.0.0.1:6379: handled response (first line): $-1, 0 hits, 1 misses
shard_connection.cpp:587: server 127.0.0.1:6379: GET key=[memtier-3771236]
shard_connection.cpp:438: server 127.0.0.1:6383: handled response (first line): $-1, 0 hits, 1 misses
shard_connection.cpp:587: server 127.0.0.1:6383: GET key=[memtier-5586315]
shard_connection.cpp:438: server 127.0.0.1:6379: handled response (first line): $-1, 0 hits, 1 misses
shard_connection.cpp:438: server 127.0.0.1:6383: handled response (first line): $-1, 0 hits, 1 misses
client.cpp:219: nothing else to do, test is finished.
[RUN #1 100%, 0 secs] 1 threads: 4 ops, 7782 (avg: 7782) ops/sec, 303.99KB/sec (avg: 303.99KB/sec), 0.20 (avg: 0.20) msec latency
// store key for other connection, if queue is not fullkey_index_pool*key_idx_pool=m_key_index_pools[other_conn_id];
if (key_idx_pool->size() <KEY_INDEX_QUEUE_MAX_SIZE) {
key_idx_pool->push(*key_index);
m_reqs_generated++;
}
This can be solved by avoiding pushing to other pools if we don't have enough requests to fill all pools of all shards.
The text was updated successfully, but these errors were encountered:
In cluster mode, where there are few requests with many shards, some
of the shards might not send any requests.
Currently, the memtier-benchmark is hang, because the connections
to these shards are not disabling their read/write events
this can be easily reproduced with master ( or any previous stable version ) and more than 1 shards scenario on OSS cluster.
with a simple > 1 shard scenario:
you can see that there is no assurance that the 4 requests generated are for the connections that is sending the requests ( given we have 3 connections ).
this is due to the following codition
and https://github.com/RedisLabs/memtier_benchmark/blob/master/cluster_client.cpp#L352
This can be solved by avoiding pushing to other pools if we don't have enough requests to fill all pools of all shards.
The text was updated successfully, but these errors were encountered: