代码之家  ›  专栏  ›  技术社区  ›  Tim Post Samir J M Araujo

关于Linux SCHED_FIFO和SCHED_RR

  •  11
  • Tim Post Samir J M Araujo  · 技术社区  · 17 年前

    我正在编写一个非常小的守护进程,即使系统处于严重压力下,它也必须保持响应。我正在研究SCHED_FIFO和SCHED_RR在调度方面的差异,并试图确定合理的优先级。

    我的程序在3k以下分配(并使用mlockall()),它将大约600字节写入xenbus,然后休眠,但我无法确定实际写入数据需要多少时间(毫秒)。。因为写入的内容取决于配置文件。

    提前感谢您的建议/解释。

    4 回复  |  直到 16 年前
        1
  •  10
  •   Norman Ramsey    17 年前

    臭名昭著的 pchdtvr 捕获数字电视信号的程序使用 SCHED_FIFO

    这个程序臭名昭著,因为它是在GPL和作者的指导下发布的 tried to revoke the GPL retroactively http://frequal.com/pmn/pchdtvr.html .

        2
  •  7
  •   Alex    15 年前

    SCHED_RR可以被时间量(给要执行的进程的延迟)抢占。

    它们都是基于linux的调度器的“实时”优先级。

        3
  •  2
  •   Johannes Schaub - litb    17 年前

    我不是排程计划的专家,但看看

    man sched_setscheduler
    

    SCHED_FIFO进程一直运行,直到它被I/O请求阻塞、被更高优先级的进程抢占或调用SCHED_yield(2)。

    注意不要锁定你的系统。我个人会做一些实证测试,看看什么样的优先级最合适,以及它们的行为如何。

        4
  •  2
  •   MarkR    17 年前

    如果您的所有其他任务都使用标准调度程序,则没有区别;SCHED_FIFO和SCHED_RR只会相互影响这些任务的调度。

    所以在一个正常的系统上,这没有什么区别。FIFO是最容易理解的,所以我想应该使用它。

    如果您有多个优先级不同的任务,如果它们都准备好运行(并且只有一个CPU内核),则只会运行优先级较高的任务