내가 조사한 바에 따르면, 내가 작업 중인 컴퓨터에서는 "perf" 하위 시스템의 커널 측이 활성화되어 있는 것 같습니다.
커널 구성을 확인하면 다음이 표시됩니다.
$ zgrep "_PERF[_= ]" /proc/config.gz
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_EVENTS=y
# CONFIG_PERF_COUNTERS is not set
CONFIG_HAVE_PERF_EVENTS_NMI=y
나는 또한 설명된 검사를 수행했습니다.perf_events FAQ:
$ cat /proc/sys/kernel/perf_event_paranoid
1
하지만perf
도구설치되지 않음:
$ perf
-bash: perf: command not found
$ /sbin/perf
-bash: /sbin/perf: No such file or directory
$ /usr/sbin/perf
-bash: /usr/sbin/perf: No such file or directory
일반 사용자("2.6.36-gentoo-r4" 커널의 경우)로서 자신의 홈 디렉토리에 perf userland를 설치할 수 있습니까?
아니면 해당 컴퓨터의 관리자에게 설치를 요청해야 합니까? 더욱 불행하게도 dev-util/perf
Gentoo의 패키지는 amd64에서 차단(차단)됩니다.
$ emerge --search perf
[...]
* dev-util/perf [ Masked ]
Latest version available: 2.6.35_rc4
Latest version installed: [ Not Installed ]
Size of files: 73,503 kB
Homepage: http://perf.wiki.kernel.org/
Description: Userland tools for Linux Performance Counters
License: GPL-2
답변1
perf
루트가 아닌 사용자로 사용자 영역 도구를 설치하는 방법
kernel-2.6.36-gentoo-r4의 소스 코드 가져오기/찾기(젠투 리눅스에서). 첫 번째 수표는 다음에서 나왔습니다.이 답변
실제로,첫 번째
/usr/src/linux
커널 소스가 아직 설치되어 있는지 확인해야 합니다 . 쓰기 가능한 디렉토리에 복사할 수 있습니다. )그것으로 충분하지만 전체 커널 소스를 복사하는 대신 서로 연결했습니다.
$ mkdir -p build $ cd build $ ln -s /usr/src/linux-2.6.36-gentoo-r4
디렉토리에 쓸
perf
수 없으므로 빌드할 디렉토리를 만듭니다 .~/build/linux-2.6.36-gentoo-r4
$ mkdir -p perf
사실 원래 그런 건 아니었는데...
make
처음에 나오는 오류 메시지는 전혀 도움이 안 됐어요.tools/perf
커널 소스 디렉터리를 입력하세요$ cd linux-2.6.36-gentoo-r4/tools/perf
세우다
perf
,O=<destdir>
makefile에 옵션을 전달하는 것을 잊지 마세요디렉토리에 쓰기가 불가능하기 때문입니다(심볼릭 링크 대신 커널 소스를 복사했다면 그런 문제는 없을 것입니다).$ make O=~/build/perf -k Makefile:565: newt not found, disables TUI support. Please install newt-devel or libnewt-dev * new build flags or prefix CC ~/build/perf/perf.o CC ~/build/perf/builtin-annotate.o [...] CC ~/build/perf/util/scripting-engines/trace-event-python.o CC ~/build/perf/scripts/python/Perf-Trace-Util/Context.o AR ~/build/perf/libperf.a LINK ~/build/perf/perf ~/build/perf/libperf.a(trace-event-perl.o): In function `define_flag_value': ~/build/linux-2.6.36-gentoo-r4/tools/perf/util/scripting-engines/trace-event-perl.c:127: undefined reference to `PL_stack_sp' ~/build/linux-2.6.36-gentoo-r4/tools/perf/util/scripting-engines/trace-event-perl.c:131: undefined reference to `Perl_push_scope' [...] ~/build/perf/libperf.a(trace-event-python.o): In function `handler_call_die': ~/build/linux-2.6.36-gentoo-r4/tools/perf/util/scripting-engines/trace-event-python.c:53: undefined reference to `PyErr_Print' [...] collect2: ld returned 1 exit status make: *** [/home/narebski/build/perf/perf] Error 1 GEN perf-archive make: Target `all' not remade because of errors.
Google에서 "'Perl_push_scope'에 대한 정의되지 않은 참조"를 검색했습니다. 찾다Slackware 13.1에 perf 설치에 실패했습니다.unix.stackexchange.com에서. 다음 제안을 따르십시오.스스로에게 답해보세요, 또는 더 자세히 말하면진단:
$ make O=~/build/perf -k NO_LIBPERL=1 NO_LIBPYTHON=1 Makefile:565: newt not found, disables TUI support. Please install newt-devel or libnewt-dev * new build flags or prefix CC ~/build/perf/perf.o CC ~/build/perf/builtin-annotate.o [...] CC ~/build/perf/util/probe-finder.o AR ~/build/perf/libperf.a LINK ~/build/perf/perf GEN perf-archive
있으니 참고해주세요해결책해결책보다는 (내가 가지고 있는
libperl.so
).기본 설치 대상의 Makefile을 확인하십시오. 해당
$(HOME)
.installationperf
은 자체 홈 디렉토리에 있습니다.$ make O=~/build/perf -k NO_LIBPERL=1 NO_LIBPYTHON=1 install Makefile:565: newt not found, disables TUI support. Please install newt-devel or libnewt-dev GEN perf-archive install -d -m 755 '~/bin' install ~/build/perf/perf '~/bin' [...] install scripts/python/bin/* -t '~/libexec/perf-core/scripts/python/bin'
~/bin
PATH에 있는지 확인작동 하는지 확인하세요
perf
(쓰기 가능한 디렉터리에 cd하는 것을 잊지 마세요):$ cd $ perf record -f -- sleep 10 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.001 MB perf.data (~61 samples) ]
출력이 약간 편집되어 내 홈 디렉토리가 ~
.