htop - 什么是任务、线程和运行?

htop - 什么是任务、线程和运行?

Htop 给出以下输出:

在此处输入图片描述

最近几分钟内价值观没有改变。

所以我想知道“任务”,“线程”和“运行”之间有什么区别?

我看了看这个页面:http://www.deonsworld.co.za/2012/12/20/understanding-and-using-htop-monitor-system-resources/但它跳过了这个特定的部分:(

根据我对服务器使用情况的了解,我会说:

  • 我们有 10 个流程,分为 59 个任务和 160 个线程......

我不太明白它们之间有什么区别 :-/

有什么解释吗?

这也很奇怪,因为有几十个过程:

在此处输入图片描述

答案1

你几乎说对了。:)

可能会列出数十个进程(或任务),但实际上只有 10 个“线程”在 CPU 上“运行”。其余进程和线程处于“休眠”状态,直到操作系统调度它们使用 CPU。

因此,共有 59 个任务,其中一些被分解为 160 个线程,但只有 10 个线程在 CPU 上运行。

答案2

htop的任务只是过程。它们在主窗口中以白色列出(按Shift-H隐藏用户进程线程即绿色)。要对它们进行计数,ps您应该执行类似 的操作ps axjf | grep --invert-match '^[ ]*2 ' | wc --lines,即您必须从ps输出中排除内核线程(它们的父级是kthreadd,因此它们的 PPID 是 2)。

另外,您还可以源代码,任务数被算作所有进程和线程数减去内核线程数减去用户空间线程数。

running计算任务数量通过扫描/proc,并且在任何时候都不能大于系统中 CPU 核心的总数(因此在低端系统上这个数字相当没用;例如,我几乎总是在我的双核笔记本电脑上看到“2”)。

相关内容