正在运行的进程数显示在顶部

正在运行的进程数显示在顶部

我在 (1) 中显示的“正在运行”字段中看到的通常最大数字top是系统中安装的逻辑 CPU 的数量。但是,我观察到,在 Ubuntu 10.04 下(在其他版本中未检查),有时top(1) 显示运行的进程数量超过了我提到的限制。

例如,是什么导致在单核系统中显示 2 个正在运行的进程?

答案1

顶部的“正在运行”字段不显示同时运行的任务数,它显示正在运行的任务数可运行,即竞争 CPU 访问权限的任务数量。

如果 top 可以获取单个时间片内的所有系统信息,那么“正在运行”字段就是状态(S列)显示的任务数量R(同样,R这里常说的意思是“正在运行”,但这实际上意味着“可运行”) “ 如上)。在实践中,数字可能不匹配,因为 top 逐一获取每个任务的信息,并且某些可运行任务在完成时可能已经进入睡眠状态,反之亦然。 (top 的某些实现可能只是对具有状态的任务进行计数R以计算“正在运行”字段;然后数字将是准确的。)

请注意,当 top 收集其信息时,始终有一个可运行的任务,即 top 本身。如果您看到一个可运行的任务,则意味着没有其他进程正在争用 CPU 时间。

答案2

也许是超线程。

请注意,top 的手册页显示:

显示为正在运行的任务应该更正确地被认为是“准备运行”——它们的 task_struct 简单地表示在 Linux 运行队列上。即使没有真正的 SMP 机器,您也可能会看到许多处于此状态的任务,具体取决于顶部的延迟间隔和好值。

相关内容