From 8ad2459468847ea59dcb7cfd1167bffc3b0a3ffd Mon Sep 17 00:00:00 2001 From: Oliver Mannion <125105+tekumara@users.noreply.github.com> Date: Wed, 7 Nov 2018 22:04:30 +1100 Subject: [PATCH] only sudo if you aren't already the user running the jvm process this enables usage inside docker containers that don't contain sudo, when running `docker exec` as the user running the jvm process, eg:`docker exec -it --user daemon` because perf maps may now be created as the jvm process user, we need to tell perf script/top/report to not check ownership by using the --force flag --- bin/create-java-perf-map.sh | 2 +- bin/perf-java-flames | 2 +- bin/perf-java-report-stack | 2 +- bin/perf-java-top | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/create-java-perf-map.sh b/bin/create-java-perf-map.sh index f5806b6..03cf438 100755 --- a/bin/create-java-perf-map.sh +++ b/bin/create-java-perf-map.sh @@ -36,7 +36,7 @@ fi [ -d "$JAVA_HOME" ] || (echo "JAVA_HOME directory at '$JAVA_HOME' does not exist." && false) -if [[ "$LINUX" == "1" ]]; then +if [[ "$LINUX" == "1" ]] && [[ $EUID -ne $TARGET_UID ]]; then sudo rm $PERF_MAP_FILE -f (cd $PERF_MAP_DIR/out && sudo -u \#$TARGET_UID -g \#$TARGET_GID $JAVA_HOME/bin/java -cp $ATTACH_JAR_PATH:$JAVA_HOME/lib/tools.jar net.virtualvoid.perf.AttachOnce $PID "$OPTIONS") sudo chown root:root $PERF_MAP_FILE diff --git a/bin/perf-java-flames b/bin/perf-java-flames index 874631b..687b52c 100755 --- a/bin/perf-java-flames +++ b/bin/perf-java-flames @@ -30,6 +30,6 @@ if [ -z "$PERF_FLAME_OPTS" ]; then fi $PERF_MAP_DIR/bin/perf-java-record-stack $* -sudo perf script -i $PERF_DATA_FILE > $STACKS +sudo perf script --force -i $PERF_DATA_FILE > $STACKS $FLAMEGRAPH_DIR/stackcollapse-perf.pl $PERF_COLLAPSE_OPTS $STACKS | tee $COLLAPSED | $FLAMEGRAPH_DIR/flamegraph.pl $PERF_FLAME_OPTS > $PERF_FLAME_OUTPUT echo "Flame graph SVG written to PERF_FLAME_OUTPUT='`readlink -f $PERF_FLAME_OUTPUT`'." diff --git a/bin/perf-java-report-stack b/bin/perf-java-report-stack index 276b803..292978f 100755 --- a/bin/perf-java-report-stack +++ b/bin/perf-java-report-stack @@ -14,4 +14,4 @@ if [ -z "$PERF_DATA_FILE" ]; then fi $PERF_MAP_DIR/bin/perf-java-record-stack $* -sudo perf report -i $PERF_DATA_FILE +sudo perf report --force -i $PERF_DATA_FILE diff --git a/bin/perf-java-top b/bin/perf-java-top index bd4d522..c7c4ca0 100755 --- a/bin/perf-java-top +++ b/bin/perf-java-top @@ -6,4 +6,4 @@ PERF_MAP_DIR=$(dirname $(readlink -f $0))/.. PID=$1 $PERF_MAP_DIR/bin/create-java-perf-map.sh $PID "$PERF_MAP_OPTIONS" -sudo perf top -p $* +sudo perf top --force -p $*