linux的 对进程的影响,进程友好性(优先级)设置对Linux没有影响

您看到的行为几乎可以肯定是因为Linux 2.6.38(2010年)中添加了自动组功能.据推测,当您描述运行这两个命令时,它们在不同的终端窗口中运行.如果你在同一个终端窗口中运行它们,那么你应该看到nice值有效.这个答案的其余部分详细阐述了这个故事.

内核提供了一种称为自动分组的功能,可以在多进程,cpu密集型工作负载(如构建具有大量并行构建过程的Linux内核(即make(1)-j标志)的情况下提高交互式桌面性能.

创建新会话时会创建新的自动组

通过setsid(2);例如,当启动新的终端窗口时会发生这种情况. fork(2)创建的新进程继承了它

父母的自动组成员资格.因此,一个过程中的所有过程

session是同一个autogroup的成员.

启用自动分组时,自动组合的所有成员

被放置在相同的内核调度程序“任务组”中. Linux内核调度程序采用一种均衡分布的算法

cpu跨任务组循环.可以通过以下示例描述此对交互式桌面性能的好处.

假设有两个自动组竞争同一个cpu

(即,假定单个cpu系统或使用任务集(1)

将所有进程限制在SMP系统上的同一cpu中).

第一组包含来自内核的十个cpu绑定进程

build以make -j10开头.另一个包含一个

cpu绑定过程:视频播放器.自动分组的效果是

这两组将分别接收一半的cpu周期.那是,

视频播放器将获得50%的cpu周期,而不是

只有9%的周期,这可能会导致视频质量下降

回放. SMP系统的情况比较复杂,但是

一般效果是相同的:调度程序分配cpu周期

跨任务组,以便包含大的自动组

cpu绑定进程的数量最终不会占用cpu周期

以牺牲系统上的其他工作为代价.

漂亮的价值和团队安排

在调度非实时进程(例如,那些已调度的进程)时

在默认的SCHED_OTHER政策下),

调度程序采用称为“组调度”的技术,在该技术下,线程被安排在“任务组”中.

任务组是在各种情况下形成的,相关案例在这里是自动分组.

如果启用了自动分组,那么所有线程都是

(隐含地)放在一个自动组中(即同一个会话,如

由setsid(2)创建)形成一个任务组.每个新的自动组都是

因此是一个单独的任务组.

在组调度下,线程的nice值会产生效果

调度决策仅相对于同一个中的其他线程

任务组.这有一些令人惊讶的后果

UNIX系统上很好的值的传统语义.特别是,如果启用了自动分组(这是各种Linux发行版中的默认设置),那么

在一个过程中使用nice(1)会产生影响

仅用于相对于在其中执行的其他进程的调度

相同的会话(通常:相同的终端窗口).

相反,对于(例如)鞋底的两个过程

不同会话中的cpu绑定进程(例如,不同的终端

windows,每个作业都绑定到不同的autogroup),

在其中一个会话中修改进程的nice值

对调度程序相对于调度的决策没有影响

在另一个会话中处理.这可能是您看到的情景,但您没有明确提到使用两个终端窗口.

如果要防止自动分组干扰此处所述的传统良好行为,可以禁用该功能

echo 0 > /proc/sys/kernel/sched_autogroup_enabled

请注意,这也会导致禁用自动组功能旨在提供的桌面交互性的好处(参见上文).

自动组很好的价值

可以通过查看进程的自动组成员资格

文件/ proc / [pid] / autogroup:

$cat /proc/1/autogroup

/autogroup-1 nice 0

此文件还可用于修改分配的cpu带宽

到一个自动组.这是通过在“好”中写一个数字来完成的

范围到文件以设置自动组的好值.允许的

范围从19(低优先级)到-20(高优先级).

autogroup nice设置与进程具有相同的含义

很好的价值,但适用于cpu周期的分配

autogroup作为一个整体,基于其他的相对好的值

autogroups.对于自动组内的进程,cpu会循环它

接收将是自动组的良好价值的产物(比较

到其他autogroup)和过程的好价值(与…相比)

同一自动组中的其他进程).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行和易用,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值