linux 内核调度器,Linux内核IO调度器简介和选择

e3863b3ef4c3f998ad388f840e7ff3a0.gif

I/O 调度算法再各个进程竞争磁盘I/O的时候担当了裁判的角色。他要求请求的次序和时机做最优化的处理,以求得尽可能最好的整体I/O性能。

下面列出4种调度算法:

CFQ (Completely Fair Queuing 完全公平的排队)(elevator=cfq): 这是默认算法,对于通用服务器来说通常是最好的选择。它试图均匀地分布对I/O带宽的访问。

Deadline (elevator=deadline): 这个算法试图把每次请求的延迟降至最低。该算法重排了请求的顺序来提高性能。

NOOP (elevator=noop): 这个算法实现了一个简单FIFO队列。他假定I/O请求由驱动程序或者设备做了优化或者重排了顺序(就像一个智能控制器完成的工作那样)。在有些SAN环境下,这个选择可能是最好选择。

Anticipatory (elevator=as): 这个算法推迟I/O请求,希望能对它们进行排序,获得最高的效率。对于桌面工作站来说,这个算法可能是一个不错的选择,但对服务器则很少会理想。

查询当前使用的IO调度器

cat /sys/block/{DEVICE-NAME}/queue/scheduler

例如:

cat /sys/block/sda/queue/scheduler

如何修改IO调度器

To set a specific scheduler, simply type the command as follows:

# echo {SCHEDULER-NAME} > /sys/block/{DEVICE-NAME}/queue/scheduler

For example, set noop scheduler, enter:

# echo noop > /sys/block/hda/queue/scheduler

也可以在引导的时候传递参数给内核

elevator=deadline

Debian lenny默认选择的CFQ调度器,不过据说DBServer上使用deadline会更好。

scheduler.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux内核IO(Input/Output)是指Linux操作系统中负责处理输入和输出设备的模块。它提供了统一的接口和机制,让应用程序可以与硬件设备进行通信。 Linux内核IO模块包括以下几个重要组件: 1. 设备驱动程序:设备驱动程序是连接硬件设备和操作系统的桥梁。它将硬件设备的特定操作转化为通用的IO接口,使得应用程序可以通过统一的接口访问设备。Linux内核提供了丰富的设备驱动程序,支持各种硬件设备,如磁盘驱动、网络驱动等。 2. 文件系统:Linux内核支持多种文件系统,如ext4、NTFS、FAT等。文件系统提供了对存储设备的访问和管理,包括文件的创建、读取、写入以及目录的管理等。应用程序可以通过文件系统接口进行文件的IO操作。 3. IO调度IO调度是负责管理硬盘IO请求的模块。它根据一定的策略对IO请求进行排序和调度,以提高磁盘的性能和效率。常见的IO调度算法有CFQ(Completely Fair Queuing)、Deadline、NOOP等。 4. 块设备层:块设备层是Linux内核中处理块设备(如硬盘)IO的模块。它提供了对块设备的抽象和管理,包括块设备的注册、IO请求的处理等。应用程序可以通过块设备层接口进行块设备的读写操作。 总的来说,Linux内核IO模块是一个庞大而复杂的系统,它提供了丰富的接口和机制,使得应用程序可以方便地与各种硬件设备进行通信和交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值