I was playing with perf to get an idea of what it can do, so I started with a basic test:
$ perf stat ls
CREDITS PERF-BUILD-OPTIONS builtin-annotate.c builtin-help.o builtin-record.c builtin-report.o builtin-top.c command-list.txt libperf.a perf.h
Documentation PERF-CFLAGS builtin-annotate.o builtin-list.c builtin-record.o builtin-stat.c builtin-top.o common-cmds.h perf perf.o
Makefile PERF-VERSION-FILE builtin-help.c builtin-list.o builtin-report.c builtin-stat.o builtin.h design.txt perf.c util
Performance counter stats for 'ls':
1.675774 task-clock-msecs # 0.772 CPUs
13 context-switches # 0.008 M/sec
0 CPU-migrations # 0.000 M/sec
212 page-faults # 0.127 M/sec
2925124 cycles # 1745.536 M/sec
1048640 instructions # 0.358 IPC
547552 cache-references # 326.746 M/sec
8455 cache-misses # 5.045 M/sec
0.002170123 seconds time elapsed
Looks good, so I tried:
$ perf stat ls -l
Error: unknown switch `l'
So I tried instead:
$ perf stat 'ls -l'
ls -l: No such file or directory
Performance counter stats for 'ls -l':
<not counted> task-clock-msecs
<not counted> context-switches
<not counted> CPU-migrations
<not counted> page-faults
<not counted> cycles
<not counted> instructions
<not counted> cache-references
<not counted> cache-misses
0.000594919 seconds time elapsed
Am I doing something wrong here? Or perhaps perf should be taught the difference between command-line switches before or after the perf command (e.g. stat) being invoked?
--
Kevin Winchester
On Wed, Jul 01, 2009 at 09:03:52PM -0300, Kevin Winchester wrote:
>
> I was playing with perf to get an idea of what it can do, so I started with a basic test:
>
> $ perf stat ls
> CREDITS PERF-BUILD-OPTIONS builtin-annotate.c builtin-help.o builtin-record.c builtin-report.o builtin-top.c command-list.txt libperf.a perf.h
> Documentation PERF-CFLAGS builtin-annotate.o builtin-list.c builtin-record.o builtin-stat.c builtin-top.o common-cmds.h perf perf.o
> Makefile PERF-VERSION-FILE builtin-help.c builtin-list.o builtin-report.c builtin-stat.o builtin.h design.txt perf.c util
>
> Performance counter stats for 'ls':
>
> 1.675774 task-clock-msecs # 0.772 CPUs
> 13 context-switches # 0.008 M/sec
> 0 CPU-migrations # 0.000 M/sec
> 212 page-faults # 0.127 M/sec
> 2925124 cycles # 1745.536 M/sec
> 1048640 instructions # 0.358 IPC
> 547552 cache-references # 326.746 M/sec
> 8455 cache-misses # 5.045 M/sec
>
> 0.002170123 seconds time elapsed
>
>
>
>
> Looks good, so I tried:
>
> $ perf stat ls -l
> Error: unknown switch `l'
>
>
>
>
> So I tried instead:
>
> $ perf stat 'ls -l'
> ls -l: No such file or directory
>
> Performance counter stats for 'ls -l':
>
> <not counted> task-clock-msecs
> <not counted> context-switches
> <not counted> CPU-migrations
> <not counted> page-faults
> <not counted> cycles
> <not counted> instructions
> <not counted> cache-references
> <not counted> cache-misses
>
> 0.000594919 seconds time elapsed
>
>
>
>
>
> Am I doing something wrong here? Or perhaps perf should be taught the difference between command-line switches before or after the perf command (e.g. stat) being invoked?
>
Hi,
When you have a command line to play that has parameters, then
separate the perf parameters from the command line using "--":
./perf stat -- ls -l
I guess it's inspired from the when you have to pass paths
and branches at the same time:
git-diff branch1 branch2 -- kernel/perf_counter.c