maybe fixed cpu fork logging
This commit is contained in:
+14
-4
@@ -39,6 +39,13 @@ sample_process_csv() {
|
||||
local start_uptime="$3"
|
||||
local max_seconds="$4"
|
||||
|
||||
local have_pidstat=0
|
||||
if command -v pidstat >/dev/null 2>&1; then
|
||||
have_pidstat=1
|
||||
else
|
||||
log "pidstat not found; install sysstat for accurate CPU sampling"
|
||||
fi
|
||||
|
||||
while kill -0 "$pid" 2>/dev/null; do
|
||||
local now_uptime elapsed_s
|
||||
now_uptime=$(awk '{print $1}' /proc/uptime)
|
||||
@@ -65,7 +72,7 @@ sample_process_csv() {
|
||||
proc_count=$(count_processes || echo 0)
|
||||
thread_total=$(count_threads_total || echo 0)
|
||||
|
||||
# Use ps directly to avoid zero deltas for very short-lived processes.
|
||||
# Use pidstat for CPU and ps for memory/thread metrics.
|
||||
local cpu rss vsz nlwp
|
||||
if command -v ps >/dev/null 2>&1; then
|
||||
read -r cpu rss vsz nlwp < <(ps -o %cpu=,rss=,vsz=,nlwp= -p "$pid" 2>/dev/null || echo "0 0 0 0")
|
||||
@@ -73,14 +80,17 @@ sample_process_csv() {
|
||||
rss=${rss:-0}
|
||||
vsz=${vsz:-0}
|
||||
nlwp=${nlwp:-0}
|
||||
# Some busybox builds scale %CPU by 100.
|
||||
cpu=$(awk -v c="$cpu" 'BEGIN{ if (c>1000) printf "%.2f", c/100; else printf "%.2f", c }')
|
||||
else
|
||||
cpu=0.00
|
||||
rss=0
|
||||
vsz=0
|
||||
nlwp=0
|
||||
fi
|
||||
if [ "$have_pidstat" -eq 1 ]; then
|
||||
cpu=$(pidstat -p "$pid" 1 1 2>/dev/null | awk -v p="$pid" '$1 ~ /^[0-9]/ && $3==p {print $8; exit}')
|
||||
cpu=${cpu:-0.00}
|
||||
else
|
||||
cpu=0.00
|
||||
fi
|
||||
local stk=0 heap=0
|
||||
|
||||
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n" \
|
||||
|
||||
Reference in New Issue
Block a user