RHEL 的 I/O Scheduler 与 Database 的关系

转载 2007年09月14日 20:38:00

原贴:http://www.dbanotes.net/database/rhel_io_scheduler_database.html

RHEL 的 I/O Scheduler 与 Database 的关系

今天参加 AIX 的技术培训,听了一些关于 CPU 调度的算法,倒也都是些基本知识,回想讲课内容的时候倒让我想起 Linux Kernel 的 I/O Scheduler 来。

这篇 Choosing an I/O Scheduler for Red Hat Enterprise Linux 4 and the 2.6 Kernel 是必须的参考资料。相比 Linux 2.4 Kernel 的一种 IO 调度器,2.6 做了很多改进,共有四种 IO 调度器。

Deadline scheduler

Deadline scheduler 用 deadline 算法保证对于既定的 IO 请求以最小的延迟时间,从这一点理解,对于 DSS 应用应该会是很适合的。

Anticipatory scheduler

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

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

NOOP

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

那么如果跑数据库应用,那个更好一些呢? 我们看Choosing an I/O Scheduler for Red Hat Enterprise Linux 4 and the 2.6 Kernel一文中的测试结果:

scheduler.jpg

对于数据库应用, Anticipatory scheduler 的表现是最差的。Deadline 在 DSS 环境表现比 cfq 更好一点,而 cfq 综合来看表现更好一些。这也难怪 RHEL 4 默认的 IO 调度器设置为 cfq. 而 RHEL 4 比 RHEL 3,整体 IO 改进还是不小的。

哪一种方式更好? 很难说,每一种方式都有特定的应用对它是最适合的。就像上面的 as 好像表现比较差,如果是 CPU 密集型的应用呢?

Tip:
Q:如何确认当前用什么 IO 调度器?
A: 过滤 /var/log/boot.msg 文件, 查找 "io scheduler", 看到了么?

在 操作系统上可以查到的相关文档:
/usr/src/linux/Documentation/block/as-iosched.txt
/usr/src/linux/Documentation/block/deadline-iosched.txt

这篇文章应该只是一篇草稿...

--EOF--

| | Comments (1) | | Edit


<script type="text/javascript"><!-- google_ad_client = "pub-2198040673582211"; google_ad_output = "textlink"; google_ad_format = "ref_text"; google_cpa_choice = "CAAQhaT2_gEaCI52gVKP95-sKLGsuIEBMAA"; //--> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <script language="JavaScript1.1" src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-2198040673582211&amp;cpa_choice=CAAQhaT2_gEaCI52gVKP95-sKLGsuIEBMAA&amp;oe=utf-8&amp;dt=1189773276671&amp;lmt=1189604284&amp;format=ref_text&amp;output=textlink&amp;correlator=1189773276671&amp;url=http%3A%2F%2Fwww.dbanotes.net%2Fdatabase%2Frhel_io_scheduler_database.html&amp;region=_google_cpa_region_&amp;ref=http%3A%2F%2Fwww.dbanotes.net%2F&amp;cc=100&amp;ga_vid=1016995529.1189773277&amp;ga_sid=1189773277&amp;ga_hid=1000061946&amp;flash=9&amp;u_h=1024&amp;u_w=1280&amp;u_ah=874&amp;u_aw=1280&amp;u_cd=32&amp;u_tz=480&amp;u_his=1&amp;u_java=true" type="text/javascript"></script> Get Firefox with Google Toolbar for better browsing
<script type="text/javascript"><!-- google_ad_client = "pub-2198040673582211"; google_ad_output = "textlink"; google_ad_format = "ref_text"; google_cpa_choice = "CAAQidTQgAIaCEapPfRcsfp6KN2uuIEBMAA"; //--> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <script language="JavaScript1.1" src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-2198040673582211&amp;cpa_choice=CAAQidTQgAIaCEapPfRcsfp6KN2uuIEBMAA&amp;oe=utf-8&amp;dt=1189773277203&amp;lmt=1189604284&amp;prev_fmts=ref_text&amp;format=ref_text&amp;output=textlink&amp;correlator=1189773276671&amp;url=http%3A%2F%2Fwww.dbanotes.net%2Fdatabase%2Frhel_io_scheduler_database.html&amp;region=_google_cpa_region_&amp;ref=http%3A%2F%2Fwww.dbanotes.net%2F&amp;cc=100&amp;ga_vid=1016995529.1189773277&amp;ga_sid=1189773277&amp;ga_hid=1000061946&amp;flash=9&amp;u_h=1024&amp;u_w=1280&amp;u_ah=874&amp;u_aw=1280&amp;u_cd=32&amp;u_tz=480&amp;u_his=1&amp;u_java=true" type="text/javascript"></script> Generate revenue from your website. Google AdSense.


本文相关评论|Comments(1)

i-think 的评论:

对于10G的RAC环境下,如果使用默认的CFQ算法,在IO频繁的时候会碰上5041764的BUG,oracle的建议就是修改IO算法为:elevator=deadline 

相关文章推荐

KVM I/O slowness on RHEL 6

转载:http://www.ilsistemista.net/index.php/virtualization/11-kvm-io-slowness-on-rhel-6.html?limitstart...

Database Configuration and I/O Issues(1)

Database Configuration and I/O Issues. 数据库配置与I/O相关事项。 Objectvies: 1.List the advantages of di...

Need help with Database Scalability? Understand I/O

(shared from: http://highscalability.com/blog/2013/9/9/need-help-with-database-scalability-underst...

How to Tell if the I/O of the Database is Slow - 2

IO的类型: 平均响应时间直接关联到具体的IO类型: 1. 读或写 2. 单块或多块         单块IO,指一次只读一个块。例如,当一个session等待一个单块IO时,典型的等待事件就是“db...
  • bisal
  • bisal
  • 2013-10-22 18:19
  • 1697

Database I/O Systems

  • 2016-02-14 12:12
  • 3.42MB
  • 下载

I O各类文件流的特性详解 & 关联关系解析

I/O流之 各类流的特性及使用解析 一、I/O的文件和文件流体系总览(一)File类1、对文件的解析描述【引入】程序中的数据都是 存储在内存中, 集合、数组、变量 ,缺点:程序一关,数据丢失永久性存储...

浅析I/O处理过程与存储性能的关系

“性能”这个词可以说伴随着整个IT行业的发展,每次新的技术出现,从硬件到软件大多数情况下都围绕着性能提升而展开。“摩尔定理”指出CPU的处理速度每18个月会翻一番,但是进入21世纪的第二个十年来,似乎...

Greenplum Database Installation Master on RHEL 5

set /etc/sysctl.conf kernel.shmmax = 500000000 kernel.shmmni = 4096 kernel.shmall = 4000000000 kern...

在RHEL7 or OL7上安装oracle database 12c的要求

在RHEL7 or OL7上安装oracle database 12c的要求
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)