# ====================================================================== # HFT PERFORMANCE BENCHMARKING CONFIGURATION # ====================================================================== # Defines performance targets and benchmarking parameters for HFT system [benchmarks] # Overall system performance targets name = "foxhunt-hft-benchmarks" version = "1.0.0" target_environment = "production" [benchmarks.latency_targets] # Ultra-low latency requirements (in microseconds) order_entry_to_market_max_us = 50 # 50μs order entry to market market_data_processing_max_us = 10 # 10μs market data processing risk_check_max_us = 5 # 5μs risk validation order_routing_max_us = 20 # 20μs order routing database_query_max_us = 100 # 100μs database queries cache_access_max_us = 1 # 1μs cache access network_round_trip_max_us = 200 # 200μs network round trip # Percentile requirements p50_latency_target_us = 25 # 50th percentile target p95_latency_target_us = 50 # 95th percentile target p99_latency_target_us = 100 # 99th percentile target p999_latency_target_us = 500 # 99.9th percentile target [benchmarks.throughput_targets] # High-frequency throughput requirements orders_per_second_min = 10000 # 10K orders/second minimum market_data_updates_per_second_min = 100000 # 100K market updates/second risk_checks_per_second_min = 50000 # 50K risk checks/second database_writes_per_second_min = 25000 # 25K DB writes/second database_reads_per_second_min = 100000 # 100K DB reads/second # Burst capacity requirements peak_orders_per_second = 50000 # 50K orders/second peak peak_market_data_per_second = 500000 # 500K market updates/second peak sustained_duration_seconds = 300 # 5 minutes sustained peak [benchmarks.resource_limits] # Resource utilization limits max_cpu_utilization = 0.80 # 80% max CPU utilization max_memory_utilization = 0.85 # 85% max memory utilization max_network_utilization = 0.70 # 70% max network utilization max_disk_io_utilization = 0.60 # 60% max disk I/O utilization # Connection pool limits max_database_connections = 200 # Maximum DB connections max_cache_connections = 100 # Maximum cache connections max_service_connections = 50 # Maximum inter-service connections [benchmarks.reliability_targets] # System reliability and availability target_uptime = 0.9999 # 99.99% uptime (52 minutes downtime/year) max_error_rate = 0.0001 # 0.01% error rate mean_time_to_recovery_seconds = 30 # 30 seconds MTTR mean_time_between_failures_hours = 8760 # 1 year MTBF # Data consistency requirements max_data_staleness_ms = 100 # 100ms max data staleness replication_lag_max_ms = 50 # 50ms max replication lag [test_scenarios] # Benchmark test scenarios [test_scenarios.normal_load] # Normal market conditions description = "Typical market conditions with normal order flow" duration_seconds = 300 # 5 minutes orders_per_second = 1000 # 1K orders/second market_data_per_second = 10000 # 10K updates/second concurrent_users = 100 # 100 concurrent traders [test_scenarios.high_load] # High volume trading conditions description = "High volume market conditions" duration_seconds = 600 # 10 minutes orders_per_second = 10000 # 10K orders/second market_data_per_second = 100000 # 100K updates/second concurrent_users = 1000 # 1K concurrent traders [test_scenarios.peak_load] # Peak market conditions (market open/close) description = "Peak market conditions with maximum load" duration_seconds = 180 # 3 minutes orders_per_second = 50000 # 50K orders/second market_data_per_second = 500000 # 500K updates/second concurrent_users = 5000 # 5K concurrent traders [test_scenarios.stress_test] # Stress test beyond normal capacity description = "Stress test to find system breaking point" duration_seconds = 120 # 2 minutes orders_per_second = 100000 # 100K orders/second market_data_per_second = 1000000 # 1M updates/second concurrent_users = 10000 # 10K concurrent traders [test_scenarios.endurance_test] # Long-running endurance test description = "Extended endurance test for stability" duration_seconds = 86400 # 24 hours orders_per_second = 5000 # 5K orders/second sustained market_data_per_second = 50000 # 50K updates/second sustained concurrent_users = 500 # 500 concurrent traders [hardware_requirements] # Minimum hardware requirements for benchmarks [hardware_requirements.cpu] # CPU requirements min_cores = 16 # 16 CPU cores minimum min_frequency_ghz = 3.0 # 3.0 GHz minimum frequency recommended_cpu = "Intel Xeon Gold 6248R" # Recommended CPU enable_hyperthreading = false # Disable hyperthreading for consistency cpu_affinity_enabled = true # Enable CPU affinity [hardware_requirements.memory] # Memory requirements min_memory_gb = 64 # 64GB minimum memory recommended_memory_gb = 128 # 128GB recommended enable_huge_pages = true # Enable huge pages numa_optimization = true # NUMA optimization [hardware_requirements.storage] # Storage requirements min_storage_gb = 1000 # 1TB minimum storage storage_type = "NVMe SSD" # NVMe SSD required min_iops = 100000 # 100K IOPS minimum min_bandwidth_gbps = 2 # 2GB/s bandwidth minimum [hardware_requirements.network] # Network requirements min_bandwidth_gbps = 10 # 10 Gbps minimum max_latency_us = 100 # 100μs max network latency network_card = "Intel X710" # Recommended network card enable_kernel_bypass = true # Kernel bypass optimization [monitoring] # Benchmark monitoring and reporting [monitoring.metrics] # Metrics to collect during benchmarks latency_percentiles = [50, 90, 95, 99, 99.9, 99.99] throughput_measurements = ["orders/sec", "updates/sec", "queries/sec"] resource_utilization = ["cpu", "memory", "network", "disk"] error_tracking = ["timeouts", "failures", "retries", "drops"] [monitoring.reporting] # Benchmark reporting configuration report_format = "json" # JSON report format include_raw_data = true # Include raw measurement data generate_charts = true # Generate performance charts export_to_prometheus = true # Export metrics to Prometheus save_to_database = true # Save results to database [monitoring.alerts] # Performance alerts during benchmarking enable_real_time_alerts = true # Real-time alerting latency_alert_threshold_us = 100 # Alert if latency > 100μs throughput_alert_threshold = 0.8 # Alert if throughput < 80% target error_rate_alert_threshold = 0.01 # Alert if error rate > 1% resource_alert_threshold = 0.9 # Alert if resource usage > 90%