maybe fixed cpu fork logging
This commit is contained in:
+14
-4
@@ -39,6 +39,13 @@ sample_process_csv() {
|
|||||||
local start_uptime="$3"
|
local start_uptime="$3"
|
||||||
local max_seconds="$4"
|
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
|
while kill -0 "$pid" 2>/dev/null; do
|
||||||
local now_uptime elapsed_s
|
local now_uptime elapsed_s
|
||||||
now_uptime=$(awk '{print $1}' /proc/uptime)
|
now_uptime=$(awk '{print $1}' /proc/uptime)
|
||||||
@@ -65,7 +72,7 @@ sample_process_csv() {
|
|||||||
proc_count=$(count_processes || echo 0)
|
proc_count=$(count_processes || echo 0)
|
||||||
thread_total=$(count_threads_total || 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
|
local cpu rss vsz nlwp
|
||||||
if command -v ps >/dev/null 2>&1; then
|
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")
|
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}
|
rss=${rss:-0}
|
||||||
vsz=${vsz:-0}
|
vsz=${vsz:-0}
|
||||||
nlwp=${nlwp:-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
|
else
|
||||||
cpu=0.00
|
|
||||||
rss=0
|
rss=0
|
||||||
vsz=0
|
vsz=0
|
||||||
nlwp=0
|
nlwp=0
|
||||||
fi
|
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
|
local stk=0 heap=0
|
||||||
|
|
||||||
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n" \
|
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