zoukankan      html  css  js  c++  java
  • Linux I/O调度器

    Linux I/O调度策略

    目前Linux主要提供三种IO调度策略:CFQ(Completely Fair Queue,完全公平队列)、DEADLINE和NOOP(No operation),其中:

    • CFQ:按照IO请求的地址进行排序,而不是按照先来后到的顺序来进行响应,同时对I/O请求进行合并。(CFQ 为所有进程尽量分配等量的带宽,适合于桌面多任务及多媒体应用。)
    • Deadline:DEADLINE算法是基于CFQ实现的,除CFQ原有机制外,它新增超时机制,避免IO饿死的极端情况,同时还对读写请求分别增加了FIFO队列
            FIFO(Read) > FIFO(Write) > CFQ。(DeadLine是一种以提高机械硬盘吞吐量为思考出发点的调度算法,适合业务比较单一并且I/O压力比较重的业务,比如Web服务器,数据库应用等。)
    • NOOP:该算法不会对I/O请求进行排序,只会对I/O请求进行合并。(NOOP 对于闪存设备和嵌入式系统是最好的选择。对于固态硬盘来说使用NOOP是最好的,DeadLine次之,而CFQ效率最低。)

    其中,CFQ和DEADLINE主要针对的是机械盘设计的,其对IO请求进行地址重排,可以尽量减少磁盘旋转次数。但对于固态盘,这种机制增加了IO请求在IO队列中的开销。所以,

    • SSD推荐使用NOOP。因为它无需移动电子元件,I/O重排对其是一种不必要的开销,不适合CFQ和Deadline。
    • HDD使用Deadline或CFQ。这调度策略不会有明显性能差异,但在I/O压力较大情况下,CFQ会导致部分进程I/O延迟过高。

    查看Linux系统的 I/O调度器

    查看系统支持的I/O调度器

    查看Linux系统的I/O调度器一般分成两个部分,一个是查看Linux系统整体使用的I/O调度器,另一个是查看某磁盘使用的I/O调度器。

    # dmesg | grep -i scheduler
    [    1.508820] io scheduler noop registered
    [    1.508827] io scheduler deadline registered
    [    1.508850] io scheduler cfq registered (default)

    查看某块硬盘使用的I/O调度器

    # cat /sys/block/sda/queue/scheduler
    noop deadline [cfq]

    修改磁盘的I/O调度器

    Linux下更改的I/O调度器很简单,不需要更新内核,无需重启计算机,可以使用shell命令修改

    #其中,sdx设置为实际SSD设备
    sudo echo noop > /sys/block/sdx/queue/scheduler
  • 相关阅读:
    ionic准备之angular基础——dom操作相关(6)
    ionic准备之angular基础——$watch,$apply,$timeout方法(5)
    ionic准备之angular基础——run方法(4)
    ionic准备之angular基础——继承(3)
    开发ionic准备之安卓模拟器设置(2)
    创建你的第一个ionic+cordova应用(1)
    C#nameof用法
    C#中使用goto
    MySQL-解决 Table'performance_schema.session_variables' doesn't exist 问题
    dp方程
  • 原文地址:https://www.cnblogs.com/abcdef/p/13341782.html
Copyright © 2011-2022 走看看