fix mq-deadline for hdds: 2
This commit is contained in:
@@ -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
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user