"참조"의 명령 목록을 포함하여 perf script
, perf trace
및 에 대한 설명서를 살펴보았습니다 .trace-cmd
sched:sched_process_exec
예를 들어 "실시간"을 사용하여 추적 할 수 있습니다 perf trace -a --no-syscalls -e sched:sched_process_exec
. 하지만 과정을 보여줄 뿐입니다이름(예를 들어 ls
). 추적점에 특정 매개변수가 없으면 PID가 표시되지 않습니다. perf script
항상 PID를 표시하지만 실시간 출력은 표시하지 않습니다. 파일의 내용을 표시합니다 perf.data
.
btrace
for 와 같은 단일 명령으로는 필요하지 않습니다 blktrace
. .blktrace -d /dev/sda -o - | blkparse -i -
(위의 두 명령 모두 PID를 표시합니다 :-). blktrace
추적 이벤트도 사용하는 일련의 명령이 기록된 추적을 인쇄하는 것과 동일한 형식으로 실시간 출력을 인쇄할 수 있다는 사실을 보면 실망스럽습니다 . 범용 추적 도구에서 이렇게 훌륭한 기능을 발견한 적이 없습니다! )
답변1
perf record -a --no-syscalls -e sched:sched_process_exec sh -c read | perf script
( sh -c read
이 추적을 중지할 수 있는 방법이 있습니다. Enter 키를 누르십시오. 이 명령을 생략하고 ctrl+C를 사용하여 파이프를 중단하려고 하면 출력도 손실됩니다. 아마도 중단되기 때문일 것입니다 perf script
.)
그러나 버퍼링으로 인해 이 출력은 "실시간"이 아닙니다. 예를 들어 위 명령을 실행하면 아무 것도 표시되지 않지만 Enter 키를 누르면 명령이 중지되고 의 exec() 줄이 표시됩니다 sh
. blktrace
가지다특별한 경우 코드기본 C stdio 버퍼링 비활성화를 포함하여 파이프의 출력을 처리합니다. 명령 perf record
으로 실행하려고 하면 unbuffer
"호환되지 않는 파일 형식" 오류가 발생합니다. 오류는 perf script
.
man perf-report
...
옵션
-i, --input=
파일 이름을 입력하세요. (기본값: perf.datastdin이 fifo가 아닌 이상)