/PROC/でLinuxプロセスの現在のCPU消費を計算する方法(TOPコマンドから値を取得する)

/PROC/でLinuxプロセスの現在のCPU消費を計算する方法(TOPコマンドから値を取得する)

LinuxでプロセスCPU負荷を計算するのに問題があります。 30秒以内に/ PROC / PID / STATからLinuxプロセスに関するすべての情報を取得するbashスクリプトがあります。また、CLK_TCK、CPU 数、システム稼働時間などの /PROC/ からアイデアを取得します。

#!/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、2番目の期間はutime + stime / clk / secondなど)を試しましたが、TOPコマンドで見たのと同じ値を取得できませんでした。それでは、現在のプロセスで消費されるCPU%を計算する正しい式を見つけるのに役立ちますか?

プロセスの現在のCPU負荷を計算するために別の式を使用するのに疲れていますが、それでもTOP結果とは異なる結果が得られます。現在、プロセスごとのCPU使用率を計算したいのですが、私の式は機能しません。私は低ハードウェアLinuxシステムで作業しており、私のデータ収集はシステムにできるだけ少ない影響を与える必要があるため、/ PROC /のデータを使用してデータを収集する必要があります。

ベストアンサー1

おすすめ記事