【问题标题】:How to get cpu sirq in linux shell script?如何在 linux shell 脚本中获取 cpu sirq?
【发布时间】:2013-05-08 12:25:11
【问题描述】:

下面是top -b的输出

Mem: 95752K used, 29164K free, 0K shrd, 0K buff, 35176K cached
CPU:   5% usr   9% sys   0% nic   0% idle   0% io   0% irq  84% sirq

我需要持续监控sirq,如何在 shell script(sh) 中做到这一点?

问候, 尤维

【问题讨论】:

  • top 建议用于瞬时性能。如果您想随时监控某些内容,最好使用sar。本帖可以帮到你 --> unix.com/solaris/…
  • @fedorqui 那是 top 的输出。我只需要grep sirq 值(84)

标签: linux shell embedded-linux sh


【解决方案1】:

请参阅 Linux 内核 proc.txt document第 1.8 节busybox top source 也很有启发意义。
来自 proc.txt 文档的 第 1.8 节

1.8 /proc/stat 中的其他内核统计信息

关于内核活动的各种信息可在 /proc/stat 文件。此文件中报告的所有数字都是汇总数据 自系统首次启动以来。为了快速查看,只需 cat 文件。

“softirq”行给出了自启动以来服务的软中断计数,对于每个 可能的系统软中断。第一列是所有的总数 服务的软中断;随后的每一列都是该特定的总数 软中断。

所以下面的命令获取自启动以来的总数,

cat /proc/stat | grep softirq | awk '{print $2}'

你必须在你的脚本中做一些数学运算才能得到一个delta

每个CPU 行都有一个softirq 值。这是第 8 项,再次手动 delta 时间

cat /proc/stat  | grep cpu[^0-9] | awk '{ print $8}'

您可以根据需要单独选择每个 CPU。我相信人们可以想出更好的脚本,但我认为他们展示了主体。

【讨论】:

    【解决方案2】:

    我会用 c

    使用 fork()、pipe() 和 execl()

    1.创建管道()

    2. 做一个 fork()

    3.儿子。处理 execl() 输出并发送到管道

    4.父亲。等待、接收并显示所需字段

    所有这些都在一个循环中

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 2013-05-08
      相关资源
      最近更新 更多