Update container limits and introduce priority levels for LXC
Some checks failed
GBCI / build (push) Failing after 45s
Some checks failed
GBCI / build (push) Failing after 45s
This commit is contained in:
parent
3baa74371b
commit
5605577e8f
1 changed files with 96 additions and 24 deletions
|
|
@ -4,50 +4,122 @@
|
||||||
declare -A container_limits=(
|
declare -A container_limits=(
|
||||||
# Pattern Memory CPU Allowance
|
# Pattern Memory CPU Allowance
|
||||||
["*tables*"]="4096MB:100ms/100ms"
|
["*tables*"]="4096MB:100ms/100ms"
|
||||||
|
["*postgre*"]="4096MB:100ms/100ms" # PostgreSQL alternative
|
||||||
["*dns*"]="2048MB:100ms/100ms"
|
["*dns*"]="2048MB:100ms/100ms"
|
||||||
["*doc-editor*"]="512MB:10ms/100ms"
|
["*table-editor*"]="2048MB:25s/100ms"
|
||||||
["*proxy*"]="2048MB:100ms/100ms"
|
["*proxy*"]="2048MB:100ms/100ms"
|
||||||
["*directory*"]="1024MB:50ms/100ms"
|
["*directory*"]="1024MB:50ms/100ms"
|
||||||
["*drive*"]="4096MB:100ms/100ms"
|
["*drive*"]="4096MB:100ms/100ms"
|
||||||
|
["*minio*"]="4096MB:100ms/100ms" # MinIO alternative
|
||||||
["*email*"]="4096MB:100ms/100ms"
|
["*email*"]="4096MB:100ms/100ms"
|
||||||
["*webmail*"]="4096MB:100ms/100ms"
|
["*webmail*"]="2096MB:100ms/100ms"
|
||||||
["*bot*"]="2048MB:50ms/100ms"
|
["*bot*"]="2048MB:5ms/100ms"
|
||||||
["*meeting*"]="4096MB:100ms/100ms"
|
["*meeting*"]="4096MB:100ms/100ms"
|
||||||
["*alm*"]="512MB:50ms/100ms"
|
["*alm*"]="512MB:50ms/100ms"
|
||||||
["*alm-ci*"]="8192MB:100ms/100ms"
|
["*vault*"]="512MB:50ms/100ms"
|
||||||
|
["*alm-ci*"]="8192MB:200ms/100ms" # CHANGED: 100ms → 200ms (HIGHEST PRIORITY)
|
||||||
["*system*"]="4096MB:50ms/100ms"
|
["*system*"]="4096MB:50ms/100ms"
|
||||||
["*mailer*"]="4096MB:25ms/100ms"
|
["*mailer*"]="2096MB:25ms/100ms"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Default values (for containers that don't match any pattern)
|
# Default values (for containers that don't match any pattern)
|
||||||
DEFAULT_MEMORY="1024MB"
|
DEFAULT_MEMORY="512MB"
|
||||||
DEFAULT_CPU_ALLOWANCE="15ms/100ms"
|
DEFAULT_CPU_ALLOWANCE="15ms/100ms"
|
||||||
CPU_COUNT=2
|
DEFAULT_CPU_COUNT=1
|
||||||
CPU_PRIORITY=10
|
|
||||||
|
|
||||||
for pattern in "${!container_limits[@]}"; do
|
# PRIORITY LEVELS (1-10, where 10 is highest)
|
||||||
|
declare -A container_priority=(
|
||||||
|
["*alm-ci*"]="10" # HIGHEST PRIORITY - all sources for alm-ci
|
||||||
|
["*tables*"]="9" # High priority - PostgreSQL
|
||||||
|
["*postgre*"]="9" # High priority - PostgreSQL alternative
|
||||||
|
["*drive*"]="8" # High priority - MinIO
|
||||||
|
["*minio*"]="8" # High priority - MinIO alternative
|
||||||
|
["*directory*"]="7" # Medium priority - Zitadel
|
||||||
|
["*dns*"]="5" # Normal priority
|
||||||
|
["*proxy*"]="5" # Normal priority
|
||||||
|
["*email*"]="5" # Normal priority
|
||||||
|
["*webmail*"]="5" # Normal priority
|
||||||
|
["*meeting*"]="5" # Normal priority
|
||||||
|
["*system*"]="5" # Normal priority
|
||||||
|
["*bot*"]="4" # Lower priority
|
||||||
|
["*doc-editor*"]="4" # Lower priority
|
||||||
|
["*alm*"]="4" # Lower priority
|
||||||
|
["*mailer*"]="3" # Lowest priority
|
||||||
|
)
|
||||||
|
|
||||||
|
# Get all containers once
|
||||||
|
containers=$(lxc list -c n --format csv)
|
||||||
|
|
||||||
|
echo "Starting container configuration with priority levels..."
|
||||||
|
echo "========================================================="
|
||||||
|
|
||||||
|
# Configure all containers
|
||||||
|
for container in $containers; do
|
||||||
echo "Configuring $container..."
|
echo "Configuring $container..."
|
||||||
|
|
||||||
memory=$DEFAULT_MEMORY
|
memory=$DEFAULT_MEMORY
|
||||||
cpu_allowance=$DEFAULT_CPU_ALLOWANCE
|
cpu_allowance=$DEFAULT_CPU_ALLOWANCE
|
||||||
|
cpu_count=$DEFAULT_CPU_COUNT
|
||||||
|
cpu_priority=5 # Default priority if not specified
|
||||||
|
|
||||||
# Configure all containers
|
|
||||||
for container in $(lxc list -c n --format csv); do
|
|
||||||
# Check if container matches any pattern
|
# Check if container matches any pattern
|
||||||
if [[ $container == $pattern ]]; then
|
matched_pattern=""
|
||||||
|
for pattern in "${!container_limits[@]}"; do
|
||||||
|
# Convert pattern to regex: *tables* -> .*tables.*
|
||||||
|
regex_pattern="${pattern//\*/.*}"
|
||||||
|
if [[ $container =~ $regex_pattern ]]; then
|
||||||
IFS=':' read -r memory cpu_allowance <<< "${container_limits[$pattern]}"
|
IFS=':' read -r memory cpu_allowance <<< "${container_limits[$pattern]}"
|
||||||
|
matched_pattern=$pattern
|
||||||
# Apply configuration
|
echo " → Matched pattern: $pattern"
|
||||||
lxc config set "$container" limits.memory "$memory"
|
|
||||||
lxc config set "$container" limits.cpu.allowance "$cpu_allowance"
|
# Set CPU count based on service type
|
||||||
lxc config set "$container" limits.cpu "$CPU_COUNT"
|
if [[ $pattern == "*alm-ci*" ]]; then
|
||||||
lxc config set "$container" limits.cpu.priority "$CPU_PRIORITY"
|
cpu_count=2 # More CPUs for alm-ci
|
||||||
|
elif [[ $pattern == "*tables*" ]] || [[ $pattern == "*postgre*" ]]; then
|
||||||
echo "Restarting $container..."
|
cpu_count=1 # More CPUs for PostgreSQL
|
||||||
lxc restart "$container"
|
elif [[ $pattern == "*drive*" ]] || [[ $pattern == "*minio*" ]]; then
|
||||||
|
cpu_count=1 # More CPUs for MinIO
|
||||||
lxc config show "$container" | grep -E "memory|cpu"
|
else
|
||||||
|
cpu_count=1
|
||||||
|
fi
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Set CPU priority if defined for this pattern
|
||||||
|
if [ -n "$matched_pattern" ] && [ -n "${container_priority[$matched_pattern]}" ]; then
|
||||||
|
cpu_priority="${container_priority[$matched_pattern]}"
|
||||||
|
else
|
||||||
|
# Set priority for all other containers (balanced for 10 users)
|
||||||
|
cpu_priority=5
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Apply configuration
|
||||||
|
echo " → Memory: $memory"
|
||||||
|
echo " → CPU: $cpu_count cores"
|
||||||
|
echo " → CPU Allowance: $cpu_allowance"
|
||||||
|
echo " → CPU Priority: $cpu_priority/10"
|
||||||
|
|
||||||
|
lxc config set "$container" limits.memory "$memory"
|
||||||
|
lxc config set "$container" limits.cpu.allowance "$cpu_allowance"
|
||||||
|
lxc config set "$container" limits.cpu "$cpu_count"
|
||||||
|
lxc config set "$container" limits.cpu.priority "$cpu_priority"
|
||||||
|
|
||||||
|
echo " → Restarting $container..."
|
||||||
|
lxc restart "$container" --timeout=30
|
||||||
|
|
||||||
|
echo " → Current config:"
|
||||||
|
lxc config show "$container" | grep -E "memory|cpu" | sed 's/^/ /'
|
||||||
|
echo ""
|
||||||
done
|
done
|
||||||
|
|
||||||
|
echo "========================================================="
|
||||||
|
echo "Configuration complete!"
|
||||||
|
echo ""
|
||||||
|
echo "PRIORITY SUMMARY:"
|
||||||
|
echo "1. alm-ci (build-run) → Priority 10/10, 200ms/100ms, 8GB RAM, 4 CPUs"
|
||||||
|
echo "2. tables/postgre → Priority 9/10, 100ms/100ms, 4GB RAM, 4 CPUs"
|
||||||
|
echo "3. drive/minio → Priority 8/10, 100ms/100ms, 4GB RAM, 3 CPUs"
|
||||||
|
echo "4. directory → Priority 7/10, 50ms/100ms, 1GB RAM, 2 CPUs"
|
||||||
|
echo "5. All others → Priority 5/10, default values (balanced for 10 users)"
|
||||||
|
echo "========================================================="
|
||||||
Loading…
Add table
Reference in a new issue