cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

kvm-recheck-refscale.sh (1562B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0+
      3#
      4# Analyze a given results directory for refscale performance measurements.
      5#
      6# Usage: kvm-recheck-refscale.sh resdir
      7#
      8# Copyright (C) IBM Corporation, 2016
      9#
     10# Authors: Paul E. McKenney <paulmck@linux.ibm.com>
     11
     12i="$1"
     13if test -d "$i" -a -r "$i"
     14then
     15	:
     16else
     17	echo Unreadable results directory: $i
     18	exit 1
     19fi
     20PATH=`pwd`/tools/testing/selftests/rcutorture/bin:$PATH; export PATH
     21. functions.sh
     22
     23configfile=`echo $i | sed -e 's/^.*\///'`
     24
     25sed -e 's/^\[[^]]*]//' < $i/console.log | tr -d '\015' |
     26awk -v configfile="$configfile" '
     27/^[ 	]*Runs	Time\(ns\) *$/ {
     28	if (dataphase + 0 == 0) {
     29		dataphase = 1;
     30		# print configfile, $0;
     31	}
     32	next;
     33}
     34
     35/[^ 	]*[0-9][0-9]*	[0-9][0-9]*\.[0-9][0-9]*$/ {
     36	if (dataphase == 1) {
     37		# print $0;
     38		readertimes[++n] = $2;
     39		sum += $2;
     40	}
     41	next;
     42}
     43
     44{
     45	if (dataphase == 1)
     46		dataphase == 2;
     47	next;
     48}
     49
     50END {
     51	print configfile " results:";
     52	newNR = asort(readertimes);
     53	if (newNR <= 0) {
     54		print "No refscale records found???"
     55		exit;
     56	}
     57	medianidx = int(newNR / 2);
     58	if (newNR == medianidx * 2)
     59		medianvalue = (readertimes[medianidx - 1] + readertimes[medianidx]) / 2;
     60	else
     61		medianvalue = readertimes[medianidx];
     62	points = "Points:";
     63	for (i = 1; i <= newNR; i++)
     64		points = points " " readertimes[i];
     65	print points;
     66	print "Average reader duration: " sum / newNR " nanoseconds";
     67	print "Minimum reader duration: " readertimes[1];
     68	print "Median reader duration: " medianvalue;
     69	print "Maximum reader duration: " readertimes[newNR];
     70	print "Computed from refscale printk output.";
     71}'