Files
Arch-R/scripts/archr-memory-manager

75 lines
1.9 KiB
Plaintext
Raw Permalink Normal View History

#!/bin/bash
# Arch R — Memory Manager
# Configures ZRAM swap and manages memory for optimal gaming performance.
#
# Usage:
# archr-memory-manager setup — Configure and enable ZRAM swap
# archr-memory-manager stop — Disable ZRAM swap
# archr-memory-manager status — Show memory/swap status
ZRAM_SIZE_MB=128
ZRAM_ALGO="lzo"
log() { logger -t archr-mem "$1"; }
setup_swap() {
# Skip if already active
if swapon --show=NAME --noheadings | grep -q zram; then
log "ZRAM swap already active"
return 0
fi
# Load zram module
modprobe zram num_devices=1 2>/dev/null
# Wait for device
for i in $(seq 1 10); do
[ -e /sys/block/zram0 ] && break
sleep 0.1
done
if [ ! -e /sys/block/zram0 ]; then
log "ERROR: zram0 device not found"
return 1
fi
# Configure
echo "$ZRAM_ALGO" > /sys/block/zram0/comp_algorithm
echo "$((ZRAM_SIZE_MB * 1024 * 1024))" > /sys/block/zram0/disksize
# Format and enable
mkswap /dev/zram0 >/dev/null 2>&1
swapon -p 100 /dev/zram0
log "ZRAM swap enabled: ${ZRAM_SIZE_MB}MB ($ZRAM_ALGO)"
}
stop_swap() {
swapoff /dev/zram0 2>/dev/null
echo 1 > /sys/block/zram0/reset 2>/dev/null
log "ZRAM swap disabled"
}
show_status() {
echo "=== Memory Status ==="
free -h
echo ""
echo "=== Swap Devices ==="
swapon --show 2>/dev/null || echo "No swap active"
echo ""
if [ -e /sys/block/zram0 ]; then
echo "=== ZRAM ==="
echo "Algorithm: $(cat /sys/block/zram0/comp_algorithm 2>/dev/null)"
echo "Disk size: $(cat /sys/block/zram0/disksize 2>/dev/null) bytes"
echo "Compressed: $(cat /sys/block/zram0/mm_stat 2>/dev/null | awk '{print $2}') bytes"
fi
}
case "${1:-setup}" in
setup) setup_swap ;;
stop) stop_swap ;;
reload) stop_swap; setup_swap ;;
status) show_status ;;
*) echo "Usage: archr-memory-manager {setup|stop|reload|status}" ;;
esac