Far*_*eer 9 linux fork scheduling
Linux调度程序是否更喜欢fork()
在父进程之后运行子进程?
通常,forked进程会执行exec
某种类型,所以最好让子进程在父进程之前运行(以防止写入时复制).
我假设孩子exec
将在创建之后执行第一个操作.
我的假设(调度程序更喜欢子进程)是正确的.如果没有,为什么?如果是,是否有更多理由让孩子先行?
引用Linux编程接口(第525页)获得一般答案:
在a之后
fork()
,不确定哪个进程 - 父进程或子进程 - 接下来可以访问CPU.(在多处理器系统上,它们可以同时访问CPU.)
本书继续讨论内核版本的差异,并提到了CFS/Linux 2.6.32:
[...]自Linux 2.6.32以来,它再一次成为父级,默认情况下,它首先运行
fork()
.可以通过为Linux特定/proc/sys/kernel/sched_child_runs_first
文件指定非零值来更改此默认值.
尽管对此功能的未来存在一些顾虑,但CFS仍然存在此行为.看看CFS实现,似乎在孩子之前安排了父母.
你想要的方法是设置/proc/sys/kernel/sched_child_runs_first
一个非零值.
编辑: 此答案分析默认行为并将其与之比较sched_child_runs_first
.
归档时间: |
|
查看次数: |
1983 次 |
最近记录: |