--- /dev/null
+#!/bin/bash
+
+set_pci_irq_affinity() {
+ local pci="$1"
+ local cpu="$2"
+ local dev="/sys/bus/pci/devices/$pci"
+
+ [[ -d "$dev" ]] || return 0
+
+ if [[ -d "$dev/msi_irqs" ]]; then
+ for irqpath in "$dev"/msi_irqs/*; do
+ [[ -e "$irqpath" ]] || continue
+
+ irq="${irqpath##*/}"
+
+ if [[ -w "/proc/irq/$irq/smp_affinity_list" ]]; then
+ echo "$cpu" > "/proc/irq/$irq/smp_affinity_list"
+ fi
+ done
+ else
+ irq="$(<"$dev/irq")"
+
+ if [[ "$irq" =~ ^[0-9]+$ ]] &&
+ [[ "$irq" -gt 0 ]] &&
+ [[ -w "/proc/irq/$irq/smp_affinity_list" ]]; then
+ echo "$cpu" > "/proc/irq/$irq/smp_affinity_list"
+ fi
+ fi
+}
+
--- /dev/null
+#!/bin/sh
+
+CPUSET="0-7,16-23"
+MEMS="0"
+
+# Nur beim Öffnen einer PAM-Session
+[ "$PAM_TYPE" = "open_session" ] || exit 0
+
+# XDG_SESSION_ID sollte von pam_elogind bereits gesetzt worden sein
+[ -n "$XDG_SESSION_ID" ] || exit 0
+
+CG="/sys/fs/cgroup/$XDG_SESSION_ID"
+
+[ -d "$CG" ] || exit 0
+[ -w "$CG/cpuset.cpus" ] || exit 0
+
+printf '%s\n' "$CPUSET" > "$CG/cpuset.cpus" || exit 1
+printf '%s\n' "$MEMS" > "$CG/cpuset.mems" || exit 1
+
+exit 0
+