Files
ultix/staged/ukrrs-daynight.sh
mrcharles cba2a64d67 ultix perf/ops workbench: complete 2026-08-31 optimization pass for VM 5111
Everything for the ultix-streaming (VM 5111, pfv-tsys5) performance pass:
full report + host audit results, staged/gated configs, guest prep + host
one-shot + post-reboot-fix + netcheck lifecycle scripts, grow-root manual
runbook, rolling tracking HUD, questions v1, and the gateway boot-race
hardening units. Applied and verified live 2026-08-31; open work is
tracked in Redmine project 55 as #601-#607. [#602]

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-08-31 16:46:13 -05:00

46 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# UKRRS day/night resource profile (REPORT.md section 5.5).
# Runtime-only changes (set-property --runtime + sysctl): a reboot always
# lands safely in day mode (slice unit files carry the day defaults).
set -euo pipefail
mode=${1:?usage: ukrrs-daynight.sh day|night}
CONF=/etc/ukrrs/daynight.conf
[ -r "$CONF" ] && . "$CONF"
: "${DATA2_DEV:=/dev/sdb}"
: "${BATCH_WEIGHT_DAY:=25}"; : "${BATCH_WEIGHT_NIGHT:=400}"
: "${BATCH_CPUS_DAY:=0-5}"; : "${BATCH_CPUS_NIGHT:=0-6}"
: "${BATCH_HIGH_DAY:=12G}"; : "${BATCH_HIGH_NIGHT:=30G}"
: "${GW_WEIGHT_DAY:=900}"; : "${GW_WEIGHT_NIGHT:=500}"
: "${DATA2_RA_DAY:=256}"; : "${DATA2_RA_NIGHT:=2048}"
: "${DIRTY_DAY:=1073741824}"; : "${DIRTY_NIGHT:=2147483648}"
: "${DIRTY_BG_DAY:=268435456}"; : "${DIRTY_BG_NIGHT:=536870912}"
log() { echo "[ukrrs-daynight] $*"; }
setprop() { systemctl set-property --runtime "$@"; }
setra() { blockdev --setra "$1" "$2" 2>/dev/null || log "readahead skip: $2"; }
case "$mode" in
night)
setprop ukrrs-batch.slice \
CPUWeight="$BATCH_WEIGHT_NIGHT" \
AllowedCPUs="$BATCH_CPUS_NIGHT" \
MemoryHigh="$BATCH_HIGH_NIGHT"
setprop ukrrs-gateway.slice CPUWeight="$GW_WEIGHT_NIGHT"
setra "$DATA2_RA_NIGHT" "$DATA2_DEV"; setra "$DATA2_RA_NIGHT" "${DATA2_DEV}1"
sysctl -q -w vm.dirty_bytes="$DIRTY_NIGHT" vm.dirty_background_bytes="$DIRTY_BG_NIGHT"
;;
day)
setprop ukrrs-batch.slice \
CPUWeight="$BATCH_WEIGHT_DAY" \
AllowedCPUs="$BATCH_CPUS_DAY" \
MemoryHigh="$BATCH_HIGH_DAY"
setprop ukrrs-gateway.slice CPUWeight="$GW_WEIGHT_DAY"
setra "$DATA2_RA_DAY" "$DATA2_DEV"; setra "$DATA2_RA_DAY" "${DATA2_DEV}1"
sysctl -q -w vm.dirty_bytes="$DIRTY_DAY" vm.dirty_background_bytes="$DIRTY_BG_DAY"
;;
*)
echo "unknown mode: $mode" >&2; exit 2 ;;
esac
log "profile $mode applied $(date -Is)"