kvm-recheck-refscale.sh 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. i="$1"
  12. if test -d "$i" -a -r "$i"
  13. then
  14. :
  15. else
  16. echo Unreadable results directory: $i
  17. exit 1
  18. fi
  19. PATH=`pwd`/tools/testing/selftests/rcutorture/bin:$PATH; export PATH
  20. . functions.sh
  21. configfile=`echo $i | sed -e 's/^.*\///'`
  22. sed -e 's/^\[[^]]*]//' < $i/console.log | tr -d '\015' |
  23. awk -v configfile="$configfile" '
  24. /^[ ]*Runs Time\(ns\) *$/ {
  25. if (dataphase + 0 == 0) {
  26. dataphase = 1;
  27. # print configfile, $0;
  28. }
  29. next;
  30. }
  31. /[^ ]*[0-9][0-9]* [0-9][0-9]*\.[0-9][0-9]*$/ {
  32. if (dataphase == 1) {
  33. # print $0;
  34. readertimes[++n] = $2;
  35. sum += $2;
  36. }
  37. next;
  38. }
  39. {
  40. if (dataphase == 1)
  41. dataphase == 2;
  42. next;
  43. }
  44. END {
  45. print configfile " results:";
  46. newNR = asort(readertimes);
  47. if (newNR <= 0) {
  48. print "No refscale records found???"
  49. exit;
  50. }
  51. medianidx = int(newNR / 2);
  52. if (newNR == medianidx * 2)
  53. medianvalue = (readertimes[medianidx - 1] + readertimes[medianidx]) / 2;
  54. else
  55. medianvalue = readertimes[medianidx];
  56. points = "Points:";
  57. for (i = 1; i <= newNR; i++)
  58. points = points " " readertimes[i];
  59. print points;
  60. print "Average reader duration: " sum / newNR " nanoseconds";
  61. print "Minimum reader duration: " readertimes[1];
  62. print "Median reader duration: " medianvalue;
  63. print "Maximum reader duration: " readertimes[newNR];
  64. print "Computed from refscale printk output.";
  65. }'