#! /bin/bash -u
# Copyright 2015 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This script takes the out.txt, generated by heatmap_generator.py
# and sorted into a heatmap data file (inst-histo.txt) and then
# call gnu plot to draw the heat map and the time map.
# A heat map shows the overall hotness of instructions being executed
# while the time map shows the hotness of instruction at different time.
#
# Usage:
# ./perf-to-inst-page.sh HEATMAP_TITLE
# HEATMAP_TITLE: the title to display on the heatmap

HEAT_PNG="heat_map.png"
TIMELINE_PNG="timeline.png"
HEATMAP_TITLE=$1
ENABLE_HUGEPAGE=$2

heatmap_command="
set terminal png size 600,450
set xlabel \"Instruction Virtual Address (MB)\"
set ylabel \"Sample Occurance\"
set grid

set output \"${HEAT_PNG}\"
set title \"${HEATMAP_TITLE}\"
"

if [[ "${ENABLE_HUGEPAGE}" = "hugepage" ]]; then
  hugepage_hist="inst-histo-hp.txt"
  smallpage_hist="inst-histo-sp.txt"
  cat out.txt | grep hugepage | awk '{print $3}' \
    | sort -n | uniq -c > "${hugepage_hist}"
  cat out.txt | grep smallpage | awk '{print $3}' \
    | sort -n | uniq -c > "${smallpage_hist}"
  # generate inst heat map
  heatmap_in_hugepage=("'${hugepage_hist}' using \
(\$2/1024/1024):1 with impulses notitle lt rgb 'red'")
  heatmap_outside_hugepage=("'${smallpage_hist}' using \
(\$2/1024/1024):1 with impulses notitle lt rgb 'blue'")
  echo "
  ${heatmap_command}
  plot ${heatmap_in_hugepage}, ${heatmap_outside_hugepage}
  " | gnuplot
else
  awk '{print $3}' out.txt | sort -n | uniq -c > inst-histo.txt
  # generate inst heat map
  echo "
  ${heatmap_command}
  plot 'inst-histo.txt' using (\$2/1024/1024):1 with impulses notitle
  " | gnuplot
fi

# generate instruction page access timeline
num=$(awk 'END {print NR+1}' out.txt)

echo "
set terminal png size 600,450
set xlabel \"time (sec)\"
set ylabel \"Instruction Virtual Address (MB)\"

set output \"${TIMELINE_PNG}\"
set title \"instruction page accessd timeline\"

plot 'out.txt' using (\$0/$num*10):(\$3/1024/1024) with dots notitle
" | gnuplot
