背景 我编写了一个工具来捕获每个/线程的CPU使用情况。这些工具的输出是一个二进制文件,我可以将其输入到我编写的解析实用程序中。解析实用程序的输出是一个CSV文件,我可以将其导入Excel以绘制流程/线程CPU使用情况的漂亮图表。
此CPU使用捕获工具在运行基于2.6.35.3的Linux内核的嵌入式ARM平台上运行。话虽这么说,我担心这个工具重量轻。我不希望它直接存储到CSV文件,以便最小化处理时间和捕获数据的文件大小。
问题 该工具有效,但我想知道我是否在这个问题上走得很远?是否已经有一个工具可以做到这一点(或类似的东西)?
你可能想知道为什么我关心我是否已经制作了一个有效的工具。嗯,它不像我想的那么轻。它占用了大约10%的CPU使用率。作为基准,top
仅占用约1%(最大值)。
更新
我现在决定继续使用我的工具。至少在有更好的解决方案可用之前。在open()
上使用fopen()
代替/proc/stat
,我能够减少几个百分点。我也使用read()
代替fgets()
。
答案 0 :(得分:1)
IBM有一个名为nmon的工具,它也是如此(对于AIX和Linux):根据IBM的文档,它需要大约2%的CPU。你可能想看一下。
将nmon与您的工具进行比较可以让您对程序的性能以及如何改进csv捕获有一个了解。
答案 1 :(得分:0)
这可能是一个陡峭的学习曲线,但您可能需要查看SystemTap:http://sourceware.org/systemtap/