2013-06-20 82 views
1
$ sudo time -f '%c %w' chrt -f 99 ./ft 1234567890 
26 1 

我很好奇,为什么我的过程中一直不由自主地(因为时间片过期)上下文切换,甚至26倍,虽然我设置了调度与最高优先级99先进先出:FIFO调度仍处于关闭状态?

$ chrt -m 
SCHED_OTHER min/max priority : 0/0 
SCHED_FIFO min/max priority   : 1/99 
SCHED_RR min/max priority   : 1/99 
SCHED_BATCH min/max priority : 0/0 
SCHED_IDLE min/max priority   : 0/0 

$ uname -a 
Linux localhost.localdomain 2.6.32-358.2.1.el6.x86_64 #1 SMP Wed Mar 13 00:26:49 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 

任何想法?

在此先感谢。

回答

2

即使没有其他进程能够运行,调度程序仍然会在每个时间片运行一次。它会直接返回到您的流程中,但是您的流程在短时间内不会被重新计划。

FTRACE非常好,看看this页面,尤其是第3.3.1节。该页面正在讨论OMAP ARM设备,但它在其他Linux上运行良好。该浏览器会显示大量关于系统内部工作的信息!

+1

尽管3.10内核中新的[无定时器多任务](http://kernelnewbies.org/LinuxChanges#head-952efcf3f3e5ce7120213222805c1847429ae3fc)可能有助于解决这个问题。 – Joe

+0

@bazza,似乎在几分钟内上下文切换26次会少一点,如果操作系统将根据时间片换出我的进程。 – Hei

+0

@Joe - 那*看起来很有趣,谢谢! – bazza

相关问题