在linux系统中I/O 调度算法

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

在linux下面列出4种调度算法

CFQ (Completely Fair Queuing 完全公平的排队)(elevator=cfq):

这是默认算法,对于通用服务器来说通常是最好的选择。它试图均匀地分布对I/O带宽的访问。在多媒体应用, 总能保证audio、video及时从磁盘读取数据。但对于其他各类应用表现也很好。每个进程一个queue,每个queue按照上述规则进行merge和sort。进程之间round robin调度,每次执行一个进程的4个请求。可以调 queued 和 quantum 来优化

Deadline (elevator=deadline):

这个算法试图把每次请求的延迟降至最低。该算法重排了请求的顺序来提高性能。可以调队列的过期的读写过程,如 read_expire 和 write_expire 二个参数来控制多久内一定要读到数据,超时就放弃排序。比较合适小文件。还可以使用打开 front_merges 来进行合并邻近文件。

NOOP (elevator=noop):

   I/O请求被分配到队列,调度由硬件进行,只有当CPU时钟频率比较有限时进行。

Noop对于I/O不那么操心,对所有的I/O请求都用FIFO队列形式


你可能感兴趣的:(linux,服务器,video,多媒体,通用)