strace
알았어, 그럼 비밀 은 아니지넓은출력 볼륨. (출력을 약간 필터링하는 옵션이 있다는 것을 알고 있습니다.)
strace
원시 로그를 사람이 더 쉽게 읽을 수 있는 형태로 처리 할 수 있는 도구가 있습니까 ?
어떤 종류의 "디코딩"을 찾고 있습니까? 음, 디자인 작업 수준이 strace
매우 낮습니다. 가장 중요한 점을 요약한 것을 찾고 있습니다. 예를 들어, FD 4는 서로 다른 시간에 서로 다른 파일을 가리킬 수 있습니다.기계내가 아니라 이것을 추적하세요. PID도 마찬가지입니다. 추적 등의 다양한 순간에 프로세스 트리를 볼 수 있기를 바랍니다. GUI 도구가 있으면 좋겠지만, 이해하기 쉽게 만들어준다면 텍스트 기반 도구라도 괜찮습니다.
답변1
strace 런타임 요약
strace
-c
다양한 시스템 호출에 대한 요약 보고서를 제공하는 스위치가 있습니다 .
-c Count time, calls, and errors for each system call and report a
summary on program exit. On Linux, this attempts to show system
time (CPU time spent running in the kernel) independent of wall
clock time. If -c is used with -f or -F (below), only aggregate
totals for all traced processes are kept.
예
$ strace -c systemctl list-unit-files --type=service
...
...
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
51.81 0.001831 1831 1 waitid
8.15 0.000288 7 39 mmap
7.89 0.000279 19 15 read
6.11 0.000216 8 26 mprotect
4.56 0.000161 11 15 open
2.91 0.000103 103 1 connect
2.24 0.000079 79 1 clone
2.15 0.000076 38 2 statfs
2.01 0.000071 4 19 close
1.95 0.000069 5 13 poll
1.90 0.000067 5 14 2 recvmsg
1.70 0.000060 4 16 fstat
0.88 0.000031 8 4 3 stat
0.82 0.000029 29 1 socket
0.65 0.000023 8 3 munmap
0.57 0.000020 5 4 sendto
0.42 0.000015 5 3 ioctl
0.40 0.000014 7 2 lstat
0.40 0.000014 7 2 sendmsg
0.34 0.000012 4 3 brk
0.23 0.000008 8 1 pipe
0.23 0.000008 4 2 fcntl
0.20 0.000007 4 2 rt_sigaction
0.20 0.000007 7 1 1 access
0.20 0.000007 4 2 geteuid
0.17 0.000006 6 1 execve
0.14 0.000005 5 1 getsockname
0.11 0.000004 4 1 dup2
0.11 0.000004 4 1 getresuid
0.11 0.000004 4 1 getresgid
0.11 0.000004 4 1 arch_prctl
0.08 0.000003 3 1 rt_sigprocmask
0.08 0.000003 3 1 getrlimit
0.08 0.000003 3 1 set_tid_address
0.08 0.000003 3 1 set_robust_list
0.00 0.000000 0 4 write
0.00 0.000000 0 1 kill
------ ----------- ----------- --------- --------- ----------------
100.00 0.003534 207 6 total
추적 로그의 사후 분석
나는 이 Perl 스크립트를 발견했습니다.Strace_analyzer.pl
이것은 당신이 찾고있는 것 같습니다.
$ ./strace_analyzer_ng_0.03.pl -help
Usage: strace-analyze [OPTION]… [FILE]
Analyzes strace output for IO functions. It creates statistics
on IO functions and performance of the read and write functions.
The strace file should have been run with ‘strace -tt [PROGRAM]
위에 링크된 페이지에 출력 예가 있습니다. 이 게시물은 너무 깁니다. 여기 Pastebin.com에도 게시했습니다.
strace, ioapps의 대안
'라는 앱을 찾았습니다.ioapps
이를 통해 애플리케이션이 실행 중일 때 수행되는 작업을 보다 직관적으로 이해할 수 있습니다. 아마도 이는 로그를 처리하는 것보다 달성하려는 작업에 더 적합할 수 있습니다 strace
.
그래픽 사용자 인터페이스 예$ ioprofiler-trace thunderbird
일단 로드되면 Thunderbird 창을 닫고 "ioproftrace.log"라는 추적 로그가 있는지 확인합니다. 이는 로그의 기본 이름입니다(-o 명령줄 옵션을 사용하여 다른 이름을 지정할 수 있음).
$ ls -l ioproftrace.log -rw-r--r-- 1 user user 74890554 Apr 4 22:04 ioproftrace.log
괜찮아 보이므로 ioprofiler를 실행할 수 있습니다.
$ ioprofiler ioproftrace.log
strace의 또 다른 대안인 strace+
노트:이 프로젝트,스트레스+는 더 이상 유지 관리되지 않으며 실제로 많은 기능이 스위치를 strace
통해 -k
기본값으로 병합 되었습니다. 따라서 strace
스위치가 병합될 때 버전이 최소 4.9 이상인지 확인하는 것이 좋습니다 .
-k Print the execution stack trace of the traced processes after
each system call (experimental).
strace+ 프로젝트 페이지에서 가져옴
strace+는 각 시스템 호출과 관련된 스택 추적을 수집하는 향상된 버전의 strace입니다. 시스템 호출에는 값비싼 사용자 커널 컨텍스트 스위치가 필요하기 때문에 성능 병목 현상의 원인이 되는 경우가 많습니다. strace+를 사용하면 프로그래머는 보다 자세한 시스템 호출 분석을 수행하고 어떤 호출 사이트가 비용이 많이 드는 시스템 호출을 발생시키는지 결정할 수 있으며 최적화 가능성도 있습니다.