nice越高,意味着可以抢占低优先级的进程;另外意味着有更多运行时间。
CFS决定下一个调度的进程是靠虚拟时间来决定。
虚拟时间(virtual time)=k*进程累计运行的物理时间/权重。
权重由nice来决定。
所以进程调度的核心是追求虚拟时间相等。
对于CPU消耗型的进程,进程累计运行时间长,虚拟时间长,所以被调度的可能性降低;
对于IO消耗型的进程,进程累计运行时间短,而且nice小,所以虚拟时间短,被调度的可能性大。
另外一种说法:
调度的目标有两个:一是CPU不要闲着;二是用户体验要好。实际上要将两者折中。
normal的进程具有礼让精神,都很nice.
linux schedule最终是各种利益的均衡。包括实时线程和普通进程和线程。