123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- #!/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 [OPTIONS]"
- echo ""
- echo "OPTIONS"
- echo " -r|--rank new-gen-rank|old-gen-rank GC mode to profile"
- echo " (default: old-gen-rank)"
- echo " -s|--sort avg|max sorting mode (default: max)"
- echo " -t|--top-level include top-level categories"
- echo " -c|--csv provide csv output"
- echo " -f|--file FILE profile input in a file"
- echo " (default: stdin)"
- echo " -p|--percentiles comma separated percentiles"
- exit 1
- }
- OP=old-gen-rank
- RANK_MODE=max
- TOP_LEVEL=no
- CSV=""
- LOGFILE=/dev/stdin
- PERCENTILES=""
- while [[ $# -ge 1 ]]
- do
- key="$1"
- case $key in
- -r|--rank)
- case $2 in
- new-gen-rank|old-gen-rank)
- OP="$2"
- ;;
- *)
- print_usage_and_die
- esac
- shift
- ;;
- -s|--sort)
- case $2 in
- max|avg)
- RANK_MODE=$2
- ;;
- *)
- print_usage_and_die
- esac
- shift
- ;;
- -t|--top-level)
- TOP_LEVEL=yes
- ;;
- -c|--csv)
- CSV=" --csv "
- ;;
- -f|--file)
- LOGFILE=$2
- shift
- ;;
- -p|--percentiles)
- PERCENTILES="--percentiles=$2"
- shift
- ;;
- *)
- break
- ;;
- esac
- shift
- done
- if [[ $# -ne 0 ]]; then
- echo "Unknown option(s): $@"
- echo ""
- print_usage_and_die
- fi
- INTERESTING_NEW_GEN_KEYS="\
- scavenge \
- weak \
- roots \
- old_new \
- semispace \
- "
- INTERESTING_OLD_GEN_KEYS="\
- clear.dependent_code \
- clear.global_handles \
- clear.maps \
- clear.slots_buffer \
- clear.string_table \
- clear.weak_collections \
- clear.weak_lists \
- evacuate.candidates \
- evacuate.clean_up \
- evacuate.copy \
- evacuate.update_pointers \
- evacuate.update_pointers.to_evacuated \
- evacuate.update_pointers.to_new \
- evacuate.update_pointers.weak \
- external.mc_prologue \
- external.mc_epilogue \
- external.mc_incremental_prologue \
- external.mc_incremental_epilogue \
- external.weak_global_handles \
- mark.finish_incremental \
- mark.roots \
- mark.weak_closure \
- mark.weak_closure.ephemeral \
- mark.weak_closure.weak_handles \
- mark.weak_closure.weak_roots \
- mark.weak_closure.harmony \
- sweep.code \
- sweep.map \
- sweep.old \
- "
- if [[ "$TOP_LEVEL" = "yes" ]]; then
- INTERESTING_OLD_GEN_KEYS="\
- ${INTERESTING_OLD_GEN_KEYS} \
- clear \
- evacuate \
- finish \
- incremental_finalize \
- mark \
- pause
- sweep \
- "
- INTERESTING_NEW_GEN_KEYS="\
- ${INTERESTING_NEW_GEN_KEYS} \
- "
- fi
- 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 \
- $CSV \
- $PERCENTILES \
- ${INTERESTING_NEW_GEN_KEYS}
- ;;
- old-gen-rank)
- cat $LOGFILE | grep "gc=ms" \
- | $BASE_DIR/eval_gc_nvp.py \
- --no-histogram \
- --rank $RANK_MODE \
- $CSV \
- $PERCENTILES \
- ${INTERESTING_OLD_GEN_KEYS}
- ;;
- *)
- ;;
- esac
|