mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	perf tools: Delete perf-with-kcore.sh script
It has been obsolete since the introduction of the 'perf record --kcore' option. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Link: http://lore.kernel.org/lkml/20220427141946.269523-1-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
		
							parent
							
								
									9e5e641045
								
							
						
					
					
						commit
						52cc784244
					
				
					 3 changed files with 1 additions and 252 deletions
				
			
		
							
								
								
									
										1
									
								
								tools/perf/.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								tools/perf/.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -19,7 +19,6 @@ perf.data | |||
| perf.data.old | ||||
| output.svg | ||||
| perf-archive | ||||
| perf-with-kcore | ||||
| perf-iostat | ||||
| tags | ||||
| TAGS | ||||
|  |  | |||
|  | @ -286,7 +286,6 @@ PYRF_OBJS = | |||
| SCRIPT_SH = | ||||
| 
 | ||||
| SCRIPT_SH += perf-archive.sh | ||||
| SCRIPT_SH += perf-with-kcore.sh | ||||
| SCRIPT_SH += perf-iostat.sh | ||||
| 
 | ||||
| grep-libs = $(filter -l%,$(1)) | ||||
|  | @ -973,8 +972,6 @@ ifndef NO_LIBBPF | |||
| endif | ||||
| 	$(call QUIET_INSTALL, perf-archive) \ | ||||
| 		$(INSTALL) $(OUTPUT)perf-archive -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' | ||||
| 	$(call QUIET_INSTALL, perf-with-kcore) \ | ||||
| 		$(INSTALL) $(OUTPUT)perf-with-kcore -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' | ||||
| 	$(call QUIET_INSTALL, perf-iostat) \ | ||||
| 		$(INSTALL) $(OUTPUT)perf-iostat -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' | ||||
| ifndef NO_LIBAUDIT | ||||
|  | @ -1088,7 +1085,7 @@ bpf-skel-clean: | |||
| 	$(call QUIET_CLEAN, bpf-skel) $(RM) -r $(SKEL_TMP_OUT) $(SKELETONS) | ||||
| 
 | ||||
| clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean $(LIBPERF)-clean fixdep-clean python-clean bpf-skel-clean | ||||
| 	$(call QUIET_CLEAN, core-objs)  $(RM) $(LIBPERF_A) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(OUTPUT)perf-iostat $(LANG_BINDINGS) | ||||
| 	$(call QUIET_CLEAN, core-objs)  $(RM) $(LIBPERF_A) $(OUTPUT)perf-archive $(OUTPUT)perf-iostat $(LANG_BINDINGS) | ||||
| 	$(Q)find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete | ||||
| 	$(Q)$(RM) $(OUTPUT).config-detected | ||||
| 	$(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(OUTPUT)pmu-events/jevents $(OUTPUT)$(LIBJVMTI).so | ||||
|  |  | |||
|  | @ -1,247 +0,0 @@ | |||
| #!/bin/bash | ||||
| # SPDX-License-Identifier: GPL-2.0-only | ||||
| # perf-with-kcore: use perf with a copy of kcore | ||||
| # Copyright (c) 2014, Intel Corporation. | ||||
| # | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| usage() | ||||
| { | ||||
|         echo "Usage: perf-with-kcore <perf sub-command> <perf.data directory> [<sub-command options> [ -- <workload>]]" >&2 | ||||
|         echo "       <perf sub-command> can be record, script, report or inject" >&2 | ||||
|         echo "   or: perf-with-kcore fix_buildid_cache_permissions" >&2 | ||||
|         exit 1 | ||||
| } | ||||
| 
 | ||||
| find_perf() | ||||
| { | ||||
| 	if [ -n "$PERF" ] ; then | ||||
| 		return | ||||
| 	fi | ||||
| 	PERF=`which perf || true` | ||||
| 	if [ -z "$PERF" ] ; then | ||||
| 		echo "Failed to find perf" >&2 | ||||
| 	        exit 1 | ||||
| 	fi | ||||
| 	if [ ! -x "$PERF" ] ; then | ||||
| 		echo "Failed to find perf" >&2 | ||||
| 	        exit 1 | ||||
| 	fi | ||||
| 	echo "Using $PERF" | ||||
| 	"$PERF" version | ||||
| } | ||||
| 
 | ||||
| copy_kcore() | ||||
| { | ||||
| 	echo "Copying kcore" | ||||
| 
 | ||||
| 	if [ $EUID -eq 0 ] ; then | ||||
| 		SUDO="" | ||||
| 	else | ||||
| 		SUDO="sudo" | ||||
| 	fi | ||||
| 
 | ||||
| 	rm -f perf.data.junk | ||||
| 	("$PERF" record -o perf.data.junk "${PERF_OPTIONS[@]}" -- sleep 60) >/dev/null 2>/dev/null & | ||||
| 	PERF_PID=$! | ||||
| 
 | ||||
| 	# Need to make sure that perf has started | ||||
| 	sleep 1 | ||||
| 
 | ||||
| 	KCORE=$(($SUDO "$PERF" buildid-cache -v -f -k /proc/kcore >/dev/null) 2>&1) | ||||
| 	case "$KCORE" in | ||||
| 	"kcore added to build-id cache directory "*) | ||||
| 		KCORE_DIR=${KCORE#"kcore added to build-id cache directory "} | ||||
| 	;; | ||||
| 	*) | ||||
| 		kill $PERF_PID | ||||
| 		wait >/dev/null 2>/dev/null || true | ||||
| 		rm perf.data.junk | ||||
| 		echo "$KCORE" | ||||
| 		echo "Failed to find kcore" >&2 | ||||
| 		exit 1 | ||||
| 	;; | ||||
| 	esac | ||||
| 
 | ||||
| 	kill $PERF_PID | ||||
| 	wait >/dev/null 2>/dev/null || true | ||||
| 	rm perf.data.junk | ||||
| 
 | ||||
| 	$SUDO cp -a "$KCORE_DIR" "$(pwd)/$PERF_DATA_DIR" | ||||
| 	$SUDO rm -f "$KCORE_DIR/kcore" | ||||
| 	$SUDO rm -f "$KCORE_DIR/kallsyms" | ||||
| 	$SUDO rm -f "$KCORE_DIR/modules" | ||||
| 	$SUDO rmdir "$KCORE_DIR" | ||||
| 
 | ||||
| 	KCORE_DIR_BASENAME=$(basename "$KCORE_DIR") | ||||
| 	KCORE_DIR="$(pwd)/$PERF_DATA_DIR/$KCORE_DIR_BASENAME" | ||||
| 
 | ||||
| 	$SUDO chown $UID "$KCORE_DIR" | ||||
| 	$SUDO chown $UID "$KCORE_DIR/kcore" | ||||
| 	$SUDO chown $UID "$KCORE_DIR/kallsyms" | ||||
| 	$SUDO chown $UID "$KCORE_DIR/modules" | ||||
| 
 | ||||
| 	$SUDO chgrp $GROUPS "$KCORE_DIR" | ||||
| 	$SUDO chgrp $GROUPS "$KCORE_DIR/kcore" | ||||
| 	$SUDO chgrp $GROUPS "$KCORE_DIR/kallsyms" | ||||
| 	$SUDO chgrp $GROUPS "$KCORE_DIR/modules" | ||||
| 
 | ||||
| 	ln -s "$KCORE_DIR_BASENAME" "$PERF_DATA_DIR/kcore_dir" | ||||
| } | ||||
| 
 | ||||
| fix_buildid_cache_permissions() | ||||
| { | ||||
| 	if [ $EUID -ne 0 ] ; then | ||||
| 		echo "This script must be run as root via sudo " >&2 | ||||
| 		exit 1 | ||||
| 	fi | ||||
| 
 | ||||
| 	if [ -z "$SUDO_USER" ] ; then | ||||
| 		echo "This script must be run via sudo" >&2 | ||||
| 		exit 1 | ||||
| 	fi | ||||
| 
 | ||||
| 	USER_HOME=$(bash <<< "echo ~$SUDO_USER") | ||||
| 
 | ||||
| 	echo "Fixing buildid cache permissions" | ||||
| 
 | ||||
| 	find "$USER_HOME/.debug" -xdev -type d          ! -user "$SUDO_USER" -ls -exec chown    "$SUDO_USER" \{\} \; | ||||
| 	find "$USER_HOME/.debug" -xdev -type f -links 1 ! -user "$SUDO_USER" -ls -exec chown    "$SUDO_USER" \{\} \; | ||||
| 	find "$USER_HOME/.debug" -xdev -type l          ! -user "$SUDO_USER" -ls -exec chown -h "$SUDO_USER" \{\} \; | ||||
| 
 | ||||
| 	if [ -n "$SUDO_GID" ] ; then | ||||
| 		find "$USER_HOME/.debug" -xdev -type d          ! -group "$SUDO_GID" -ls -exec chgrp    "$SUDO_GID" \{\} \; | ||||
| 		find "$USER_HOME/.debug" -xdev -type f -links 1 ! -group "$SUDO_GID" -ls -exec chgrp    "$SUDO_GID" \{\} \; | ||||
| 		find "$USER_HOME/.debug" -xdev -type l          ! -group "$SUDO_GID" -ls -exec chgrp -h "$SUDO_GID" \{\} \; | ||||
| 	fi | ||||
| 
 | ||||
| 	echo "Done" | ||||
| } | ||||
| 
 | ||||
| check_buildid_cache_permissions() | ||||
| { | ||||
| 	if [ $EUID -eq 0 ] ; then | ||||
| 		return | ||||
| 	fi | ||||
| 
 | ||||
| 	PERMISSIONS_OK+=$(find "$HOME/.debug" -xdev -type d          ! -user "$USER" -print -quit) | ||||
| 	PERMISSIONS_OK+=$(find "$HOME/.debug" -xdev -type f -links 1 ! -user "$USER" -print -quit) | ||||
| 	PERMISSIONS_OK+=$(find "$HOME/.debug" -xdev -type l          ! -user "$USER" -print -quit) | ||||
| 
 | ||||
| 	PERMISSIONS_OK+=$(find "$HOME/.debug" -xdev -type d          ! -group "$GROUPS" -print -quit) | ||||
| 	PERMISSIONS_OK+=$(find "$HOME/.debug" -xdev -type f -links 1 ! -group "$GROUPS" -print -quit) | ||||
| 	PERMISSIONS_OK+=$(find "$HOME/.debug" -xdev -type l          ! -group "$GROUPS" -print -quit) | ||||
| 
 | ||||
| 	if [ -n "$PERMISSIONS_OK" ] ; then | ||||
| 		echo "*** WARNING *** buildid cache permissions may need fixing" >&2 | ||||
| 	fi | ||||
| } | ||||
| 
 | ||||
| record() | ||||
| { | ||||
| 	echo "Recording" | ||||
| 
 | ||||
| 	if [ $EUID -ne 0 ] ; then | ||||
| 
 | ||||
| 		if [ "$(cat /proc/sys/kernel/kptr_restrict)" -ne 0 ] ; then | ||||
| 			echo "*** WARNING *** /proc/sys/kernel/kptr_restrict prevents access to kernel addresses" >&2 | ||||
| 		fi | ||||
| 
 | ||||
| 		if echo "${PERF_OPTIONS[@]}" | grep -q ' -a \|^-a \| -a$\|^-a$\| --all-cpus \|^--all-cpus \| --all-cpus$\|^--all-cpus$' ; then | ||||
| 			echo "*** WARNING *** system-wide tracing without root access will not be able to read all necessary information from /proc" >&2 | ||||
| 		fi | ||||
| 
 | ||||
| 		if echo "${PERF_OPTIONS[@]}" | grep -q 'intel_pt\|intel_bts\| -I\|^-I' ; then | ||||
| 			if [ "$(cat /proc/sys/kernel/perf_event_paranoid)" -gt -1 ] ; then | ||||
| 				echo "*** WARNING *** /proc/sys/kernel/perf_event_paranoid restricts buffer size and tracepoint (sched_switch) use" >&2 | ||||
| 			fi | ||||
| 
 | ||||
| 			if echo "${PERF_OPTIONS[@]}" | grep -q ' --per-thread \|^--per-thread \| --per-thread$\|^--per-thread$' ; then | ||||
| 				true | ||||
| 			elif echo "${PERF_OPTIONS[@]}" | grep -q ' -t \|^-t \| -t$\|^-t$' ; then | ||||
| 				true | ||||
| 			elif [ ! -r /sys/kernel/debug -o ! -x /sys/kernel/debug ] ; then | ||||
| 				echo "*** WARNING *** /sys/kernel/debug permissions prevent tracepoint (sched_switch) use" >&2 | ||||
| 			fi | ||||
| 		fi | ||||
| 	fi | ||||
| 
 | ||||
| 	if [ -z "$1" ] ; then | ||||
| 		echo "Workload is required for recording" >&2 | ||||
| 		usage | ||||
| 	fi | ||||
| 
 | ||||
| 	if [ -e "$PERF_DATA_DIR" ] ; then | ||||
| 		echo "'$PERF_DATA_DIR' exists" >&2 | ||||
| 		exit 1 | ||||
| 	fi | ||||
| 
 | ||||
| 	find_perf | ||||
| 
 | ||||
| 	mkdir "$PERF_DATA_DIR" | ||||
| 
 | ||||
| 	echo "$PERF record -o $PERF_DATA_DIR/perf.data ${PERF_OPTIONS[@]} -- $@" | ||||
| 	"$PERF" record -o "$PERF_DATA_DIR/perf.data" "${PERF_OPTIONS[@]}" -- "$@" || true | ||||
| 
 | ||||
| 	if rmdir "$PERF_DATA_DIR" > /dev/null 2>/dev/null ; then | ||||
| 		exit 1 | ||||
| 	fi | ||||
| 
 | ||||
| 	copy_kcore | ||||
| 
 | ||||
| 	echo "Done" | ||||
| } | ||||
| 
 | ||||
| subcommand() | ||||
| { | ||||
| 	find_perf | ||||
| 	check_buildid_cache_permissions | ||||
| 	echo "$PERF $PERF_SUB_COMMAND -i $PERF_DATA_DIR/perf.data --kallsyms=$PERF_DATA_DIR/kcore_dir/kallsyms $@" | ||||
| 	"$PERF" $PERF_SUB_COMMAND -i "$PERF_DATA_DIR/perf.data" "--kallsyms=$PERF_DATA_DIR/kcore_dir/kallsyms" "$@" | ||||
| } | ||||
| 
 | ||||
| if [ "$1" = "fix_buildid_cache_permissions" ] ; then | ||||
| 	fix_buildid_cache_permissions | ||||
| 	exit 0 | ||||
| fi | ||||
| 
 | ||||
| PERF_SUB_COMMAND=$1 | ||||
| PERF_DATA_DIR=$2 | ||||
| shift || true | ||||
| shift || true | ||||
| 
 | ||||
| if [ -z "$PERF_SUB_COMMAND" ] ; then | ||||
| 	usage | ||||
| fi | ||||
| 
 | ||||
| if [ -z "$PERF_DATA_DIR" ] ; then | ||||
| 	usage | ||||
| fi | ||||
| 
 | ||||
| case "$PERF_SUB_COMMAND" in | ||||
| "record") | ||||
| 	while [ "$1" != "--" ] ; do | ||||
| 		PERF_OPTIONS+=("$1") | ||||
| 		shift || break | ||||
| 	done | ||||
| 	if [ "$1" != "--" ] ; then | ||||
| 		echo "Options and workload are required for recording" >&2 | ||||
| 		usage | ||||
| 	fi | ||||
| 	shift | ||||
| 	record "$@" | ||||
| ;; | ||||
| "script") | ||||
| 	subcommand "$@" | ||||
| ;; | ||||
| "report") | ||||
| 	subcommand "$@" | ||||
| ;; | ||||
| "inject") | ||||
| 	subcommand "$@" | ||||
| ;; | ||||
| *) | ||||
| 	usage | ||||
| ;; | ||||
| esac | ||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Adrian Hunter
						Adrian Hunter