-
lttng: 커널 프로파일링 에러 (Unable to list kernel events: Kernel tracer not available)Develop/Debuging 2016. 2. 5. 08:59
우분투 사용 중에 lttng로 시스템을 프로파일링해야 되는 일이 생겼는데
아래와 같은 메세지를 띄우며 실행이 되지 않는 문제가 생겼다
sudo lttng list -k
Error: Unable to list kernel events: Kernel tracer not available
Error: Command error
아마 커널이 업데이트 되면서 lttng 구동에 필요한 커널 모듈이 빠진 것으로 보이는데
패키지 관리자로 아무리 삽질을 해봐도 해결이 어려워 소스에서 따로 빌드해 해결하였다
(보통 lttng-modules-dkms로 설치가 되어야 정상...)
나와 같이 삽질하는 사람이 없길 바라며 아래의 방법을 공유한다.
일단 아래 사이트로 가서 빌드할 소스를 받는다
http://lttng.org/download/#build-from-source
우선 사용 중인 커널이 아래의 config가 enable되어 있는지 확인하자:
CONFIG_MODULES
CONFIG_KALLSYMS
CONFIG_HIGH_RES_TIMERS
CONFIG_TRACEPOINTS
이제 컴파일과 인스톨 과정이 남아있는데, 현재 구동 중인 커널에 맞게 컴파일 하고 싶다면 아래와 같이 타이핑! (쉽다!!!)
make
sudo make modules_install
sudo depmod -a
만약 특정 커널을 위해 모듈을 컴파일해야 된다면KERNELDIR에 해당 커널의 패스를 지정해 주면 된다.아무 에러 없이 지나왔다면 아래 명령어를 쳐보자sudo lttng list -k아래와 같은 출력이 나오면 성공이다.
Kernel events:
-------------
irq_handler_entry (loglevel: TRACE_EMERG (0)) (type: tracepoint)
irq_handler_exit (loglevel: TRACE_EMERG (0)) (type: tracepoint)
irq_softirq_entry (loglevel: TRACE_EMERG (0)) (type: tracepoint)
irq_softirq_exit (loglevel: TRACE_EMERG (0)) (type: tracepoint)
irq_softirq_raise (loglevel: TRACE_EMERG (0)) (type: tracepoint)
jbd2_checkpoint (loglevel: TRACE_EMERG (0)) (type: tracepoint)
jbd2_start_commit (loglevel: TRACE_EMERG (0)) (type: tracepoint)
jbd2_commit_locking (loglevel: TRACE_EMERG (0)) (type: tracepoint)
jbd2_commit_flushing (loglevel: TRACE_EMERG (0)) (type: tracepoint)
jbd2_commit_logging (loglevel: TRACE_EMERG (0)) (type: tracepoint)
...
...
...
이제 신나게 프로파일링 해보자...
하아.... ㅠ
댓글