From 734380265e66a2fb72c5a5bf38dc8e2334aa800b Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Sat, 8 Apr 2023 19:38:17 +0200 Subject: [PATCH] [Filesystems] Add many udev rules to improve SATA SSD performance Especially when NCQ is disabled (as is the case with Samsung 850 EVO). --- filesystems.nix | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/filesystems.nix b/filesystems.nix index d702ca4..7473286 100644 --- a/filesystems.nix +++ b/filesystems.nix @@ -79,7 +79,30 @@ in ''ACTION!="remove", SUBSYSTEM=="block", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="${cfg.hddScheduler}"'' ) (optional (!(builtins.isNull cfg.slowFlashScheduler)) - ''ACTION!="remove", SUBSYSTEM=="block", KERNEL=="sd[a-z]*|nvme[0-9]*n[0-9]*|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="${cfg.slowFlashScheduler}"'' + '' + SUBSYSTEM!="block", GOTO="end" + KERNEL!="sd[a-z]|nvme[0-9]*n[0-9]*|mmcblk[0-9]", GOTO="end" + ATTR{queue/rotational}!="0", GOTO="end" + + ACTION!="remove", ATTR{queue/scheduler}="${cfg.slowFlashScheduler}" + + # If possible, disable back_seek_penalty as it is effectively null on SSDs + ACTION!="remove", TEST=="queue/iosched/back_seek_penalty", ATTR{queue/iosched/back_seek_penalty}="0" + + # BEGIN: NCQ disabled + ACTION!="remove", ATTR{device/queue_depth}!="1", GOTO="no_ncq_end" + + # Increase maximum requests in software queue + ACTION!="remove", ATTR{queue/nr_requests}="256" + + # If possible, prefer throughput over latency + ACTION!="remove", TEST=="queue/iosched/low_latency", ATTR{queue/iosched/low_latency}="1" + + LABEL="no_ncq_end" + # END: NCQ disabledf + + LABEL="end" + '' ) (optional (!(builtins.isNull cfg.nvmeScheduler)) ''ACTION!="remove", SUBSYSTEM=="block", KERNEL=="nvme[0-9]*n[0-9]", ATTR{queue/scheduler}="${cfg.nvmeScheduler}"''