我有一些高度浮点密集型进程,只做很少的I / O.一个称为“xspec”,它计算数值模型并每秒将浮点结果返回给主进程(通过stdout).它被剔在19层.我有另一个简单的过程“cpufloattest”,它只是在紧密循环中进行数值计算.它没有被剔除.
我有一个禁用超线程的4核i7系统.我已经开始了每种类型的流程中的4个.为什么Linux调度程序(Linux 3.4.2)没有正确限制niced进程占用的cpu时间?
cpu(s): 56.2%us,1.0%sy,41.8%ni,0.0%id,0.0%wa,0.9%hi,0.1%si,0.0%st Mem: 12297620k total,12147472k used,150148k free,831564k buffers Swap: 2104508k total,71172k used,2033336k free,4753956k cached PID USER PR NI VIRT RES SHR S %cpu %MEM TIME+ COMMAND 32399 jss 20 0 44728 32m 772 R 62.7 0.3 4:17.93 cpufloattest 32400 jss 20 0 44728 32m 744 R 53.1 0.3 4:14.17 cpufloattest 32402 jss 20 0 44728 32m 744 R 51.1 0.3 4:14.09 cpufloattest 32398 jss 20 0 44728 32m 744 R 48.8 0.3 4:15.44 cpufloattest 3989 jss 39 19 1725m 690m 7744 R 44.1 5.8 1459:59 xspec 3981 jss 39 19 1725m 689m 7744 R 42.1 5.7 1459:34 xspec 3985 jss 39 19 1725m 689m 7744 R 42.1 5.7 1460:51 xspec 3993 jss 39 19 1725m 691m 7744 R 38.8 5.8 1458:24 xspec
如果我启动了8个cpufloattest进程,调度程序会按照我的预期进行操作,其中4个进行处理(即4个用大部分cpu,4个用很少)