我正在使用 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 编号关联的那些进程。