File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -124,9 +124,11 @@ def add_vsb_cmdline_args(
124124 type = int ,
125125 metavar = "<int>" ,
126126 dest = "num_users" ,
127- default = 1 ,
128- help = "Number of database clients to execute the workload. Default is %("
129- "default)s" ,
127+ default = None ,
128+ help = "Number of database clients to execute the workload. If not specified "
129+ "and --requests_per_sec is set, the number of users is automatically "
130+ "calculated to achieve the target QPS (assuming 500ms request latency). "
131+ "Otherwise defaults to 1." ,
130132 )
131133 general_group .add_argument (
132134 "--processes" ,
Original file line number Diff line number Diff line change @@ -109,7 +109,7 @@ def qutting_listener(environment, **_kwargs):
109109def setup_environment (environment , ** _kwargs ):
110110 env = environment
111111 options = env .parsed_options
112- num_users = options .num_users or 1
112+ num_users = options .num_users
113113
114114 logger .debug (f"setup_environment(): runner={ type (environment .runner )} " )
115115
Original file line number Diff line number Diff line change 11#!/usr/bin/env python3
22
3+ import math
34import sys
45from pathlib import Path
56
@@ -41,6 +42,18 @@ def main():
4142 args = parser .parse_args ()
4243 validate_parsed_args (parser , args )
4344
45+ # Auto-calculate the number of users if not explicitly specified.
46+ # Assuming a conservative 500ms request latency, each user can issue
47+ # at most 2 requests/sec. We provision enough users to comfortably
48+ # achieve the target QPS.
49+ if args .num_users is None :
50+ if args .requests_per_sec > 0 :
51+ assumed_latency = 0.5 # 500ms
52+ args .num_users = max (1 , math .ceil (args .requests_per_sec * assumed_latency ))
53+ else :
54+ args .num_users = 1
55+ sys .argv += ["--users" , str (args .num_users )]
56+
4457 log_base = Path (args .log_dir ) / args .database
4558 vsb .log_dir = setup_logging (log_base = log_base , level = args .loglevel )
4659 requests_per_sec = (
You can’t perform that action at this time.
0 commit comments