【问题标题】:Using 2 different scheduling policies in the same project在同一个项目中使用 2 种不同的调度策略
【发布时间】:2012-02-27 05:08:47
【问题描述】:

在嵌入式项目中,我们在决定使用哪种调度策略时面临困难。对于某些要通过的测试用例,我们需要使用SCHED_OTHER,而对于其他一些测试用例,我们需要使用SCHED_RR。但是如果我们为某些任务设置SCHED_RR,其余为SCHED_OTHER,所有测试用例都通过了。这是否合法,在同一个项目中使用两种策略是否有任何额外的副作用?

【问题讨论】:

  • 为了更清楚我的查询,我有服务任务、解释器任务等。他们将通过 FrontPanel 完成从用户那里获取输入的工作,并对提供的步骤进行必要的执行。如果我设置策略 SCHED_OTHER 自动运行案例,例如自动从前面板获取所有输入并连续执行其任务超过 5 小时将失败。但是,如果我将该策略设置为 SCHED_RR,那么它就会通过。由于 Round Robin 对高优先级任务给予了一定的重视,这可能会运行。但是对于此政策,在某些情况下,我手动提供的输入不被接受。帮助

标签: linux-kernel posix scheduling posix-api


【解决方案1】:

我假设您在谈论 Linux?那么是的,让一些任务使用 SCHED_RR 运行而其他任务使用 SCHED_OTHER 运行是完全可以接受的。

请注意,SCHED_RR 任务总是先于 SCHED_OTHER 任务运行。因此,如果您将任务设置为 SCHED_RR,您的测试运行得更好也就不足为奇了。需要注意的是,您的 SCHED_RR 任务可能会使用 100% 的 CPU,并且会饿死 SCHED_OTHER 任务。当您说某些输入被丢弃时,可能会发生这种情况。

迈克尔

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    相关资源
    最近更新 更多