git: 1db45a406688 - main - stress2: Handle the new output format of vmstat(8)

From: Peter Holm <pho_at_FreeBSD.org>
Date: Tue, 02 Jan 2024 13:44:47 UTC
The branch main has been updated by pho:

URL: https://cgit.FreeBSD.org/src/commit/?id=1db45a406688e4bdc1f47773bc8f662b1ded2b3f

commit 1db45a406688e4bdc1f47773bc8f662b1ded2b3f
Author:     Peter Holm <pho@FreeBSD.org>
AuthorDate: 2024-01-02 13:43:46 +0000
Commit:     Peter Holm <pho@FreeBSD.org>
CommitDate: 2024-01-02 13:43:46 +0000

    stress2: Handle the new output format of vmstat(8)
---
 tools/test/stress2/tools/vmstat.sh | 31 +++++++++++++------------------
 1 file changed, 13 insertions(+), 18 deletions(-)

diff --git a/tools/test/stress2/tools/vmstat.sh b/tools/test/stress2/tools/vmstat.sh
index 89ff1e331fc5..f7006669a7c0 100755
--- a/tools/test/stress2/tools/vmstat.sh
+++ b/tools/test/stress2/tools/vmstat.sh
@@ -45,34 +45,28 @@ OIFS=$IFS
 while true; do
 	#          Type InUse MemUse
 	[ -z "$optm" ] && vmstat -m | sed 1d |
-	    sed 's/\(.* \)\([0-9][0-9]*\)  *\(.*\)K .*/\1:\2:\3/' |
-	    while IFS=: read -r p1 p2 p3; do
-		name=`echo $p1 | sed 's/^ *//;s/ *$//'`
-		memuse=$p3
+	    while read l; do
+		name=`echo $l | sed -E 's/ [0-9]+ .*//; s/^ *//'`
+		memuse=`echo $l | sed -E "s#$name##" | \
+		    awk '{print int(($2 + 1023) / 1024)}'`
 		[ "$memuse" -ne 0 ] && echo "vmstat -m $name,$memuse"
-	done
+	    done
 
 	# ITEM                   SIZE  LIMIT     USED
-	[ -z "$optz" ] && vmstat -z |
-	    grep -vE '(rl_entry):' |
-	    sed "1,2d;/^$/d;s/: /, /" |
-	    sed -E 's/[^[:print:]\r\t]/ /g' |
+	[ -z "$optz" ] && vmstat -z | sed 1d |
 	    while read l; do
-		IFS=','
-		set $l
-		[ $# -lt 8 ] &&
-		    { echo "# args must be >= 8, but is $# in $l" 1>&2;
-		        continue; }
-		size=$2
-		used=$4
+		name=`echo $l | sed 's/:.*//'`
+		l=`echo $l | sed 's/.*://'`
+		size=`echo $l | awk -F ',' '{print $1}'`
+		used=`echo $l | awk -F ',' '{print $3}'`
 		[ -z "$used" -o -z "$size" ] &&
 		    { echo "used/size not set $l" 1>&2; continue; }
 		echo $used | egrep -q '^ *[0-9]{1,10}$' ||
 		    { echo "Bad used: $used. l=$l" 1>&2; continue; }
 		tot=$((((size * used) + 1023) / 1024))
 		[ $tot -ne 0 ] &&
-		   echo "vmstat -z $1,$tot"
-	done
+		   echo "vmstat -z $name,$tot"
+	    done
 
 	r=`sysctl -n vm.stats.vm.v_wire_count`
 	[ -n "$r" ] &&
@@ -98,6 +92,7 @@ done | awk $debug -F, '
 			close(cmd);
 			printf "%s \"%s\" %'\''dK\r\n", t,
 			    name, size;
+			fflush
 			n[name] = 0;
 		}
 		s[name] = size;