추적 로그 디코딩/요약

추적 로그 디코딩/요약

strace알았어, 그럼 비밀 은 아니지넓은출력 볼륨. (출력을 약간 필터링하는 옵션이 있다는 것을 알고 있습니다.)

strace원시 로그를 사람이 더 쉽게 읽을 수 있는 형태로 처리 할 수 있는 도구가 있습니까 ?

어떤 종류의 "디코딩"을 찾고 있습니까? 음, 디자인 작업 수준이 strace매우 낮습니다. 가장 중요한 점을 요약한 것을 찾고 있습니다. 예를 들어, FD 4는 서로 다른 시간에 서로 다른 파일을 가리킬 수 있습니다.기계내가 아니라 이것을 추적하세요. PID도 마찬가지입니다. 추적 등의 다양한 순간에 프로세스 트리를 볼 수 있기를 바랍니다. GUI 도구가 있으면 좋겠지만, 이해하기 쉽게 만들어준다면 텍스트 기반 도구라도 괜찮습니다.

답변1

strace 런타임 요약

strace-c다양한 시스템 호출에 대한 요약 보고서를 제공하는 스위치가 있습니다 .

strace 매뉴얼 페이지에서 발췌
-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 
그래픽 사용자 인터페이스 예

   SS1

strace의 또 다른 대안인 strace+

노트:이 프로젝트,스트레스+는 더 이상 유지 관리되지 않으며 실제로 많은 기능이 스위치를 strace통해 -k기본값으로 병합 되었습니다. 따라서 strace스위치가 병합될 때 버전이 최소 4.9 이상인지 확인하는 것이 좋습니다 .

strace 매뉴얼 페이지에서 발췌
-k          Print the execution stack trace of the traced processes after 
            each system call (experimental).
strace+ 프로젝트 페이지에서 가져옴

strace+는 각 시스템 호출과 관련된 스택 추적을 수집하는 향상된 버전의 strace입니다. 시스템 호출에는 값비싼 사용자 커널 컨텍스트 스위치가 필요하기 때문에 성능 병목 현상의 원인이 되는 경우가 많습니다. strace+를 사용하면 프로그래머는 보다 자세한 시스템 호출 분석을 수행하고 어떤 호출 사이트가 비용이 많이 드는 시스템 호출을 발생시키는지 결정할 수 있으며 최적화 가능성도 있습니다.

관련 정보