【问题标题】:Display CPU cores usage in percentage without using top command在不使用 top 命令的情况下以百分比显示 CPU 内核使用率
【发布时间】:2015-11-05 08:06:56
【问题描述】:

我正在使用 Java 在 Linux 上运行命令。由于top 是一个交互式命令,需要按 1 来获取所有 cpu 的信息,所以我不能使用它。所以我使用以下命令来获取 cpu(s) 信息:

cat /proc/stat|grep "^cpu[0-9]* ";sleep 3;cat /proc/stat|grep "^cpu[0-9]* "

我得到的输出是:

cpu  4673683 193 832132 1544221346 142352 1220 171760 0 0
cpu0 2473973 90 524817 769734476 73628 1124 158588 0 0
cpu1 2199709 103 307315 774486870 68723 95 13171 0 0
cpu  4673683 193 832133 1544221744 142352 1220 171760 0 0
cpu0 2473974 90 524817 769734674 73628 1124 158588 0 0
cpu1 2199709 103 307315 774487069 68723 95 13171 0 0

现在我的问题是如何在 top 命令显示时从中获取百分比。

Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

我无法安装任何包,例如 mpstat。

【问题讨论】:

  • 对于您问题的顶部:top -bn1
  • 它应该显示机器中的所有cpu以及它们的使用百分比。 top -bn1 不工作
  • This how to page 很好地解释了 /proc/stat 文件中的数字的含义。据我了解,cpu0cpu1 的这些数字是每个 cpu 在每个状态下花费的秒数。我希望来自/proc/stat 文件输出的数字与下面的百分比不匹配。

标签: python linux shell centos jsch


【解决方案1】:

通过阅读man page for /proc/stat 和这个how to page,数字代表......

...CPU 用于执行不同类型工作的时间量。时间单位为 USER_HZ 或 Jiffies(通常为百分之一秒)。

有了这些知识,我相信创建您想要的百分比非常简单。使用你给我们的输出,你会这样做。但是,请记住,这些数字将是自计算机/服务器上次重新启动以来的整个时间的总和。

/proc/stat 文件输出:

cpu0 2473973 90 524817 769734476 73628 1124 158588 0 0
cpu1 2199709 103 307315 774486870 68723 95 13171 0 0

一些简单的数学运算

首先添加自启动以来经过的总时间单位。

 772966696 = 2473973 + 90 + 524817 + 769734476 + 73628 + 1124 + 158588 + 0 + 0

现在计算这些百分比

cpu0: 2473973/772966696  90/772966696  524817/772966696  769734476/772966696 ...

并格式化输出

cpu0: 0.3%us, 0.0%sy, 0.0%ni, 99.5% id ...

如果您需要帮助编码,请告诉我,但它应该不会比读取文件更难,拉出您想要的行,用空格分隔行并进行上面的数学运算。希望这是有道理的,请随时问我任何后续问题。

【讨论】:

  • 非常感谢 Austin 我正在寻找这样做的逻辑
猜你喜欢
  • 1970-01-01
  • 2010-10-07
  • 2023-03-10
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
相关资源
最近更新 更多