ps aux 进程状态为 I (大写i)

系统使用 ps aux 查看进程时,发现有状态为 I (大写i) 的进程,暂无发现由于这个状态导致的问题。
在这里插入图片描述

进程状态“I”,表示task_idle,即空闲的任务(进程),这个是在比较新版的内核中新增的状态,在原生的kernel中最早出现于4.14-rc3版本。
在这里插入图片描述
以往系统设计,使用 TASK_INTERRUPTIBLE 来使 kthreads 空闲并等待“工作”,因为 TASK_UNINTERRUPTIBLE 会导致负载增加。但让所有空闲的 kthread 都也接入负载计算,这显得不合理。

因为空闲时 kthreads 的所有信号都被屏蔽,大多数情况下这样的设计及工作机制是没有问题的。但是有一些站点会导致此问题,必须使用 TASK_UNINTERRUPTIBLE,除了 loadavg 负载计算。

所以在后面较新版本的内核中,新增了一补丁,提供了 TASK_NOLOAD ,与 TASK_UNINTERRUPTIBLE 结合使用时,避免了 loadavg 清算。在实际的使用场景中,大多数站点会存在 kthreads 想要闲置,等待工作的循环,因此也引入了TASK_IDLE。

像 ps 和 top 这些工具,因为是从 /proc 中获取到进程的状态信息,所以在更新内核之后,可以直接显示出这个新的状态。

参考链接:
https://unix.stackexchange.com/questions/462098/unrecognized-process-state-output-in-ps-command
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=80ed87c8a9ca0cad7ca66cf3bbdfb17559a66dcf
https://unix.stackexchange.com/questions/361245/what-does-an-idle-cpu-process-do
https://kernelnewbies.org/Linux_5.1
https://elixir.bootlin.com/linux/v4.14-rc3/source/fs/proc/array.c
http://man7.org/linux/man-pages/man1/ps.1.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值