boot.kernelParams = [ "tsc=reliable" # Force TSC как основной clocksource "nohz_full=2-$(nproc)" # Tickless kernel на всех CPU кроме 0,1 "skew_tick=1" # Позволяет дрейф jiffies ±1ms ]; Нет, "nohz_full=2-$(nproc)" прямо так вставить нельзя — NixOS не интерполирует bash-выражения в строках kernelParams. Правильные варианты для NixOS 1. Статическая строка (самый простой) text boot.kernelParams = [ "nohz_full=2-7" # Для 8 ядер (0-7), исключая core0+1 ]; Как посчитать: nproc → 8 ядер = CPUs 0-7 → 2-7 2. Динамически через lib (идеально) text { lib, ... }: let cpuCount = lib.trivial.length (builtins.genList (x: x) (lib.trivial.nproc or 8)); # Фикс для Nix eval in { boot.kernelParams = [ "nohz_full=2-${toString (cpuCount - 1)}" ]; } Результат: nohz_full=2-7 автоматически. 3. Для HyperThreading (Ryzen/Intel рекомендуют) Исключайте пары core+HT-силблинг: text # 8T/4C → исключаем CPU0+4 (первая пара) nohz_full=1-3,5-7 Проверить HT в htop: F2 → Columns → Processor → SMT Что делает nohz_full text CPU0,1 ← housekeeping (systemd, IRQ, timers) CPU2-7 ← tickless (0Hz когда idle) → +5-15% perf в Rust/async workloads Проверка после reboot: bash cat /proc/cmdline # nohz_full=2-7 dmesg | grep "NOHZ" # [NOHZ] Full dynticks CPUs: 2-7 perf stat -e irq_vectors # Меньше векторов на isolated CPUs Рекомендация для performance.nix text boot.kernelParams = [ "nohz_full=2-${toString (lib.trivial.length (builtins.genList (x: x) 7))}" "tsc=reliable" "mitigations=off" # Уже обсуждали ];