perf는 어떤 스트림을 사용합니까?

perf는 어떤 스트림을 사용합니까?

이 명령은 어떤 스트림을 사용합니까 perf! ? 캡쳐하려고 했는데

(perf stat -x, -ecache-misses ./a.out>/dev/null) 2> results

다음과 같은https://stackoverflow.com/q/13232889/50305, 그러나 소용이 없습니다. 왜 입력을 캡처할 수 없나요...물고기가 탈출하도록 놔두는 것처럼요!

답변1

이전 버전의 성능 ~2.6.x

성능 버전: 2.6.35.14-106을 사용하고 있습니다..

모든 출력을 캡처

Fedora 14 시스템에 스위치가 없으므로 -x이것이 실제 문제인지 확실하지 않습니다. 나중에 최신 Ubuntu 12.10 시스템을 살펴보겠지만 이것이 저에게 효과적이었습니다.

$ (perf stat -ecache-misses ls ) > stat.log 2>&1
$
$ more stat.log 
maccheck.txt
sample.txt
stat.log

 Performance counter stats for 'ls':

              13209  cache-misses            

        0.018231264  seconds time elapsed

나는 단지 perf의 출력을 원합니다.

이것을 시도하면 출력이 ls리디렉션됩니다 /dev/null. 출력 형식 perf(STDERR 및 STDOUT)은 파일로 이동됩니다 stat.log.

$ (perf stat -ecache-misses ls > /dev/null ) > stat.log 2>&1
[saml@grinchy 89576]$ more stat.log 

 Performance counter stats for 'ls':

              12949  cache-misses            

        0.022831281  seconds time elapsed

최신 버전의 perf 3.x+

내가 사용하는 성능 버전: 3.5.7

perf의 출력만 캡처

최신 버전에는 perf메시지가 전송되는 위치를 제어하기 위한 전용 옵션이 있습니다. -o|--output이 옵션을 통해 파일로 보내도록 선택할 수 있습니다 . 출력을 캡처하려면 이 스위치에 파일 이름을 지정하기만 하면 됩니다.

-o file, --output file
    Print the output into the designated file.

또 다른 접근 방식은 출력을 대체 파일 설명자로 리디렉션하는 것입니다 3. 스트리밍하기 전에 이 대체 파일 핸들을 지정하기만 하면 됩니다.

--log-fd
    Log output to fd, instead of stderr. Complementary to --output, and 
    mutually exclusive with it. --append may be used here. Examples: 
       3>results perf stat --log-fd 3  — $cmd
       -or-
       3>>results perf stat --log-fd 3 --append — $cmd

perf따라서 명령의 출력을 수집하려면 ls다음 명령을 사용할 수 있습니다.

$ 3>results.log perf stat --log-fd 3 ls > /dev/null
$ 
$ more results.log

 Performance counter stats for 'ls':

          2.498964 task-clock                #    0.806 CPUs utilized          
                 0 context-switches          #    0.000 K/sec                  
                 0 CPU-migrations            #    0.000 K/sec                  
               258 page-faults               #    0.103 M/sec                  
           880,752 cycles                    #    0.352 GHz                    
           597,809 stalled-cycles-frontend   #   67.87% frontend cycles idle   
           652,087 stalled-cycles-backend    #   74.04% backend  cycles idle   
         1,261,424 instructions              #    1.43  insns per cycle        
                                             #    0.52  stalled cycles per insn [55.31%]
     <not counted> branches                
     <not counted> branch-misses           

       0.003102139 seconds time elapsed

해당 버전을 사용하는 --append경우 여러 명령의 내용이 동일한 로그 파일에 추가됩니다 results.log.

설치실적

설치는 매우 간단합니다.

페도라 모자

$ yum install perf

우분투/데비안

$ apt-get install linux-tool-common linux-tools

인용하다

답변2

이것은 마침내 나를 위해 일했습니다.

3>results perf stat -x, -ecache-misses --log-fd 3 --append -- ./a.out

에 따르면 man perf-stat, log-fd플래그.

관련 정보