first commit
This commit is contained in:
commit
57bb8aafbe
27 changed files with 8538 additions and 0 deletions
400
configs/performance.yaml
Normal file
400
configs/performance.yaml
Normal file
|
|
@ -0,0 +1,400 @@
|
|||
# Performance Configuration for deb-bootc-compose
|
||||
# This file demonstrates comprehensive performance optimization and scaling features
|
||||
|
||||
performance:
|
||||
enabled: true
|
||||
|
||||
# Performance Profiling Configuration
|
||||
profiling:
|
||||
enabled: true
|
||||
interval: "30s"
|
||||
max_history: 1000
|
||||
metrics:
|
||||
- "cpu_usage"
|
||||
- "memory_usage"
|
||||
- "disk_usage"
|
||||
- "network_io"
|
||||
- "goroutine_count"
|
||||
- "heap_alloc"
|
||||
- "compose_duration"
|
||||
- "phase_duration"
|
||||
- "variant_processing_time"
|
||||
exporters:
|
||||
- "prometheus"
|
||||
- "influxdb"
|
||||
- "elasticsearch"
|
||||
custom:
|
||||
alert_thresholds:
|
||||
cpu_usage: 90.0
|
||||
memory_usage: 85.0
|
||||
disk_usage: 80.0
|
||||
goroutine_count: 10000
|
||||
|
||||
# Horizontal Scaling Configuration
|
||||
scaling:
|
||||
enabled: true
|
||||
strategy: "adaptive" # round_robin, least_connections, weighted_round_robin, random, least_response_time, ip_hash, adaptive
|
||||
|
||||
# Node Management
|
||||
nodes:
|
||||
- id: "node-1"
|
||||
hostname: "compose-node-1.debian.org"
|
||||
address: "192.168.1.10"
|
||||
port: 8080
|
||||
tags:
|
||||
priority: "high"
|
||||
environment: "production"
|
||||
region: "eu-west"
|
||||
capabilities:
|
||||
architecture: ["amd64", "arm64"]
|
||||
max_jobs: 10
|
||||
features: ["ostree", "container", "disk_image"]
|
||||
|
||||
- id: "node-2"
|
||||
hostname: "compose-node-2.debian.org"
|
||||
address: "192.168.1.11"
|
||||
port: 8080
|
||||
tags:
|
||||
priority: "medium"
|
||||
environment: "production"
|
||||
region: "eu-west"
|
||||
capabilities:
|
||||
architecture: ["amd64"]
|
||||
max_jobs: 8
|
||||
features: ["ostree", "container"]
|
||||
|
||||
- id: "node-3"
|
||||
hostname: "compose-node-3.debian.org"
|
||||
address: "192.168.1.12"
|
||||
port: 8080
|
||||
tags:
|
||||
priority: "low"
|
||||
environment: "staging"
|
||||
region: "eu-west"
|
||||
capabilities:
|
||||
architecture: ["amd64"]
|
||||
max_jobs: 5
|
||||
features: ["ostree"]
|
||||
|
||||
# Auto-scaling Configuration
|
||||
autoscaling:
|
||||
enabled: true
|
||||
min_nodes: 2
|
||||
max_nodes: 10
|
||||
scale_up_threshold: 80.0 # Scale up when utilization > 80%
|
||||
scale_down_threshold: 20.0 # Scale down when utilization < 20%
|
||||
scale_up_cooldown: "5m" # Wait 5 minutes before scaling up again
|
||||
scale_down_cooldown: "10m" # Wait 10 minutes before scaling down again
|
||||
check_interval: "30s" # Check scaling every 30 seconds
|
||||
|
||||
# Scaling policies
|
||||
policies:
|
||||
- name: "cpu_based_scaling"
|
||||
trigger: "cpu_usage > 85% for 2 minutes"
|
||||
action: "add_node"
|
||||
cooldown: "5m"
|
||||
|
||||
- name: "memory_based_scaling"
|
||||
trigger: "memory_usage > 90% for 1 minute"
|
||||
action: "add_node"
|
||||
cooldown: "3m"
|
||||
|
||||
- name: "queue_based_scaling"
|
||||
trigger: "pending_jobs > 50"
|
||||
action: "add_node"
|
||||
cooldown: "2m"
|
||||
|
||||
# Load Balancing Configuration
|
||||
load_balancing:
|
||||
enabled: true
|
||||
health_check_interval: "10s"
|
||||
health_check_timeout: "5s"
|
||||
max_failures: 3
|
||||
failover_timeout: "30s"
|
||||
|
||||
# Health check configuration
|
||||
health_checks:
|
||||
- path: "/health"
|
||||
method: "GET"
|
||||
expected_status: 200
|
||||
timeout: "5s"
|
||||
|
||||
- path: "/metrics"
|
||||
method: "GET"
|
||||
expected_status: 200
|
||||
timeout: "10s"
|
||||
|
||||
# Sticky sessions (for stateful operations)
|
||||
sticky_sessions:
|
||||
enabled: true
|
||||
duration: "1h"
|
||||
cookie_name: "compose_session"
|
||||
|
||||
# Circuit breaker configuration
|
||||
circuit_breaker:
|
||||
enabled: true
|
||||
failure_threshold: 5
|
||||
recovery_timeout: "1m"
|
||||
half_open_max_requests: 3
|
||||
|
||||
# Resource Management
|
||||
resources:
|
||||
# Memory management
|
||||
memory:
|
||||
max_heap_size: "4GB"
|
||||
gc_target_percentage: 100
|
||||
gc_trigger_percentage: 200
|
||||
memory_profiling: true
|
||||
|
||||
# CPU management
|
||||
cpu:
|
||||
max_goroutines: 10000
|
||||
worker_pool_size: 100
|
||||
cpu_profiling: true
|
||||
|
||||
# Disk management
|
||||
disk:
|
||||
max_disk_usage: "80%"
|
||||
cleanup_interval: "1h"
|
||||
temp_file_ttl: "24h"
|
||||
compression_enabled: true
|
||||
|
||||
# Network management
|
||||
network:
|
||||
connection_pool_size: 100
|
||||
keep_alive_timeout: "30s"
|
||||
max_idle_connections: 10
|
||||
idle_connection_timeout: "90s"
|
||||
|
||||
# Caching Configuration
|
||||
caching:
|
||||
enabled: true
|
||||
|
||||
# In-memory cache
|
||||
memory:
|
||||
max_size: "1GB"
|
||||
ttl: "1h"
|
||||
cleanup_interval: "10m"
|
||||
|
||||
# Redis cache (if available)
|
||||
redis:
|
||||
enabled: false
|
||||
address: "localhost:6379"
|
||||
password: ""
|
||||
db: 0
|
||||
pool_size: 10
|
||||
ttl: "24h"
|
||||
|
||||
# File-based cache
|
||||
file:
|
||||
enabled: true
|
||||
directory: "/var/cache/deb-bootc-compose"
|
||||
max_size: "10GB"
|
||||
cleanup_interval: "1h"
|
||||
|
||||
# Cache policies
|
||||
policies:
|
||||
- pattern: "compose:metadata:*"
|
||||
ttl: "24h"
|
||||
strategy: "lru"
|
||||
|
||||
- pattern: "variant:config:*"
|
||||
ttl: "1h"
|
||||
strategy: "lru"
|
||||
|
||||
- pattern: "phase:result:*"
|
||||
ttl: "30m"
|
||||
strategy: "fifo"
|
||||
|
||||
# Performance Tuning
|
||||
tuning:
|
||||
# Go runtime tuning
|
||||
go_runtime:
|
||||
gomaxprocs: 0 # Use all available CPUs
|
||||
gc_percent: 100
|
||||
memory_limit: "4GB"
|
||||
|
||||
# HTTP server tuning
|
||||
http_server:
|
||||
read_timeout: "30s"
|
||||
write_timeout: "30s"
|
||||
idle_timeout: "120s"
|
||||
max_header_bytes: 1048576
|
||||
max_connections: 1000
|
||||
|
||||
# Database tuning (if applicable)
|
||||
database:
|
||||
max_open_connections: 100
|
||||
max_idle_connections: 25
|
||||
connection_max_lifetime: "5m"
|
||||
connection_max_idle_time: "1m"
|
||||
|
||||
# File I/O tuning
|
||||
file_io:
|
||||
buffer_size: "64KB"
|
||||
async_io: true
|
||||
prefetch_size: "1MB"
|
||||
|
||||
# Monitoring and Observability
|
||||
monitoring:
|
||||
enabled: true
|
||||
|
||||
# Metrics collection
|
||||
metrics:
|
||||
collection_interval: "15s"
|
||||
retention_period: "30d"
|
||||
aggregation_intervals:
|
||||
- "1m"
|
||||
- "5m"
|
||||
- "15m"
|
||||
- "1h"
|
||||
- "1d"
|
||||
|
||||
# Health checks
|
||||
health_checks:
|
||||
enabled: true
|
||||
interval: "30s"
|
||||
timeout: "10s"
|
||||
endpoints:
|
||||
- "/health"
|
||||
- "/ready"
|
||||
- "/live"
|
||||
|
||||
# Performance dashboards
|
||||
dashboards:
|
||||
enabled: true
|
||||
refresh_interval: "30s"
|
||||
panels:
|
||||
- "system_metrics"
|
||||
- "compose_performance"
|
||||
- "scaling_metrics"
|
||||
- "resource_utilization"
|
||||
|
||||
# Optimization Strategies
|
||||
optimization:
|
||||
# Compose optimization
|
||||
compose:
|
||||
parallel_phases: true
|
||||
max_parallel_phases: 4
|
||||
phase_timeout: "30m"
|
||||
resource_pooling: true
|
||||
incremental_builds: true
|
||||
|
||||
# Variant optimization
|
||||
variant:
|
||||
parallel_processing: true
|
||||
max_parallel_variants: 8
|
||||
shared_dependencies: true
|
||||
incremental_updates: true
|
||||
|
||||
# Build optimization
|
||||
build:
|
||||
parallel_builds: true
|
||||
max_parallel_builds: 6
|
||||
build_caching: true
|
||||
dependency_caching: true
|
||||
incremental_compilation: true
|
||||
|
||||
# Example performance scenarios
|
||||
scenarios:
|
||||
# High-throughput scenario
|
||||
high_throughput:
|
||||
description: "Optimized for maximum compose throughput"
|
||||
settings:
|
||||
scaling:
|
||||
max_nodes: 20
|
||||
scale_up_threshold: 70.0
|
||||
resources:
|
||||
memory:
|
||||
max_heap_size: "8GB"
|
||||
cpu:
|
||||
max_goroutines: 20000
|
||||
worker_pool_size: 200
|
||||
optimization:
|
||||
compose:
|
||||
max_parallel_phases: 8
|
||||
variant:
|
||||
max_parallel_variants: 16
|
||||
build:
|
||||
max_parallel_builds: 12
|
||||
|
||||
# Low-latency scenario
|
||||
low_latency:
|
||||
description: "Optimized for minimum response time"
|
||||
settings:
|
||||
scaling:
|
||||
max_nodes: 5
|
||||
scale_up_threshold: 60.0
|
||||
resources:
|
||||
memory:
|
||||
max_heap_size: "2GB"
|
||||
cpu:
|
||||
max_goroutines: 5000
|
||||
worker_pool_size: 50
|
||||
optimization:
|
||||
compose:
|
||||
max_parallel_phases: 2
|
||||
variant:
|
||||
max_parallel_variants: 4
|
||||
build:
|
||||
max_parallel_builds: 3
|
||||
|
||||
# Resource-efficient scenario
|
||||
resource_efficient:
|
||||
description: "Optimized for minimal resource usage"
|
||||
settings:
|
||||
scaling:
|
||||
max_nodes: 3
|
||||
scale_up_threshold: 90.0
|
||||
resources:
|
||||
memory:
|
||||
max_heap_size: "1GB"
|
||||
cpu:
|
||||
max_goroutines: 2000
|
||||
worker_pool_size: 20
|
||||
optimization:
|
||||
compose:
|
||||
max_parallel_phases: 1
|
||||
variant:
|
||||
max_parallel_variants: 2
|
||||
build:
|
||||
max_parallel_builds: 1
|
||||
|
||||
# Performance testing configuration
|
||||
testing:
|
||||
enabled: true
|
||||
|
||||
# Load testing
|
||||
load_testing:
|
||||
enabled: true
|
||||
scenarios:
|
||||
- name: "normal_load"
|
||||
concurrent_users: 10
|
||||
duration: "5m"
|
||||
ramp_up_time: "1m"
|
||||
|
||||
- name: "peak_load"
|
||||
concurrent_users: 50
|
||||
duration: "10m"
|
||||
ramp_up_time: "2m"
|
||||
|
||||
- name: "stress_test"
|
||||
concurrent_users: 100
|
||||
duration: "15m"
|
||||
ramp_up_time: "5m"
|
||||
|
||||
# Performance benchmarks
|
||||
benchmarks:
|
||||
enabled: true
|
||||
metrics:
|
||||
- "compose_duration"
|
||||
- "memory_usage"
|
||||
- "cpu_usage"
|
||||
- "throughput"
|
||||
- "latency"
|
||||
thresholds:
|
||||
compose_duration: "5m"
|
||||
memory_usage: "2GB"
|
||||
cpu_usage: "80%"
|
||||
throughput: "10_composes_per_minute"
|
||||
latency: "30s"
|
||||
Loading…
Add table
Add a link
Reference in a new issue