neodreamerus 发表于 2016-03-03 13:47

linux下一个程序相连的两次被调度执行的间隔是多长时间?

linux下一个程序相连的两次被调度执行的间隔是多长时间?一直对这个没有任何概念。

假设一个linux系统上有50个进程在运行,除了一个进程是所谓的CPU hog外(代码如下),其余进程的大部分时间是空闲状态。
这种情况下,cpu hog 某次被调度执行,无间断的运行了n条指令后被调度走了,此时刻为t0, 过了一会,调度器将cpu hog再次调度进来执行,此时刻为t1.
t1-t0 对目前的常见的PC来说大概是个什么量级的数?
int main() {

    while(1);
    return 0
}

Tinnal 发表于 2016-03-13 10:52

这种情况一,CPU应该都被它占了。大部份情况下是不会切换它出去的。切换出去的话就看切到准头上了,如是是FIFO,那就得等FIFO主动退出罗。如果切到另一个睡醒的CFS,是可以从CFS的代码上算出来个大概值的。如果你只是想看一下,不想去深入了解,可以直接通过ftrace功能,测出来。

mournjust 发表于 2016-03-18 17:30

对于while(1),不会主动放弃CPU,只能被抢占,所以它会跑满分配给它的时间。
关于CFS,每一个进程的最大时间跟它的优先级以及当前CPU上的runnable的进程有关。
页: [1]
查看完整版本: linux下一个程序相连的两次被调度执行的间隔是多长时间?