From d3c9fabbc20842318b9d0b8b0e3a385a7a3bf743 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Tue, 21 Jul 2026 15:30:25 +0900 Subject: [PATCH] base/irqbalance: only start on multi-socket machines --- base/services/irqbalance.nix | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/base/services/irqbalance.nix b/base/services/irqbalance.nix index 078e569..09f51ce 100644 --- a/base/services/irqbalance.nix +++ b/base/services/irqbalance.nix @@ -1,4 +1,22 @@ -{ ... }: +{ config, pkgs, lib, ... }: +let + cfg = config.services.irqbalance; +in { services.irqbalance.enable = true; -} \ No newline at end of file + + # irqbalance only has meaningful work to do on multi-socket machines, so + # skip starting it pointlessly everywhere else. + systemd.services.irqbalance.serviceConfig.ExecCondition = let + isMultiSocket = pkgs.writeShellApplication { + name = "irqbalance-is-multi-socket"; + runtimeInputs = [ pkgs.coreutils ]; + text = '' + sockets=$(cat /sys/devices/system/cpu/cpu*/topology/physical_package_id | sort -u | wc -l) + [ "$sockets" -gt 1 ] + ''; + }; + in lib.mkIf cfg.enable [ + (lib.getExe isMultiSocket) + ]; +}