45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
"""Configuration for LMCache Controller ZMQ Benchmark"""
|
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Standard
|
|
from dataclasses import dataclass, field
|
|
from typing import Dict, Optional
|
|
|
|
|
|
@dataclass
|
|
class ZMQBenchmarkConfig:
|
|
"""Configuration for ZMQ benchmark parameters"""
|
|
|
|
controller_pull_url: str
|
|
controller_reply_url: Optional[str]
|
|
duration: int
|
|
batch_size: int
|
|
num_instances: int
|
|
num_workers: int
|
|
num_locations: int
|
|
num_keys: int
|
|
controller_heartbeat_url: Optional[str] = None
|
|
num_hashes: int = 100
|
|
operations: Dict[str, float] = field(default_factory=dict)
|
|
heartbeat_interval: float = 1.0
|
|
register_first: bool = True
|
|
# Multi-process settings
|
|
num_processes: int = 1
|
|
process_id: int = 0
|
|
|
|
def __post_init__(self):
|
|
if not self.operations:
|
|
# Default: 70% admit, 25% evict, 5% heartbeat
|
|
self.operations = {
|
|
"admit": 70.0,
|
|
"evict": 25.0,
|
|
"heartbeat": 5.0,
|
|
}
|
|
# Validate operation percentages sum to 100
|
|
total_percentage = sum(self.operations.values())
|
|
if abs(total_percentage - 100.0) > 0.01:
|
|
raise ValueError(
|
|
"Operation percentages must sum to 100, got: %s" % total_percentage
|
|
)
|