Versões mais antigas do perf ~ 2.6.x
Estou usando a versão do perf: 2.6.35.14-106 .
Capture toda a saída
Eu não tenho a opção -x
no meu sistema Fedora 14, então não tenho certeza se esse é o seu problema real ou não. Eu investigarei em um novo sistema Ubuntu 12.10 mais tarde, mas isso funcionou para mim:
$ (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
Eu só quero a saída do perf
Você pode tentar isso, a saída de ls
será redirecionada para /dev/null
. O formulário de saída perf
(STDERR e STDOUT) vai para o arquivo, 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
Versões mais recentes do perf 3.x +
Estou usando a versão do perf: 3.5.7
Capturando apenas a saída do perf
Com as versões mais recentes de perf
, há opções dedicadas para controlar onde as mensagens são enviadas. Você tem a opção de enviá-los para um arquivo por meio da opção -o|--output
. Basta dar a um desses nomes um nome para capturar a saída.
-o file, --output file
Print the output into the designated file.
A alternativa é redirecionar a saída para um descritor de arquivo alternativo, 3
, por exemplo. Tudo o que você precisa fazer é direcionar esse identificador de arquivo alternativo antes de fazer o streaming para ele.
--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
Então, se quisermos coletar a saída perf
para o comando ls
, você pode usar este comando:
$ 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
Se você usar a versão --append
, o conteúdo de vários comandos será anexado ao mesmo arquivo de log, results.log
no nosso caso.
Instalando o perf
A instalação é bem trivial:
Fedora
$ yum install perf
Ubuntu / Debian
$ apt-get install linux-tool-common linux-tools