您的位置:首页 >如何用cpustat检查CPU亲和性
发布于2026-05-20 阅读(0)
扫一扫,手机访问
在Linux系统性能调优和排查问题时,CPU亲和性(CPU Affinity)是一个经常被提及的概念。它决定了进程或线程可以被调度到哪些CPU核心上执行。很多朋友可能会想到使用cpustat这个工具来查看,毕竟它名字里就带着“CPU”。但这里需要澄清一个常见的误解:标准的cpustat工具(通常来自sysstat包)主要用于监控和报告CPU的使用率、中断等统计信息,它并不直接显示进程的CPU亲和性。

那么,如果想查看进程具体绑定在哪个或哪些核心上,应该用什么工具呢?别担心,Linux系统本身就提供了更趁手的“兵器”。
tasksettaskset命令是专门用来查询和设置CPU亲和性的。它的用法非常直接。
查看特定进程的CPU亲和性:
想知道某个进程的“活动范围”,只需执行:
taskset -pc
把替换成你要查的进程ID。命令会返回该进程当前允许运行的CPU核心列表(通常以十六进制掩码或CPU编号列表形式显示)。
查看所有进程的CPU亲和性:
如果想一次性概览,可以尝试:
taskset -p
不过需要注意,这个命令通常需要结合进程ID来使用,直接taskset -p可能无法列出所有进程。更常见的做法是通过脚本遍历/proc目录下的进程信息。
ps没错,就是那个最常用的进程查看命令ps。通过指定合适的输出格式,它也能提供CPU亲和性相关的关键信息——即进程当前正在哪个核心上运行。
查看特定进程的当前运行核心:
使用-o选项自定义输出列,psr列就代表了“Processor”,即当前CPU核心编号。
ps -o pid,psr,cmd -C
将替换为进程名,你就能看到该进程实例的PID、当前运行的核心以及命令行。
查看所有进程的当前运行核心:
这是一个非常实用的命令,可以让你对系统所有进程的分布有个快速了解:
ps -eo pid,psr,cmd
输出会列出所有进程的ID、当前所在的CPU核心编号和命令。这对于观察进程是否被有效地分散到不同核心上很有帮助。
举个例子,假设你想查看PID为1234的进程的亲和性设置。直接用taskset:
taskset -pc 1234
或者,你想知道名为“nginx”的进程当前跑在哪个核心上:
ps -o pid,psr,cmd -C nginx
总而言之,cpustat是监控CPU整体负载和利用率的利器,但要看具体的进程与CPU核心的绑定关系,taskset和ps才是更专业的选择。根据你的具体需求——是查看预设的亲和性规则(taskset),还是观察实时运行位置(ps)——来选用合适的工具,能让诊断工作事半功倍。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8