如何让Ubuntu中每个CPU核心上运行所有进程?

如何让Ubuntu中每个CPU核心上运行所有进程?

我正在使用 Ubuntu14.04 服务器,它有 48 个 CPU 核心。我从 sar 信息中看到一个核心的 CPU 使用率很高。所以我想知道该核心上正在运行哪些进程。我应该如何让 Ubuntu 中每个 CPU 核心上运行所有进程?

答案1

您可以使用 来做到这一点ps -aeF,请参阅C专栏

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0  2015 ?        00:08:07 /sbin/init

或者使用htop,将其配置为显示该PROCESSOR列,

在此输入图像描述

要设置CPU关联性,您可以使用任务集命令

答案2

Normaltop也可以显示上次使用的CPU。

您必须f在查看主屏幕时按 才能进入“字段管理”屏幕,向下箭头P = Last Used CPU (SMP)并使用d或 空格将其打开。按q或退出可返回主屏幕。

如果您不喜欢输出最右侧的 P 列,您可能需要在“字段管理”屏幕中将 P 列向上移动。

答案3

意识到这已经过时了,但是对于那些想要通过 ps 命令查看哪些进程正在使用哪个核心的人来说,您想要的列是 psr。 C是CPU利用率。

核心编号为 0-N。您可以通过以下方式查看核心详细信息:

cat /proc/cpuinfo

假设您有 4 个核心,并且您希望查看使用第 4 个核心的所有进程:

CORENUM=3; ps -e -o pid,psr,cpu,cmd | grep -E  "^[[:space:]][[:digit:]]+[[:space:]]+${CORENUM}"

分解上述命令。

创建变量“CORENUM”并将其设置为“3”(第四个核心)。以分号结束语句(您可以在此处按 Enter 键)。

运行 ps 命令,其中: -e = 选择所有进程 -o = 用户定义的格式。它由一个或多个以逗号分隔的格式说明符组成。这些可以在 ps man (“man ps”) 页面的标准格式说明符部分找到

(使用正斜杠在手册页中进行搜索)。

要查看它们的原始列表,您可以输入“L”选项(不带“-”):

ps L

因此,这里我的用户定义格式列出了进程 ID,然后是处理器,然后是 CPU 利用率,最后是命令。

然后将其通过管道传输到 grep,其中我使用 -E 选项来启用扩展 regx,以尝试准确地仅输出与 CORENUM 变量中存储的 cpu 编号关联的那些进程。

相关内容