perf_counter: add an mmap method to allow userspace to read hardware counters
authorPaul Mackerras <paulus@samba.org>
Mon, 23 Mar 2009 17:22:08 +0000 (18:22 +0100)
committerIngo Molnar <mingo@elte.hu>
Mon, 6 Apr 2009 07:30:26 +0000 (09:30 +0200)
commit37d81828385f8ff823caaaf1a83e72d065b6cfa1
tree972900a193a6a5ab1bdc14adcd7ab72bf0a51c13
parent96f6d4444302bb2ea2cf409529eef816462f6ce0
perf_counter: add an mmap method to allow userspace to read hardware counters

Impact: new feature giving performance improvement

This adds the ability for userspace to do an mmap on a hardware counter
fd and get access to a read-only page that contains the information
needed to translate a hardware counter value to the full 64-bit
counter value that would be returned by a read on the fd.  This is
useful on architectures that allow user programs to read the hardware
counters, such as PowerPC.

The mmap will only succeed if the counter is a hardware counter
monitoring the current process.

On my quad 2.5GHz PowerPC 970MP machine, userspace can read a counter
and translate it to the full 64-bit value in about 30ns using the
mmapped page, compared to about 830ns for the read syscall on the
counter, so this does give a significant performance improvement.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Orig-LKML-Reference: <20090323172417.297057964@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/powerpc/kernel/perf_counter.c
include/linux/perf_counter.h
kernel/perf_counter.c