进程友好性(优先级)设置对Linux没有影响
我写了一个测试程序,它只包含一些无限循环
内部计算,并执行否 I / O操作.我尝试启动程序的两个实例,一个高 niceness值,另一个具有低niceness值: sudo nice -n 19 taskset 1 ./test sudo nice -n -20 taskset 1 ./test taskset命令确保两个程序在同一核心上执行. 解决方法
您看到的行为几乎可以肯定是因为Linux 2.6.38(2010年)中添加了自动组功能.据推测,当您描述运行这两个命令时,它们在不同的终端窗口中运行.如果你在同一个终端窗口中运行它们,那么你应该看到nice值有效.这个答案的其余部分详细阐述了这个故事.
内核提供了一种称为自动分组的功能,可以在多进程,CPU密集型工作负载(如构建具有大量并行构建过程的Linux内核(即make(1)-j标志)的情况下提高交互式桌面性能. 创建新会话时会创建新的自动组 启用自动分组时,自动组合的所有成员 假设有两个自动组竞争同一个CPU 漂亮的价值和团队安排 在调度非实时进程(例如,那些已调度的进程)时 如果启用了自动分组,那么所有线程都是 在组调度下,线程的nice值会产生效果 相反,对于(例如)鞋底的两个过程 如果要防止自动分组干扰此处所述的传统良好行为,可以禁用该功能 echo 0 > /proc/sys/kernel/sched_autogroup_enabled 请注意,这也会导致禁用自动组功能旨在提供的桌面交互性的好处(参见上文). 自动组很好的价值 可以通过查看进程的自动组成员资格 $cat /proc/1/autogroup /autogroup-1 nice 0 此文件还可用于修改分配的CPU带宽 autogroup nice设置与进程具有相同的含义很好的价值,但适用于CPU周期的分配autogroup作为一个整体,基于其他的相对好的值autogroups.对于自动组内的进程,CPU会循环它接收将是自动组的良好价值的产物(比较到其他autogroup)和过程的好价值(与…相比)同一自动组中的其他进程). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |