修改内核调度程序以为特定程序提供更长的时间片

时间:2012-07-15 04:43:36

标签: linux multithreading linux-kernel scheduled-tasks ipc

我正在为Ubuntu发行版编写一个程序,我希望在运行时有更大的时间片。我知道弄乱时间片可能会减慢我的计算机响应速度,但我希望我的计算机能够运行专用的服务/进程。理想情况下,当父进程被销毁时,调度程序将恢复正常。我怎么做到这一点?感谢。

2 个答案:

答案 0 :(得分:3)

nice对新版Linux中的时间片没有任何重大影响(在旧版本中,降低优先级实际上减少了时间片,与批处理所需的时间片相反)。

您可以使用“schedtool -B PID”(可能需要安装)将一个或多个PID的调度策略设置为BATCH模式,这会将其时间片从默认值增加,但也会降低其优先级相对于其他的。根据man条目,对于对缓存持久性敏感的CPU密集型作业,这可以将性能提高高达300%。

但是我发现无法直接更改系统使用的默认时间片。

答案 1 :(得分:2)

您希望使用 nice(1)和类似工具来设置进程优先级 - 可能是实时调度,但我不知道它在linux中的实现情况。

正面“好”(最多20个)意味着降低任务的优先级(因此减少时间片),而负值(downto -19)则使过程更重要。

对于I / O优先级还有 ionice ,根据使用情况可能会引起关注。