自定义Redhat Linux的IO调度机制

原文来自 https://opvps.com/linux-io-scheduler/

参考文章
http://www.redhat.com/magazine/008jun05/features/schedulers
http://www.dbanotes.net/database/rhelioscheduler_database.html

cat /sys/block/sda/queue/scheduler ##查看系统使用的IO调度机制
noop anticipatory deadline [cfq]

其中用[ ]起来的,表示目前系统正使用的IO调弃机制,当前系统支持noop anticipatory deadline 和cfq

在2.6的内核中共计有4种IO调度机制:
1.Deadline scheduler Deadline scheduler 用 deadline 算法保证对于既定的 IO 请求以最小的延迟时间,从这一点理解,对于 DSS 应用应该会是很适合的。

2.Anticipatory scheduler(as) 曾经一度是 Linux 2.6 Kernel 的 IO scheduler 。Anticipatory 的中文含义是”预料的, 预想的”, 这个词的确揭示了这个算法的特点,简单的说,有个 IO 发生的时候,如果又有进程请求 IO 操作,则将产生一个默认的 6 毫秒猜测时间,猜测下一个 进程请求 IO 是要干什么的。这对于随即读取会造成比较大的延时,对数据库应用很糟糕,而对于 Web Server 等则会表现的不错。这个算法也可以简单理解为面向低速磁盘的,因为那个”猜测”实际上的目的是为了减少磁头移动时间。

3.Completely Fair Queuing 虽然这世界上没有完全公平的事情,但是并不妨碍开源爱好者们设计一个完全公平的 IO 调度算法。Completely Fair Queuing (cfq, 完全公平队列) 在 2.6.18 取代了 Anticipatory scheduler 成为 Linux Kernel 默认的 IO scheduler 。cfq 对每个进程维护一个 IO 队列,各个进程发来的 IO 请求会被 cfq 以轮循方式处理。也就是对每一个 IO 请求都是公平的。这使得 cfq 很适合离散读的应用(eg: OLTP DB)。我所知道的企业级 Linux 发行版中,SuSE Linux 好像是最先默认用 cfq 的.

4.NOOP Noop 对于 IO 不那么操心,对所有的 IO请求都用 FIFO 队列形式处理,默认认为 IO 不会存在性能问题。这也使得 CPU 也不用那么操心。当然,对于复杂一点的应用类型,使用这个调度器,用户自己就会非常操心。

在Redhat Linux 4默认设置为elevator=cfq:

可以通过修改/boot/grub/menu.lst来自定义IO,比说我将因默认的IO调度机制改为deadline

vi /boot/grub/menu.lst


default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux AS (2.6.9-42.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.ELsmp ro root=LABEL=/ elevator=deadline rhgb quiet
initrd /initrd-2.6.9-42.ELsmp.img
title Red Hat Enterprise Linux AS-up (2.6.9-42.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.EL ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.9-42.EL.img

也可以通过输入echo cfq >/sys/block/sda/queue/scheduler 修改

时间: 2024-08-12 07:49:26

自定义Redhat Linux的IO调度机制的相关文章

从一道面试题分析Linux进程+IO缓冲区机制

父子孙-两次FORK,2的三次方 下面的程序打印出多少个"*"    (小弟今年遇到的腾讯一面面试题,据说其他公司的面试题中也有这个题目) [cpp] view plaincopyprint? #include <unistd.h>   #include <stdio.h>      int main()   {       for (int i = 0; i < 2; i++)       {           fork();           pr

在 RedHat Linux 上做性能调优

在 RedHat Linux 上做性能调优 性能调优的目的是提高系统性能,减少电力消耗,或者减轻某个应用对系统中其它应用的影响.但是如果贸然地,没有适当的手段进行系统调优,那可能会产生负面效果. 如果我们有系统有计划地进行性能调优,那么它就会成为严谨的科学探索而不是随心所欲的艺术行为. 具体方法 首先我们需要弄明白"正常"的系统性能情形是什么样的. 查找潜在的性能问题并进行参数调优来修复.观察这些调整对系统的影响并决定是否确认保持这种调整或者恢复到调整前的状态. 概要: 收集数据,建立

RedHat Linux服务器安全配置细节

1.概述 Linux服务器版本:RedHat Linux AS 2.1 对于开放式的操作系统---Linux,系统的安全设定包括系统服务最小化.限制远程存取.隐藏重要资料.修补安全漏洞.采用安全工具以及经常性的安全检查等. 本文主要从用户设置.如何开放服务.系统优化等方面进行系统的安全配置,以到达使Linux服务器更安全.稳定. 2.用户管理 在Linux系统中,用户帐号是用户的身份标志,它由用户名和用户口令组成. 系统将输入的用户名存放在/etc/passwd文件中,而将输入的口令以加密的形式

linux异步IO浅析

知道异步IO已经很久了,但是直到最近,才真正用它来解决一下实际问题(在一个CPU密集型的应用中,有一些需要处理的数据可能放在磁盘上.预先知道这些数据的位置,所以预先发起异步IO读请求.等到真正需要用到这些数据的时候,再等待异步IO完成.使用了异步IO,在发起IO请求到实际使用数据这段时间内,程序还可以继续做其他事情). 假此机会,也顺便研究了一下linux下的异步IO的实现. linux下主要有两套异步IO,一套是由glibc实现的(以下称之为glibc版本).一套是由linux内核实现,并由l

RedHat Linux下通过JDBC连接MySQL出现的一个问题

环境 RedHat Linux 9 + VWWare 8.0 + SSH 3.2.9 + Putty 0.62 + MySQL 3.2 问题 通过JDBC连接MySQL出现 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link fa

Linux内核驱动fsync机制实现图解

  在Linux内核中的IO模型基本分为4类: 1.同步阻塞I/O 2.同步非阻塞I/O 3.异步阻塞I/O 4.异步非阻塞I/O 同步:应用显式地通过函数访问数据,在此函数返回时就会得到结果(成功或失败). 异步:应用会显示地通过函数提出访问或关注申请.数据到达时,硬件和驱动会通知应用,此时代码一般不在读写访问函数中,而是得到通知了再去有目的的访问数据. 阻塞:在等待数据的过程中会休眠在此处,而非阻塞即函数不休眠立即返回,可执行接下来的代码. 对于这4种机制,在<深入Linux设备驱动程序内核

如何更改 Linux I/O 调度器来调整性能

为了从 Linux 服务器榨取尽可能多的性能,请了解如何更改 I/O 调度器以满足你的需求. Linux I/O 调度器Linux I/O scheduler控制内核提交读写请求给磁盘的方式.自从 2.6 内核以来,管理员已经能够更改这个调度器,所以他们可以自定义他们的平台以完全适合他们的需要. 有三个调度器可供选择,每个调度器都有其优点.这些调度器是: CFQ (Completely Fair Scheduler完全公平调度器)(cfq) :它是许多 Linux 发行版的默认调度器:它将由进程

Linux内核抢占实现机制分析【转】

Linux内核抢占实现机制分析  转自:http://blog.chinaunix.net/uid-24227137-id-3050754.html [摘要]本文详解了Linux内核抢占实现机制.首先介绍了内核抢占和用户抢占的概念和区别,接着分析了不可抢占内核的特点及实时系统中实现内核抢占的必要性.然后分析了禁止内核抢占的情况和内核抢占的时机,最后介绍了实现抢占内核所做的改动以及何时需要重新调度.   [关键字]内核抢占,用户抢占,中断, 实时性,自旋锁,抢占时机,调度时机,schedule,p

大话Linux内核中锁机制之RCU、大内核锁

大话Linux内核中锁机制之RCU.大内核锁 在上篇博文中笔者分析了关于完成量和互斥量的使用以及一些经典的问题,下面笔者将在本篇博文中重点分析有关RCU机制的相关内容以及介绍目前已被淘汰出内核的大内核锁(BKL).文章的最后对<大话Linux内核中锁机制>系列博文进行了总结,并提出关于目前Linux内核中提供的锁机制的一些基本使用观点. 十.RCU机制 本节将讨论另一种重要锁机制:RCU锁机制.首先我们从概念上理解下什么叫RCU,其中读(Read):读者不需要获得任何锁就可访问RCU保护的临界