怎么工作顺利?


20

sched_setscheduler说:

所有调度都是抢占式的:如果具有较高静态优先级的进程可以运行,那么当前正在运行的进程将被抢占并返回到其静态优先级的等待列表。

setpriority

每当系统上有其他更高优先级的负载时,这都会导致极低的良好值(+19)真正为进程提供很少的CPU,并使较高的良好值(-20)为需要它的应用程序提供大部分CPU

那么,改变尼斯值将如何影响程序的执行?它与RT调度类似(具有较高尼斯值的程序将中断具有较低尼斯值的程序)吗?


互联网上的所有信息都是如何使用nice以及如何更改进程的优先级。没有链接说明具有不同优先级的流程的确切工作方式。我什至找不到源代码。

Answers:


24

特定进程收到的处理器时间的比例由该进程与其他可运行进程之间的相对良好度确定。

Linux 完全公平调度程序(CFS)根据精确度计算权重。重量大致等于1024 / (1.25 ^ nice_value)。随着nice值的减小,权重呈指数增长。分配给该过程的时间片与该过程的权重除以所有可运行过程的总权重成正比。CFS的实现在中kernel/sched/fair.c

CFS 在计划持续时间内具有目标等待时间。较小的目标等待时间会产生更好的交互性,但是随着目标等待时间的减少,交换开销也会增加,从而降低了总体吞吐量。

例如,假设目标等待时间为20毫秒,并且两个可运行的进程具有相同的效果,则这两个进程将分别运行10毫秒,然后被抢占,以优先于另一个进程。如果有10个相等的进程,则每个进程将运行2毫秒。

现在考虑两个进程,一个进程的优先级为0(默认值),另一个进程的优先级为5。相应权重之间的比例差大约为1/3,这意味着优先级较高的进程收到的时间片约为15毫秒而优先级较低的进程接收的时间片为5毫秒。

最后考虑两个过程,其nice值分别为5和10。尽管在这种情况下绝对好感更大,但是好感值之间的相对差异与前面的示例相同,从而产生了相同的时间片分割。


只是我要找的东西。谢谢!后来我发现这篇文章详细解释了所有内容,但并没有解释您刚才写的内容。
2013年

我有些不明白.. vruntime的作用是什么?
秋季

@Surferonthefall vruntime是CFS内部机制,用于跟踪分配的许多CPU时间进程。这个问题是关于用户空间可见的值。如果您对CFS内部有疑问,而在其他地方找不到答案请提出一个新问题
Thomas Nyman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.