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. "

No comments:

Post a Comment

How to copy a file from ASM at host one to ASM at host twho ?

Because of archivelog gap there was the need to copy archive log file from primary Exadata   to standby Exadata. Primary Exadata archiv...