eval_gc_time.sh 1.92 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
#!/bin/bash
#
# Copyright 2015 the V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Convenience Script used to rank GC NVP output.

print_usage_and_die() {
  echo "Usage: $0 new-gen-rank|old-gen-rank max|avg logfile"
  exit 1
}

if [ $# -ne 3 ]; then
  print_usage_and_die
fi

case $1 in
  new-gen-rank|old-gen-rank)
    OP=$1
    ;;
  *)
    print_usage_and_die
esac

case $2 in 
  max|avg)
    RANK_MODE=$2
    ;;
  *)
    print_usage_and_die
esac

LOGFILE=$3

GENERAL_INTERESTING_KEYS="\
  pause \
"

INTERESTING_NEW_GEN_KEYS="\
  ${GENERAL_INTERESTING_KEYS} \
  scavenge \
  weak \
  roots \
  old_new \
  code \
  semispace \
  object_groups \
"

INTERESTING_OLD_GEN_KEYS="\
  ${GENERAL_INTERESTING_KEYS} \
  external \
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
  clear \
  clear.code_flush \
  clear.dependent_code \
  clear.global_handles \
  clear.maps \
  clear.slots_buffer \
  clear.store_buffer \
  clear.string_table \
  clear.weak_cells \
  clear.weak_collections \
  clear.weak_lists \
  finish \
  evacuate \
  evacuate.candidates \
  evacuate.clean_up \
  evacuate.new_space \
  evacuate.update_pointers \
  evacuate.update_pointers.between_evacuated \
  evacuate.update_pointers.to_evacuated \
  evacuate.update_pointers.to_new \
  evacuate.update_pointers.weak \
75
  mark \
76 77 78 79
  mark.finish_incremental \
  mark.prepare_code_flush \
  mark.roots \
  mark.weak_closure \
80
  sweep \
81 82 83 84
  sweep.code \
  sweep.map \
  sweep.old \
  incremental_finalize \
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
"

BASE_DIR=$(dirname $0)

case $OP in
  new-gen-rank)
    cat $LOGFILE | grep "gc=s" \
      | $BASE_DIR/eval_gc_nvp.py \
      --no-histogram \
      --rank $RANK_MODE \
      ${INTERESTING_NEW_GEN_KEYS}
    ;;
  old-gen-rank)
    cat $LOGFILE | grep "gc=ms" | grep "reduce_memory=0" | grep -v "steps=0" \
      | $BASE_DIR/eval_gc_nvp.py \
      --no-histogram \
      --rank $RANK_MODE \
      ${INTERESTING_OLD_GEN_KEYS}
    ;;
  *)
    ;;
esac