The deviceparams File
This file is used to control the I/O scheduler, and control the scheduler's queue depth. For more information about this file, see the deviceparams(4) man page, or the StorNext Man Pages Reference Guide.
The I/O scheduler choices may vary by Linux distribution. Currently, the more popular Linux distributions provide four choices for I/O schedulers:
-
none
-
mq-deadline
-
kyber
-
bfq
Each scheduler contains additional tunable parameters that can affect I/O performance.
Note: There is no guarantee that the schedulers and their tunable parameters are available in future releases.
Quantum has found improved performance when using the mq-deadline and deadline schedulers. In addition, increasing the block queue depth has been shown to provide a performance benefit.
Example for Red Hat 8
scheduler=mq-deadline
nr_requests=256
In addition, there are three Linux kernel parameters that can be tuned for increased performance:
-
The minimal preemption granularity variable for CPU bound tasks.
kernel.sched_min_granularity_ns = 10ms
echo 10000000 > /proc/sys/kernel/sched_min_granularity_ns
-
The wake-up preemption granularity variable. Increasing this variable reduces wake-up preemption, reducing disturbance of computer bound tasks. Lowering it improves wake-up latency and throughput for latency of critical tasks.
kernel.sched_wakeup_granularity_ns = 15ms
echo 15000000 > /proc/sys/kernel/sched_wakeup_granularity_ns
-
The
vm.dirty_background_ratiovariable contains 10, which is a percentage of total system memory, the number of pages at which thepbflushbackground writeback daemon will start writing out dirty data. However, for fast RAID based disk system, this may cause large flushes of dirty memory pages. Increasing this value will result in less frequent flushes.vm.dirty_ratio = 40% RAM
sysctl vm.dirty_background_ratio = 40
For additional details, see the command deviceparams(4) in the StorNext Man Pages Reference Guide and also see StorNext Product Bulletin 50.
minute read