【问题标题】:CPU Usage Server and Monitoring infoCPU 使用服务器和监控信息
【发布时间】:2017-07-13 12:47:44
【问题描述】:

我需要使用 shell 脚本检查总 CPU % 使用率,可能不安装任何特定软件包(操作系统:Linux Suse 12),以便在不超过临界阈值的情况下监控级别.

这是一个带有 2x E5-2667 v4 8/core 的大型服务器。

查看问题我发现了一些东西并尝试了它:

1-top -bn1 | grep "Cpu(s)" | \sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \awk '{print 100 - $1"%"}'

2-CPU_LOAD=$(sar -P ALL 1 2 |grep 'Average.*all' |awk -F" " '{print 100.0 -$NF}') 

我也尝试从 iostat 做 100-idle

  1. 在多 CPU/多核系统上真的正确吗?
  2. 使用 uptime 中的 cpu 负载计算 cpu 总使用量是否正确?

使用代码我得到了一个单核的平均值,而我需要一个总 CPU 使用百分比的结果 问候, 谢谢

【问题讨论】:

    标签: linux bash sh cpu monitoring


    【解决方案1】:

    您可能最好在 awk 中完全实现该解决方案:

    top -bn1 | awk -F, '/id/ { for (i=1;i<=NF;i++) { if ( $i ~ /[[:digit:]]{2}.[[:digit:]][[:blank:]]+id/ ) { split($i,arry," ");print arry[1]" - idle" }'
    

    从顶部获取输出,然后检查任何包含 id 的输出。如果满足条件,则获取行上的每个逗号分隔的数据,并与 2 个数字、一个小数和一个或多个数字、一个空白和 id 进行模式匹配。如果是这种情况,请将基于空格的变量拆分为数组并打印第一个元素。

    【讨论】:

    • 感谢您的回答。无论如何,那个sn-p有问题,无法弄清楚它是什么。你能帮帮我吗?
    • 对不起,我错过了最后的单引号。你有空闲输出的百分比吗?即 97.7% id,?
    • 谢谢。我认为最后的一些关闭刹车应该是:top -bn1 | awk -F, '/id/ { for (i=1;i&lt;=NF;i++) { if ( $i ~ /[[:digit:]]{2}.[[:digit:]][[:blank:]]+id/ ) { split($i,arry," ");print arry[1] }}}' 我猜这会给我一个空闲的 %。所以实际上做 100-idle 输出来查看 CPU 的总使用量是正确的吗?
    • 是的,只需修改最后的打印声明,就像我刚才所做的那样。
    • 我们专注于 top 的输出,其中包含“id”的行,然后我们遍历由 分隔的行的每一位,并检查模式与数字匹配的那位数据小数后跟 id。然后我们拆分只是为了得到数字。
    【解决方案2】:

    如果您想获得任何详细的统计数据,您也可以使用perf。 在此示例中,您可能会看到 1 秒内所有 CPU 周期的数量:

    -bash-4.1# perf stat -a sleep 1
    
    Performance counter stats for 'system wide':
    
       4002.822144      task-clock (msec)         #    3.999 CPUs utilized            (100.00%)
             22809      context-switches          #    0.006 M/sec                    (100.00%)
              1332      cpu-migrations            #    0.333 K/sec                    (100.00%)
             23794      page-faults               #    0.006 M/sec                  
        5409531172      cycles                    #    1.351 GHz                      (100.00%)
    <not supported>      stalled-cycles-frontend  
    <not supported>      stalled-cycles-backend   
        3874289082      instructions              #    0.72  insns per cycle          (100.00%)
         715152901      branches                  #  178.662 M/sec                    (100.00%)
          20583742      branch-misses             #    2.88% of all branches        
       1.001065623 seconds time elapsed
    

    【讨论】:

      【解决方案3】:

      您也可以查看uptime

      Uptime 以单行方式显示以下信息。当前时间、系统运行了多长时间、当前有多少用户登录以及过去 1、5 和 15 分钟的系统负载平均值。

      【讨论】:

      • 您好 gbajson,感谢您的回答。正常运行时间负载确实表明有多少进程正在等待执行?不是总 CPU 使用率的实际数量对吗?。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多