diff --git a/run_all_experiments.sh b/run_all_experiments.sh index 3dc5e30..fb704e1 100644 --- a/run_all_experiments.sh +++ b/run_all_experiments.sh @@ -14,19 +14,11 @@ log() { } count_processes() { - if command -v ps >/dev/null 2>&1; then - ps -e -o pid= 2>/dev/null | wc -l - else - echo 0 - fi + ls -d /proc/[0-9]* 2>/dev/null | wc -l } count_threads_total() { - if command -v ps >/dev/null 2>&1; then - ps -e -o nlwp= 2>/dev/null | awk '{sum+=$1} END {print sum+0}' - else - echo 0 - fi + awk '/^Threads:/ {sum+=$2} END {print sum+0}' /proc/[0-9]*/status 2>/dev/null || echo 0 } get_mem_kb() { @@ -74,17 +66,9 @@ sample_process_csv() { # 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") - cpu=${cpu:-0} - rss=${rss:-0} - vsz=${vsz:-0} - nlwp=${nlwp:-0} - else - rss=0 - vsz=0 - nlwp=0 - fi + rss=$(awk '/^VmRSS:/ {print $2}' "/proc/$pid/status" 2>/dev/null || echo 0) + vsz=$(awk '/^VmSize:/ {print $2}' "/proc/$pid/status" 2>/dev/null || echo 0) + nlwp=$(awk '/^Threads:/ {print $2}' "/proc/$pid/status" 2>/dev/null || echo 0) 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}