mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
3.4 KiB
167 lines
3.4 KiB
#!/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 \
|
|
code \
|
|
semispace \
|
|
object_groups \
|
|
"
|
|
|
|
INTERESTING_OLD_GEN_KEYS="\
|
|
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 \
|
|
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.prepare_code_flush \
|
|
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
|
|
|