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 man page, or the StorNext Man Pages Reference Guide.
The I/O throughput of Linux Kernel 2.6.10 (SLES10 and later and RHEL5 and later) can be increased by adjusting the default I/O settings.
Note: SLES 10 is not supported in StorNext 5.
Beginning with the 2.6 kernel, the Linux I/O scheduler can be changed to control how the kernel does reads and writes. There are four types of I/O scheduler available in most versions of Linux kernel 2.6.10 and higher:
- The completely fair queuing scheduler (CFQ)
- The no operation scheduler (NOOP)
- The deadline scheduler (DEADLINE)
-
The anticipatory scheduler (ANTICIPATORY)
Note: ANTICIPATORY is not present in SLES 11 SP2.
The default scheduler in most distributions is the completely fair queuing (CFQ). Experimentation displays that the deadline scheduler provides the best improvement.
Increasing the number of outstanding requests has been shown to provide a performance benefit:
In addition, there are three Linux kernel parameters that can be tuned for increased performance:
-
The minimal preemption qranularity variable for CPU bound tasks.
kernel.sched_min_granularity_ns = 10ms
echo 10000000 > /proc/sys/kernel/sched_min_granularity_ns
-
The wake-up preemption qranularity 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_ratio
variable contains 10, which is a percentage of total system memory, the number of pages at which thepbflush
background 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.