很好的水平不适用于Linux
发布时间:2020-12-14 02:49:01 所属栏目:Linux 来源:网络整理
导读:我有一些高度浮点密集型进程,只做很少的I / O.一个称为“xspec”,它计算数值模型并每秒将浮点结果返回给主进程(通过stdout).它被剔在19层.我有另一个简单的过程“cpufloattest”,它只是在紧密循环中进行数值计算.它没有被剔除. 我有一个禁用超线程的4核i7系
我有一些高度浮点密集型进程,只做很少的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个用很少) 解决方法
我发现了导致这个问题的原因.这是由于CFS调度程序的“自动组”功能.如果我做
echo 0 > /proc/sys/kernel/sched_autogroup_enabled 然后一切都像你期望的那样.当好的0进程正在运行时,漂亮的19个进程将降至接近零的CPU使用率. 我将尝试确切地找到自动组合正在做什么来打破我的使用案例并更新这个答案. 编辑…我和IRC上的一些内核人员聊了聊,他们只是说我应该禁用它,如果它对我的工作负载不起作用,那只是一个Linus喜欢的疯狂补丁.我不确定为什么自动分组不喜欢我的工作量,但这个答案适用于遇到类似问题的人. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |