@@ -35,7 +35,7 @@ class LoadPatternType(str, Enum):
3535
3636 MAX_THROUGHPUT = "max_throughput" # Offline: all queries at t=0
3737 POISSON = "poisson" # Online: fixed QPS with Poisson distribution
38- CONCURRENCY = "concurrency" # Online: fixed concurrent requests (TODO)
38+ CONCURRENCY = "concurrency" # Online: fixed concurrent requests
3939 BURST = "burst" # Burst pattern (TODO)
4040 STEP = "step" # Step pattern (TODO)
4141
@@ -217,14 +217,14 @@ class LoadPattern(BaseModel):
217217 Different patterns use target_qps differently:
218218 - max_throughput: target_qps used for calculating total queries (offline, optional with default)
219219 - poisson: target_qps sets scheduler rate (online, required - validated)
220- - concurrency: target_qps not used, concurrency limit dominates (TODO )
220+ - concurrency: issue at fixed target_concurrency (online, required - validated )
221221 """
222222
223223 type : LoadPatternType = LoadPatternType .MAX_THROUGHPUT
224224 target_qps : float | None = (
225225 None # Target QPS - required for poisson pattern, optional otherwise
226226 )
227- target_concurrency : int | None = None # For concurrency mode (TODO)
227+ target_concurrency : int | None = None # For concurrency mode, ignored otherwise
228228
229229
230230class ClientSettings (BaseModel ):
@@ -314,7 +314,8 @@ class BenchmarkConfig(BaseModel):
314314 version : str = "1.0"
315315 type : TestType
316316 submission_ref : SubmissionReference | None = None # For SUBMISSION type configs
317- benchmark_mode : TestType | None = None # For SUBMISSION: specify offline or online
317+ # For SUBMISSION: specify offline or online
318+ benchmark_mode : TestType | None = None
318319 model_params : ModelParams = Field (default_factory = ModelParams )
319320 datasets : list [Dataset ]
320321 settings : Settings = Field (default_factory = Settings )
@@ -433,7 +434,7 @@ def validate_load_pattern(self, benchmark_mode: TestType) -> None:
433434 """
434435 load_pattern_type = self .settings .load_pattern .type
435436 target_qps = self .settings .load_pattern .target_qps
436- max_concurrency = self .settings .client . max_concurrency
437+ target_concurrency = self .settings .load_pattern . target_concurrency
437438
438439 if benchmark_mode == TestType .OFFLINE :
439440 if load_pattern_type != LoadPatternType .MAX_THROUGHPUT :
@@ -451,11 +452,11 @@ def validate_load_pattern(self, benchmark_mode: TestType) -> None:
451452 "Specify target queries per second (e.g., target_qps: 100 in YAML or --target-qps 100 in CLI)"
452453 )
453454 elif load_pattern_type == LoadPatternType .CONCURRENCY :
454- # Concurrency pattern requires max_concurrency > 0
455- if not max_concurrency or max_concurrency <= 0 :
455+ # Concurrency pattern requires target_concurrency > 0
456+ if not target_concurrency or target_concurrency <= 0 :
456457 raise ValueError (
457- "Concurrency load pattern requires max_concurrency > 0. "
458- "Specify number of concurrent requests (e.g., max_concurrency : 10 in YAML or --concurrency 10 in CLI)"
458+ "Concurrency load pattern requires target_concurrency > 0. "
459+ "Specify number of concurrent requests (e.g., target_concurrency : 10 under load_pattern in YAML or --concurrency 10 in CLI)"
459460 )
460461
461462 def validate_client_settings (self ) -> None :
0 commit comments