【发布时间】:2014-11-04 09:05:47
【问题描述】:
我需要找出给定进程在特定时间(例如 1 秒左右)内执行了多少 CPU 内核?
这必须通过 C 程序(或可能是 C++)来完成。我知道 perf 表示cpu-migrations 的数量。
我需要知道 CPU 核心交换的数量以及进程使用了哪些核心。 我假设我首先必须获取进程在哪些线程中执行,然后查看线程在哪些内核上运行。
我得到的信息将用于计算进程的 CPU 负载。当仅在一个 CPU 内核中运行时,我知道该怎么做并且有一个可行的解决方案。但是,处理多个 CPU 内核(由多个线程组成的进程在不同时间在一个或多个 CPU 内核中运行)变得更加困难。这里有任何人可以指出的解决方案或解决方案的提示吗?
【问题讨论】:
-
也许该帖子可以提供一些帮助:stackoverflow.com/q/26362261/3194340 即使它是关于强制一个进程使用多个 CPU
-
@Cocoop 感谢您的评论。但是,我不能(也不想)改变我观察到的过程的亲和力。
标签: c linux multithreading