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-rcu.sh (2137B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0+
      3#
      4# Analyze a given results directory for rcutorture progress.
      5#
      6# Usage: kvm-recheck-rcu.sh resdir
      7#
      8# Copyright (C) IBM Corporation, 2014
      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
     20. functions.sh
     21
     22configfile=`echo $i | sed -e 's/^.*\///'`
     23ngps=`grep ver: $i/console.log 2> /dev/null | tail -1 | sed -e 's/^.* ver: //' -e 's/ .*$//'`
     24stopstate="`grep 'End-test grace-period state: g' $i/console.log 2> /dev/null |
     25	    tail -1 | sed -e 's/^\[[ 0-9.]*] //' |
     26	    awk '{ print \"[\" $1 \" \" $5 \" \" $6 \" \" $7 \"]\"; }' |
     27	    tr -d '\012\015'`"
     28fwdprog="`grep 'rcu_torture_fwd_prog n_max_cbs: ' $i/console.log 2> /dev/null | sed -e 's/^\[[^]]*] //' | sort -k3nr | head -1 | awk '{ print $2 " " $3 }' | tr -d '\015'`"
     29if test -z "$ngps"
     30then
     31	echo "$configfile ------- " $stopstate
     32else
     33	title="$configfile ------- $ngps GPs"
     34	dur=`grep -v '^#' $i/qemu-cmd | sed -e 's/^.* rcutorture.shutdown_secs=//' -e 's/ .*$//'`
     35	if test -z "$dur"
     36	then
     37		:
     38	else
     39		ngpsps=`awk -v ngps=$ngps -v dur=$dur '
     40			BEGIN { print ngps / dur }' < /dev/null`
     41		title="$title ($ngpsps/s)"
     42	fi
     43	echo $title $stopstate $fwdprog
     44	nclosecalls=`grep --binary-files=text 'torture: Reader Batch' $i/console.log | tail -1 | \
     45		awk -v sum=0 '
     46		{
     47			for (i = 0; i <= NF; i++) {
     48				sum += $i;
     49				if ($i ~ /Batch:/) {
     50					sum = 0;
     51					i = i + 2;
     52				}
     53			}
     54		}
     55
     56		END {
     57			print sum
     58		}'`
     59	if test -z "$nclosecalls"
     60	then
     61		exit 0
     62	fi
     63	if test "$nclosecalls" -eq 0
     64	then
     65		exit 0
     66	fi
     67	# Compute number of close calls per tenth of an hour
     68	nclosecalls10=`awk -v nclosecalls=$nclosecalls -v dur=$dur 'BEGIN { print int(nclosecalls * 36000 / dur) }' < /dev/null`
     69	if test $nclosecalls10 -gt 5 -a $nclosecalls -gt 1
     70	then
     71		print_bug $nclosecalls "Reader Batch close calls in" $(($dur/60)) minute run: $i
     72	else
     73		print_warning $nclosecalls "Reader Batch close calls in" $(($dur/60)) minute run: $i
     74	fi
     75	echo $nclosecalls "Reader Batch close calls in" $(($dur/60)) minute run: $i > $i/console.log.rcu.diags
     76fi