2011-06-11 123 views
3

假设我想绘制一个图形,在x轴上绘制CPU“点击”(或挂钟时间),并在y轴上绘制线程。所以,例如,如果我有4个核心,我有4个y轴刻度,x轴是时间,我想绘制红色,当一个核心执行该线程时:我如何以编程方式收集信息来做到这一点?我想完全了解这个问题,所以我并不需要使用TBB或任何IDE,Intel或其他的线程可视化......我只想了解一个简单的代码段。语言并不是一个问题,但如果它是C,那就更好了。我不需要“绘制”图表,我只需要知道CPU执行什么线程和多长时间。谢谢!由内核跟踪线程执行

编辑:我刚发现nptl trace tool,如果有的话,我会看到他们在做什么,并适应我的需要。

+0

是不是已经有一个gazillion程序来做到这一点? – 2011-06-12 07:57:38

回答

2

这样做不涉及内核将很难

制作图形的最佳方式是让内核在安排进程时记录更改(不必进行大量更改,因为大多数操作系统都具有亲和力而更喜欢在同一个核心上保持一个线程)。

也就是说,一些操作系统将这种统计数据导出到用户空间。例如Linux有/proc/[pid]/statin that file,有一个叫processor的字段。

为了让您的线索在任何特定时刻发生的变化(含糊其词),您可以监视/proc/self/task/*/stat中的文件。

+1

我不认为会这样做。 OP可能需要使用** perf **或** kernelshark **之类的东西。 – ninjalj 2011-06-12 12:19:40