Wednesday, January 25, 2012

Linux IO scheduler

Linux IO scheduling controls the algorithm for processing disk IO requests in appropriate order. Choosing adequate algorithm may have big impact on the IO performance. IO scheduling is determined by the Linux kernel. From the 2.6 there are four IO schedulers:
  • Completely Fair Queuing (CFQ)
  • Deadline
  • NOOP
  • Anticipatory
The scheduler is determined by elevator option in the /boot/grub/grub.conf file:
elevator= cfq | deadline | noop | as

With 2.6 kernels, it is also possible to change the scheduler for particular devices
during runtime:
# echo deadline > /sys/block/sdb/queue/scheduler

 Steve Shaw and Martin Bach writes:
"CFQ is the default scheduler for Oracle Enterprise Linux. It balances IO requests across all available resources. The Deadline scheduler attempts to minimize the latency of IO requests with a round robin–based algorithm for real-time performance. The Deadline scheduler is often considered more applicable in a data warehouse environment, where the IO profile is biased toward sequential reads. The NOOP scheduler minimizes host CPU utilization by implementing a FIFO queue, and it can be used where IO performance is optimized at the block-device level. The Anticipatory scheduler is used for aggregating IO requests where the external storage is known to be slow, but at the cost of latency for individual IO requests. "

But in the 6.2 the default  scheduler in was changed:
"Default IO scheduler

    For the Unbreakable Enterprise Kernel, the default IO scheduler is the 'deadline' scheduler.
    For the Red Hat Compatible Kernel, the default IO scheduler is the 'cfq' scheduler. "
 http://oss.oracle.com/ol6/docs/RELEASE-NOTES-U2-en.html

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.

How to disable/setup autostart parameters for specified instance ?

Q: We have a 4-node RAC. I need to disable autostart of the DB on one node only.    How to do it and how to see autostart parameters, confir...