From 825a3d5b656785933e76b86476b708abe9dbbf8b Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Tue, 8 Feb 2022 12:07:11 +0100 Subject: [PATCH] [Filesystems] Add udev rule to automatically enable queue priority if device supports it --- filesystems.nix | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/filesystems.nix b/filesystems.nix index b6fe602..5a3dc13 100644 --- a/filesystems.nix +++ b/filesystems.nix @@ -30,6 +30,12 @@ in description = "Automatically set NVMe IO queue algorithm"; type = ioSchedType; }; + queuePriority = mkOption { + default = true; + example = false; + description = "Automatically enable ncq_prio if it is supported by the SATA device.\nIt may improve latency."; + type = types.bool; + }; }; config = mkIf cfg.enable { @@ -39,13 +45,16 @@ in udevRules = concatStringsSep "\n" ( concatLists [ (optional (!(builtins.isNull cfg.hddScheduler)) - ''ACTION=="add|change" SUBSYSTEM=="block", KERNEL=="sd[a-z]*", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}!="none", ATTR{queue/scheduler}="${cfg.hddScheduler}"'' + ''ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd[a-z]*", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}!="none", ATTR{queue/scheduler}="${cfg.hddScheduler}"'' ) (optional (!(builtins.isNull cfg.slowFlashScheduler)) - ''ACTION=="add|change" SUBSYSTEM=="block", KERNEL=="sd[a-z]*|nvme[0-9]*n[0-9]*|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="${cfg.slowFlashScheduler}"'' + ''ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd[a-z]*|nvme[0-9]*n[0-9]*|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="${cfg.slowFlashScheduler}"'' ) (optional (!(builtins.isNull cfg.nvmeScheduler)) - ''ACTION=="add|change" SUBSYSTEM=="block", KERNEL=="nvme[0-9]*n[0-9]*", ATTR{queue/scheduler}="${cfg.nvmeScheduler}"'' + ''ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="nvme[0-9]*n[0-9]*", ATTR{queue/scheduler}="${cfg.nvmeScheduler}"'' + ) + (optional cfg.queuePriority + ''ACTION=="add|change", SUBSYSTEM=="block", KERNEL=="sd[a-z]*", ATTR{device/ncq_prio_supported}=="1", ATTR{device/ncq_prio_enable}="1"'' ) ] );