如何在Linux中获取进程的CPU信息?

如何在Linux中获取进程的CPU信息?,linux,cpu-usage,Linux,Cpu Usage,在我的服务器中,存在多个CPU(0-7)。我需要运行并行代码,每个进程都有一个CPU,那么如何知道每个进程的CPU信息呢 例如,如果存在两个进程(#0和#1),并且进程#0使用CPU 5,进程#1使用CPU 7 通过使用C或Fortran编程,我如何知道这一点?通常,您必须更改CPU相关性,因为进程可以在处理器之间迁移:(Linux Journal,2003)。更一般地说,您为什么想知道?Linux内核非常擅长调度进程/线程,以充分利用可用的内核。一般来说,操作系统的任务是从应用程序中提取这些内

在我的服务器中,存在多个CPU(0-7)。我需要运行并行代码,每个进程都有一个CPU,那么如何知道每个进程的CPU信息呢

例如,如果存在两个进程(#0和#1),并且进程#0使用CPU 5,进程#1使用CPU 7


通过使用C或Fortran编程,我如何知道这一点?

通常,您必须更改CPU相关性,因为进程可以在处理器之间迁移:(Linux Journal,2003)。

更一般地说,您为什么想知道?Linux内核非常擅长调度进程/线程,以充分利用可用的内核。

一般来说,操作系统的任务是从应用程序中提取这些内容。 通常我会看到我的应用程序(就像在一个大文件上做grep一样简单)每隔一段时间就会改变CPU核心

现在,如果您想在特定的核心上强制应用程序,您可以手动设置CPU相关性

我以前写过一些非常奇怪的软件,我从来没有想要知道和/或控制它

你为什么想知道?

使用该电话


请记住,进程/线程可以自由安排在任何可用的cpu/内核上运行,因此您的一个进程可以在内核1上运行一秒钟,在内核2上运行一秒钟。您可以使用()限制允许进程在哪个处理器上运行。

我不知道在Linux上有任何系统调用可以为您提供有关线程在哪个CPU上运行的一般信息@nos是正确的,sched_getcpu()将告诉您线程运行在哪个CPU上,但只针对调用上下文

您可以通过查询
/proc
文件系统来完成此操作。但是,如果您发现自己正在围绕此功能构建应用程序,则可能需要重新检查您的设计


文件
/proc//stats
包含一个字段,为您提供进程运行的最后一个CPU。您只需要解析输出。(使用
manproc
查看字段列表)。

因为我想动态更改cpu速度并做一些研究工作