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