72 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| # SPDX-License-Identifier: GPL-2.0+
 | |
| #
 | |
| # Analyze a given results directory for refscale performance measurements.
 | |
| #
 | |
| # Usage: kvm-recheck-refscale.sh resdir
 | |
| #
 | |
| # Copyright (C) IBM Corporation, 2016
 | |
| #
 | |
| # Authors: Paul E. McKenney <paulmck@linux.ibm.com>
 | |
| 
 | |
| i="$1"
 | |
| if test -d "$i" -a -r "$i"
 | |
| then
 | |
| 	:
 | |
| else
 | |
| 	echo Unreadable results directory: $i
 | |
| 	exit 1
 | |
| fi
 | |
| PATH=`pwd`/tools/testing/selftests/rcutorture/bin:$PATH; export PATH
 | |
| . functions.sh
 | |
| 
 | |
| configfile=`echo $i | sed -e 's/^.*\///'`
 | |
| 
 | |
| sed -e 's/^\[[^]]*]//' < $i/console.log | tr -d '\015' |
 | |
| awk -v configfile="$configfile" '
 | |
| /^[ 	]*Runs	Time\(ns\) *$/ {
 | |
| 	if (dataphase + 0 == 0) {
 | |
| 		dataphase = 1;
 | |
| 		# print configfile, $0;
 | |
| 	}
 | |
| 	next;
 | |
| }
 | |
| 
 | |
| /[^ 	]*[0-9][0-9]*	[0-9][0-9]*\.[0-9][0-9]*$/ {
 | |
| 	if (dataphase == 1) {
 | |
| 		# print $0;
 | |
| 		readertimes[++n] = $2;
 | |
| 		sum += $2;
 | |
| 	}
 | |
| 	next;
 | |
| }
 | |
| 
 | |
| {
 | |
| 	if (dataphase == 1)
 | |
| 		dataphase == 2;
 | |
| 	next;
 | |
| }
 | |
| 
 | |
| END {
 | |
| 	print configfile " results:";
 | |
| 	newNR = asort(readertimes);
 | |
| 	if (newNR <= 0) {
 | |
| 		print "No refscale records found???"
 | |
| 		exit;
 | |
| 	}
 | |
| 	medianidx = int(newNR / 2);
 | |
| 	if (newNR == medianidx * 2)
 | |
| 		medianvalue = (readertimes[medianidx - 1] + readertimes[medianidx]) / 2;
 | |
| 	else
 | |
| 		medianvalue = readertimes[medianidx];
 | |
| 	points = "Points:";
 | |
| 	for (i = 1; i <= newNR; i++)
 | |
| 		points = points " " readertimes[i];
 | |
| 	print points;
 | |
| 	print "Average reader duration: " sum / newNR " nanoseconds";
 | |
| 	print "Minimum reader duration: " readertimes[1];
 | |
| 	print "Median reader duration: " medianvalue;
 | |
| 	print "Maximum reader duration: " readertimes[newNR];
 | |
| 	print "Computed from refscale printk output.";
 | |
| }'
 |