在 mpstat 中获取 CPU 个单个内核的使用情况
Get CPU usage for indivudal cores in mpstat
有人要求我使用 mpstat 获取单个内核的 CPU 使用情况。我可以获得每个人 CPU 所需的所有信息,如下所示:
mpstat -P 0
给出以下输出:
Linux 3.10.0-957.21.3.el7.x86_64 (cpu_devel) 03/16/2021 _x86_64_ (48 CPU)
09:59:32 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
09:59:32 AM 0 0.05 0.00 0.05 0.00 0.00 0.01 0.00 0.00 0.00 99.89
我需要做的是获取空闲状态下的数字 (99.89) 并从 100 中减去它以获得总 CPU 使用量。我试图用这样的空格分隔符来获取第 12 个字段:
mpstat -P 0 | cut -d' ' -f12
但这表明每个字段之间实际上有多个空格。所以我正在寻求帮助以找到更清洁的解决方案!
您只需使用 awk
即可完成此操作。只需将您的命令(mpstat)输出作为标准输入传递给 awk
命令作为输入;然后在 awk
的主程序中查看行号是否为第 4 行然后打印该行的最后一列(检查条件如果 $NF 大于 0 然后用 100 减去它否则按原样打印)。
mpstat -P 0 | awk 'FNR==4{print ($NF>0?100-$NF:$NF)}'
有人要求我使用 mpstat 获取单个内核的 CPU 使用情况。我可以获得每个人 CPU 所需的所有信息,如下所示:
mpstat -P 0
给出以下输出:
Linux 3.10.0-957.21.3.el7.x86_64 (cpu_devel) 03/16/2021 _x86_64_ (48 CPU)
09:59:32 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
09:59:32 AM 0 0.05 0.00 0.05 0.00 0.00 0.01 0.00 0.00 0.00 99.89
我需要做的是获取空闲状态下的数字 (99.89) 并从 100 中减去它以获得总 CPU 使用量。我试图用这样的空格分隔符来获取第 12 个字段:
mpstat -P 0 | cut -d' ' -f12
但这表明每个字段之间实际上有多个空格。所以我正在寻求帮助以找到更清洁的解决方案!
您只需使用 awk
即可完成此操作。只需将您的命令(mpstat)输出作为标准输入传递给 awk
命令作为输入;然后在 awk
的主程序中查看行号是否为第 4 行然后打印该行的最后一列(检查条件如果 $NF 大于 0 然后用 100 减去它否则按原样打印)。
mpstat -P 0 | awk 'FNR==4{print ($NF>0?100-$NF:$NF)}'