【问题标题】:Less intrusive way to capture CPU usage on Linux在 Linux 上捕获 CPU 使用情况的侵入性较低的方法
【发布时间】:2012-08-23 14:26:53
【问题描述】:

Net-SNMP 之类的工具如何捕获 CPU 使用率?

在 Linux 下,什么是侵入性最小的方法?

为了做到这一点,这样做会消耗最少的机器资源(cpu 和 ram)。最终数据将被保存到一个文件中。

【问题讨论】:

    标签: linux cpu-usage


    【解决方案1】:

    除了内核本身之外,除了读取/proc 之外,没有其他方法可以计算当前的 CPU 利用率。 pstop 等所有常用工具也只是读取 /proc/proc/stat 用于整体 CPU 使用率或/proc/<pid>/stat 用于每个进程 CPU用法。然而,由于/proc 是由内核直接提供的虚拟文件系统,因此读取其中文件的开销远小于普通文件。

    如果您不想自己阅读/proc,请尝试使用只进行少量额外计算的工具,例如@deep 提到的ps

    【讨论】:

    • 很好的答案!细节丰富,直截了当!谢谢。
    【解决方案2】:

    您是否尝试过使用 $top 命令?

    事实上,这里有一个包括 $top 在内的方法列表,试试这些 :)

    http://www.cyberciti.biz/tips/how-do-i-find-out-linux-cpu-utilization.html

    【讨论】:

    • 谢谢,当然! top, dstat, /proc/cpu ...我不是在寻找一种方法来做到这一点。我希望有人知道侵入性较小的方法(当然最重要的不是)。
    • 好吧,对不起,别担心,教我半读问题:P
    • @Frankie:阅读/proc 到底有什么干扰?这就是它的目的。
    • 少打扰的定义是什么?
    • @Frankie 一种不那么侵入性的方法是编写自己的top,但它以低于原始top 的速率对/proc 进行采样。你当然会失去准确性,但你需要在某处画线
    【解决方案3】:

    试试这个:

    ps -eo pcpu,pid | less
    

    这将显示 CPU 使用率以及 PIDs

    【讨论】:

    • 谢谢@deep!不幸的是,ps 接缝从 /proc 读取,因此从 proc 读取仍然比使用 ps 更有效,如下所示:linux.about.com/od/commands/l/blcmdl1_ps.htm
    • 如前所述,所有这些工具都必须从/proc 读取,因为/proc 是唯一的信息来源。所以没有比直接从/proc 读取更有效的工具了。但是从/proc 读取真的很便宜,因为不涉及真正的 IO。
    • 我认为除了从 /proc 读取之外没有其他方法可以获取 CPU 利用率,除了深入研究 linux 内部结构,我不知道该怎么做。
    • @scai,请将其放入答案中...对于额外的点,请提供一些提示,说明不涉及 IO 的原因,答案是你的。
    猜你喜欢
    • 2011-07-13
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多