Re: [RFC mm][PATCH 2/5] percpu cached mm counter

Ingo Molnar
2009-12-10T18:55:13Z

* Christoph Lameter <cl@linux-foundation.org> wrote:

> On Thu, 10 Dec 2009, Ingo Molnar wrote:
>
> >
> > * Christoph Lameter <cl@linux-foundation.org> wrote:
> >
> > > On Thu, 10 Dec 2009, Ingo Molnar wrote:
> > >
> > > > No, i'm not suggesting that - i'm just suggesting that right now
> > > > MM stats are not very well suited to be exposed via perf. If we
> > > > wanted to measure/sample the information in /proc/<pid>/statm it
> > > > just wouldnt be possible. We have a few events like pagefaults
> > > > and a few tracepoints as well - but more would be possible IMO.
> > >
> > > vital MM stats are exposed via /proc/<pid> interfaces. Performance
> > > monitoring is something optional MM VM stats are used for VM
> > > decision on memory and process handling.
> >
> > You list a few facts here but what is your point?
>
> The stats are exposed already in a well defined way. [...]

They are exposed in a well defined but limited way: you cannot profile
based on those stats, you cannot measure them across a workload
transparently at precise task boundaries and you cannot trace based on
those stats.

For example, just via the simple page fault events we can today do
things like:

aldebaran:~> perf stat -e minor-faults /bin/bash -c "echo hello"
hello

Performance counter stats for '/bin/bash -c echo hello':

292 minor-faults

0.000884744 seconds time elapsed

aldebaran:~> perf record -e minor-faults -c 1 -f -g firefox
Error: cannot open display: :0
[ perf record: Woken up 3 times to write data ]
[ perf record: Captured and wrote 0.324 MB perf.data (~14135 samples) ]

aldebaran:~> perf report
no symbols found in /bin/sed, maybe install a debug package?
# Samples: 5312
#
# Overhead Command Shared Object Symbol
# ........ .............. ........................................ ......
#
12.54% firefox ld-2.10.90.so
[.] _dl_relocate_object
|
--- _dl_relocate_object
dl_open_worker
_dl_catch_error
dlopen_doit
0x7fffdf8c6562
0x68733d54524f5053

4.95% firefox libc-2.10.90.so
[.] __GI_memset
|
--- __GI_memset
...

I.e. 12.54% of the pagefaults in the firefox startup occur in
dlopen_doit()->_dl_catch_error()->dl_open_worker()->_dl_relocate_object()->
_dl_relocate_object() call path. 4.95% happen in __GI_memset() - etc.

> [...] Exposing via perf is outside of the scope of his work.

Please make thoughts about intelligent instrumentation solutions, and
please think "outside of the scope" of your usual routine.

Thanks,

Ingo