hardware: tighten mq-deadline read_expire for jellyfin coexistence
This commit is contained in:
@@ -12,7 +12,7 @@ let
|
|||||||
parent=''${1%%[0-9]*}
|
parent=''${1%%[0-9]*}
|
||||||
dev="/sys/block/$parent"
|
dev="/sys/block/$parent"
|
||||||
[ -d "$dev/queue/iosched" ] || exit 0
|
[ -d "$dev/queue/iosched" ] || exit 0
|
||||||
echo 15000 > "$dev/queue/iosched/read_expire"
|
echo 500 > "$dev/queue/iosched/read_expire"
|
||||||
echo 15000 > "$dev/queue/iosched/write_expire"
|
echo 15000 > "$dev/queue/iosched/write_expire"
|
||||||
echo 128 > "$dev/queue/iosched/fifo_batch"
|
echo 128 > "$dev/queue/iosched/fifo_batch"
|
||||||
echo 16 > "$dev/queue/iosched/writes_starved"
|
echo 16 > "$dev/queue/iosched/writes_starved"
|
||||||
@@ -36,11 +36,17 @@ in
|
|||||||
hardware.cpu.amd.updateMicrocode = true;
|
hardware.cpu.amd.updateMicrocode = true;
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
|
||||||
# HDD I/O tuning for torrent seeding workload (high-concurrency random reads).
|
# HDD I/O tuning for torrent seeding workload (high-concurrency random reads)
|
||||||
|
# sharing the pool with latency-sensitive sequential reads (Jellyfin playback).
|
||||||
#
|
#
|
||||||
# mq-deadline sorts requests into elevator sweeps, reducing seek distance.
|
# mq-deadline sorts requests into elevator sweeps, reducing seek distance.
|
||||||
# Aggressive deadlines (15s) let the scheduler accumulate more ops before dispatching,
|
# read_expire=500ms keeps reads bounded so a Jellyfin segment can't queue for
|
||||||
# maximizing coalescence — latency is irrelevant since torrent peers tolerate 30-60s.
|
# seconds behind a torrent burst; write_expire=15s lets the scheduler batch
|
||||||
|
# writes for coalescence (torrent writes are async and tolerate delay).
|
||||||
|
# The bulk of read coalescence already happens above the scheduler via ZFS
|
||||||
|
# aggregation (zfs_vdev_aggregation_limit=4M, read_gap_limit=128K,
|
||||||
|
# async_read_max=32), so the scheduler deadline only needs to be large enough
|
||||||
|
# to keep the elevator sweep coherent -- 500ms is plenty on rotational disks.
|
||||||
# fifo_batch=128 keeps sweeps long; writes_starved=16 heavily favors reads.
|
# fifo_batch=128 keeps sweeps long; writes_starved=16 heavily favors reads.
|
||||||
# 4 MiB readahead matches libtorrent piece extent affinity for sequential prefetch.
|
# 4 MiB readahead matches libtorrent piece extent affinity for sequential prefetch.
|
||||||
#
|
#
|
||||||
|
|||||||
Reference in New Issue
Block a user