fix mq-deadline for hdds: 2

This commit is contained in:
2026-03-30 15:37:46 -04:00
parent 1a798612aa
commit 7de24b8870

View File

@@ -44,13 +44,20 @@
Type = "oneshot"; Type = "oneshot";
RemainAfterExit = true; RemainAfterExit = true;
}; };
path = with pkgs; [
coreutils
gawk
zfs
];
script = '' script = ''
for dev in /sys/block/sd*; do # Only tune disks in the hdds pool not all rotational disks.
[ -f "$dev/queue/rotational" ] || continue # zpool status gives by-id device names; we resolve to /sys/block/<name>.
[ "$(cat "$dev/queue/rotational")" = "1" ] || continue zpool status hdds | awk '/^\t/ && $1 ~ /^(ata-|nvme-|scsi-)/ {print $1}' | while read -r id; do
link="/dev/disk/by-id/$id"
# skip removable devices (USB sticks report removable=1) [ -L "$link" ] || continue
[ "$(cat "$dev/removable")" = "0" ] || continue name=$(basename "$(readlink -f "$link")")
dev="/sys/block/$name"
[ -d "$dev" ] || continue
echo mq-deadline > "$dev/queue/scheduler" echo mq-deadline > "$dev/queue/scheduler"
echo 4096 > "$dev/queue/read_ahead_kb" echo 4096 > "$dev/queue/read_ahead_kb"
@@ -63,7 +70,7 @@
echo 4096 > "$dev/queue/max_sectors_kb" 2>/dev/null || true echo 4096 > "$dev/queue/max_sectors_kb" 2>/dev/null || true
echo "Tuned $(basename "$dev"): mq-deadline, 4M readahead, 15s deadlines" echo "Tuned $id -> $name: mq-deadline, 4M readahead, 15s deadlines"
done done
''; '';
}; };