docker-resources.yamlโข5.33 kB
# ==============================================================================
# Docker Resource Optimization Configuration for CodeGraph
# Performance tuning and resource efficiency settings
# ==============================================================================
# CPU optimization
cpu:
# CPU limits and requests
limits:
production: "2.0"
development: "4.0"
minimal: "1.0"
requests:
production: "1.0"
development: "2.0"
minimal: "0.5"
# CPU affinity for NUMA optimization
cpuset: "0-1" # Bind to specific CPU cores
# CPU shares (relative weight)
cpu_shares: 1024
# CPU quota (microseconds per period)
cpu_quota: 100000 # 100ms
cpu_period: 100000 # 100ms period
# Memory optimization
memory:
# Memory limits
limits:
production: "1Gi"
development: "2Gi"
minimal: "512Mi"
requests:
production: "512Mi"
development: "1Gi"
minimal: "256Mi"
# Swap limits (disable swap for performance)
swap_limit: "0"
# OOM killer adjustment
oom_kill_disable: false
oom_score_adj: 100
# Memory swappiness (0-100, lower = less swap)
swappiness: 10
# Kernel memory limit
kernel_memory: "100Mi"
# I/O optimization
io:
# Block I/O weight (10-1000)
blkio_weight: 500
# Device read/write rates
device_read_bps: "100MB"
device_write_bps: "50MB"
# I/O operations per second
device_read_iops: 1000
device_write_iops: 500
# Mount options for performance
mount_options:
data_volume:
- rw
- noatime
- nodiratime
tmp_volume:
- rw
- noexec
- nosuid
- nodev
- size=100m
# Network optimization
network:
# Network bandwidth limits
ingress_bandwidth: "1Gbps"
egress_bandwidth: "500Mbps"
# Network buffer sizes
net_rx_buffer: "16MB"
net_tx_buffer: "16MB"
# TCP optimization
tcp:
window_scaling: true
timestamps: true
sack: true
fack: true
congestion_control: "bbr"
# Connection limits
max_connections: 1000
connection_timeout: "30s"
keep_alive_timeout: "75s"
# Container runtime optimization
runtime:
# Use high-performance runtime
runtime_class: "runc"
# Process limits
pids_limit: 1000
# File descriptor limits
ulimits:
nofile:
soft: 4096
hard: 8192
nproc:
soft: 1024
hard: 2048
core:
soft: 0
hard: 0
# Restart policy for resilience
restart_policy:
name: "unless-stopped"
maximum_retry_count: 3
# Rust-specific optimizations
rust_runtime:
# Environment variables for Rust performance
environment:
# Memory allocator optimization
MALLOC_CONF: "background_thread:true,metadata_thp:auto,dirty_decay_ms:30000,muzzy_decay_ms:30000"
# Rust runtime settings
RUST_BACKTRACE: "1"
RUST_LOG: "info"
# Tokio runtime optimization
TOKIO_WORKER_THREADS: "4"
TOKIO_BLOCKING_THREADS: "8"
# RocksDB optimization
ROCKSDB_BLOCK_CACHE_SIZE: "256MB"
ROCKSDB_WRITE_BUFFER_SIZE: "64MB"
ROCKSDB_MAX_WRITE_BUFFER_NUMBER: "4"
# FAISS optimization
FAISS_NPROBE: "32"
OMP_NUM_THREADS: "4"
# Monitoring and observability
monitoring:
# Resource metrics collection
metrics:
cpu_usage: true
memory_usage: true
disk_io: true
network_io: true
container_stats: true
# Performance profiling
profiling:
enabled: true
interval: "30s"
flame_graph: true
# Health checks optimized for performance
health_check:
interval: "30s"
timeout: "5s"
retries: 3
start_period: "10s"
# Volume optimization
volumes:
# Data persistence with optimized settings
data_volume:
driver: "local"
driver_opts:
type: "tmpfs"
device: "tmpfs"
o: "size=1g,uid=65534,gid=65534,mode=1777"
# Cache volume for improved performance
cache_volume:
driver: "local"
driver_opts:
type: "tmpfs"
device: "tmpfs"
o: "size=512m,uid=65534,gid=65534,mode=1777"
# Log volume with rotation
log_volume:
driver: "json-file"
driver_opts:
max-size: "100m"
max-file: "3"
# Scaling configuration
scaling:
# Horizontal scaling parameters
replicas:
min: 1
max: 10
target_cpu_utilization: 70
target_memory_utilization: 80
# Vertical scaling parameters
vpa:
enabled: true
update_mode: "Auto"
resource_policy:
cpu:
min: "100m"
max: "4"
memory:
min: "128Mi"
max: "4Gi"
# Container image optimization
image:
# Layer caching strategy
cache_strategy: "registry"
# Compression optimization
compression: "gzip"
# Image pulling optimization
pull_policy: "IfNotPresent"
image_pull_secrets:
- name: "registry-secret"
# Performance profiles
profiles:
# High-performance profile
high_performance:
cpu_limit: "4"
memory_limit: "2Gi"
cpu_request: "2"
memory_request: "1Gi"
priority_class: "high-priority"
# Balanced profile (default)
balanced:
cpu_limit: "2"
memory_limit: "1Gi"
cpu_request: "1"
memory_request: "512Mi"
priority_class: "normal"
# Resource-constrained profile
minimal:
cpu_limit: "1"
memory_limit: "512Mi"
cpu_request: "0.5"
memory_request: "256Mi"
priority_class: "low"