dragonfly/tools
Roman Gershman 7ffe812967
feat(dfly_bench): allow regulated throughput in 3 modes (#4962)
* feat(dfly_bench): allow regulated throughput in 3 modes

1. Coordinated omission - with --qps=0, each request is sent and then we wait for the response and so on.
   For pipeline mode, k requests are sent and then we wait for them to return to send another k
2. qps > 0: we schedule sending requests at frequency "qps" per connection but if pending requests count crosses a limit
   we slow down by throttling request sending. This mode enables gentle uncoordinated omission, where the schedule
   converges to the real throughput capacity of the backend (if it's slower than the target throughput).
3. qps < 0, similar as (2) but does not adjust its scheduling and may overload the server
   if target QPS is too high.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>

* chore: change pipelining and coordinated omission logic

Before that the uncoordinated omission only worked without pipelining.
Now, with pipelining mode with send a burst of P requests and then:
a) For coordinated omission - wait for all of them to complete before proceeding
   further
b) For non-coordinated omission - we sleep to pace our single connection throughput as
   defined by the qps setting.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-04-21 09:56:33 +03:00
..
benchmark refactor: set info_replication_valkey_compatible=true (#3467) 2024-08-08 21:42:58 +03:00
docker fix: stop using openssl for container healthchecks (#4181) 2024-11-25 17:41:17 +02:00
eviction feat(server): perform eviction upon memory pressure in cache mode (#2084) 2023-11-01 11:11:27 -07:00
local feat(dfly_bench): allow regulated throughput in 3 modes (#4962) 2025-04-21 09:56:33 +03:00
packaging fix: add version id for dev container builds (#4878) 2025-04-02 20:21:19 +03:00
replay feat: introduce more options for traffic logger (#4571) 2025-02-07 11:10:13 +02:00
balls_bins.py chore: add balls and bins simulator (#2001) 2023-10-11 01:18:29 +03:00
cache_logs_player.py Cache logs player batching (#623) 2022-12-30 12:29:11 +03:00
cache_testing.py fix: improvements to caching tool 2023-01-11 15:11:37 +02:00
cluster_mgr.py feat(cluster_mgr): add populate command (#4816) 2025-03-25 10:47:10 +02:00
defrag_db.py tools: Hash defrag script (#1723) 2023-08-22 09:11:34 +03:00
defrag_mem_test.py feat: add defragment command (#3003) 2024-05-08 14:26:42 +03:00
generate-tls-files.sh feat(server): Use mimalloc in SSL calls (#2710) 2024-03-11 08:25:59 +02:00
json_benchmark.py feat(server): JSON family using JSON type (#561) 2022-12-14 19:25:10 +02:00
parse_allocator_tracking_logs.py chore: add a script that parses allocator tracking logs (#3687) 2024-09-10 07:26:44 +00:00
release.sh fix: release pipeline (#2439) 2024-01-18 16:52:19 +02:00
requirements.txt chore(deps): bump numpy from 1.24.1 to 2.1.3 in /tools (#4063) 2024-11-04 22:30:34 +02:00