#!/bin/bash # maravento.com # ################################################################################ # # Kworker Kill # ################################################################################ set -uo pipefail export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # root check if [ "$(id -u)" != "0" ]; then echo "ERROR: This script must be run as root -- abort" exit 1 fi # prevent overlapping runs SCRIPT_LOCK="/var/lock/$(basename "$0" .sh).lock" (umask 077; : >> "$SCRIPT_LOCK") exec 200>"$SCRIPT_LOCK" if ! flock -n 200; then echo "ERROR: script $(basename "$0") is already running -- abort" exit 1 fi # dependencies for dep in grep coreutils util-linux; do if ! dpkg -s "$dep" &>/dev/null; then echo "ERROR: dependency '$dep' is not installed -- abort" >&2 exit 1 fi done echo "Kworker Kill Starting. Wait..." kworker=$(mktemp /tmp/gpelist.XXXXXX) trap 'rm -f "$kworker"' EXIT echo "Check GPE list..." grep enabled /sys/firmware/acpi/interrupts/* 2>/dev/null > "$kworker" gpe=$(grep -E '[1-9][0-9][0-9][0-9]+ ' "$kworker" | sort -rnk 2 | head -n1 | cut -d":" -f1) # Pattern matches GPE interrupt counts >= 1000, indicating a potential IRQ storm if [ -z "$gpe" ]; then echo "No Kworker to Disable" else echo "Send Deactivation Signal" echo "disable" > "$gpe" echo "kworker disable: $gpe" | tee -a /var/log/syslog fi