是否可以根据负载平均值和顶部 CPU% 列计算 CPU 利用率

是否可以根据负载平均值和顶部 CPU% 列计算 CPU 利用率

我有一个文件,其中包含正常运行时间负载平均值和 CPU% 列的 2 个输出,例如 top 命令的输出。

那么,是否可以将其计算为CPU利用率或一次CPU使用率呢?

例子:

=====================================================================
        APPLIANCE CPU USAGE
=====================================================================

0.90 1.05 0.84 1/151 13615

=====================================================================
        APPLIANCE PROCESSES
=====================================================================

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2184   700 ?        Ss   22:48   0:00 init [3]                          
root         2  0.0  0.0      0     0 ?        S<   22:48   0:00 [migration/0]
root         3  0.0  0.0      0     0 ?        SN   22:48   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S<   22:48   0:00 [watchdog/0]
root         5  0.0  0.0      0     0 ?        S<   22:48   0:00 [migration/1]
root         6  0.0  0.0      0     0 ?        SN   22:48   0:00 [ksoftirqd/1]
root         7  0.0  0.0      0     0 ?        S<   22:48   0:00 [watchdog/1]
root         8  0.0  0.0      0     0 ?        S<   22:48   0:00 [events/0]
root         9  0.0  0.0      0     0 ?        S<   22:48   0:00 [events/1]
root        10  0.0  0.0      0     0 ?        S<   22:48   0:00 [khelper]
root        11  0.0  0.0      0     0 ?        S<   22:48   0:00 [kthread]
root        15  0.0  0.0      0     0 ?        S<   22:48   0:00 [kblockd/0]
root        16  0.0  0.0      0     0 ?        S<   22:48   0:00 [kblockd/1]
root        17  0.0  0.0      0     0 ?        S<   22:48   0:00 [kacpid]
root       163  0.0  0.0      0     0 ?        S<   22:48   0:00 [cqueue/0]
root       164  0.0  0.0      0     0 ?        S<   22:48   0:00 [cqueue/1]
root       167  0.0  0.0      0     0 ?        S<   22:48   0:00 [khubd]
root       169  0.0  0.0      0     0 ?        S<   22:48   0:00 [kseriod]
root       242  0.0  0.0      0     0 ?        S    22:48   0:00 [khungtaskd]
root       243  0.0  0.0      0     0 ?        S    22:48   0:00 [pdflush]
root       244  0.0  0.0      0     0 ?        S    22:48   0:00 [pdflush]
root       245  0.0  0.0      0     0 ?        S<   22:48   0:00 [kswapd0]
root       246  0.0  0.0      0     0 ?        S<   22:48   0:00 [aio/0]
root       247  0.0  0.0      0     0 ?        S<   22:48   0:00 [aio/1]
root       411  0.0  0.0      0     0 ?        S<   22:49   0:00 [kpsmoused]
root       440  0.0  0.0      0     0 ?        S<   22:49   0:00 [ata/0]
root       441  0.0  0.0      0     0 ?        S<   22:49   0:00 [ata/1]
root       442  0.0  0.0      0     0 ?        S<   22:49   0:00 [ata_aux]
root       446  0.0  0.0      0     0 ?        S<   22:49   0:00 [scsi_eh_0]
root       447  0.0  0.0      0     0 ?        S<   22:49   0:00 [scsi_eh_1]
root       448  0.0  0.0      0     0 ?        S<   22:49   0:00 [scsi_eh_2]
root       449  0.0  0.0      0     0 ?        S<   22:49   0:00 [scsi_eh_3]
root       450  0.0  0.0      0     0 ?        S<   22:49   0:00 [scsi_eh_4]
root       451  0.0  0.0      0     0 ?        S<   22:49   0:00 [scsi_eh_5]
root       452  1.0  0.0      0     0 ?        S<   22:49   0:00 [kjournald]
root       469  2.0  0.0      0     0 ?        S<   22:49   0:00 [kauditd]
root       497  3.0  0.0   2368   672 ?        S<s  22:49   0:00 /sbin/udevd -d
root      1395  4.0  0.0      0     0 ?        S<   22:49   0:00 [kjournald]
root      1397  5.0  0.0      0     0 ?        S<   22:49   0:00 [kjournald]
root      1399  6.0  0.0      0     0 ?        S<   22:49   0:00 [kjournald]

答案1

您可以使用以下代码计算 cpu%:

#!/bin/bash 
FILE=<file path>  
CPU_USAGE=`sed -n 'H; /^USER/h; ${g;p;}' $FILE | awk '{print $3}' | awk '{sum+=$1} END {print sum ;}'` 
CPU_CORES=`nproc --all`
ACTUAL_CPU_USAGE=`echo "$CPU_USAGE $CPU_CORES" | awk '{print $1/$2"%"}'`
echo "CPU : $ACTUAL_CPU_USAGE"

相关内容