如何从 /PROC/

问题描述 投票:0回答:0

我在 Linux 中计算进程 CPU 负载时遇到问题。我有一个 bash 脚本,它在 30 秒的时间段内从 /PROC/PID/STAT 获取有关 Linux 进程的所有信息。我也从 /PROC/

得到像 CLK_TCK、CPU 数量、系统正常运行时间和其他的想法
#!/bin/bash

log_file=/tmp/cpu_last.log
n=1
SYSTEM_UPTIME_SEC=$(tr . ' ' </proc/uptime | awk '{print $1}')
CLK_TCK=$(getconf CLK_TCK)
num_cpus=$(nproc)

while [ $n -le 30 ]
do
    now=$(date +%s%3N)
    SYSTEM_UPTIME_SEC=$(tr . ' ' </proc/uptime | awk '{print $1}')
    echo "$n"
    echo "|$n|$CLK_TCK|$SYSTEM_UPTIME_SEC|$now|$num_cpus|" >> $log_file
    cat /proc/[0-9]*/stat >> $log_file &
    sleep 1
    n=$(( n+1 ))
done]*/stat >> $log_file &
    sleep 1
done

我的目标是根据这些数据计算特定进程当前的 CPU 消耗。我尝试了多个公式(第一期数据收集的 utime + stime - 第二期的 utime + stime / clk / seconds 等)但我从来没有得到与我在 TOP 命令中看到的相同的值。那么,你能帮我找到计算当前消耗多少 CPU% 进程的正确公式吗?

我用不同的公式来计算进程的当前 CPU 负载,但我仍然得到与 TOP 结果不同的结果。 我想按进程计算当前 CPU 消耗,但我的公式都不起作用。 我需要使用 /PROC/ 中的数据来收集数据,因为我在低硬件 linux 系统上工作,我的数据收集必须对系统的影响尽可能小。

linux bash cpu-usage calculation
© www.soinside.com 2019 - 2024. All rights reserved.