diff options
author | Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | 2011-03-16 19:05:58 -0400 |
---|---|---|
committer | Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> | 2011-03-16 19:05:58 -0400 |
commit | e4e9699bcf4b5ea207c859e056bb705e30f06f10 (patch) | |
tree | bb004ac5b3d639ebf9830d0430992065a5091d4f /arch/arm/plat-omap/include/plat/trace-clock.h | |
parent | 710944c4e1f7468dba1a0c4fa36b4cda5846f350 (diff) |
trace-clock-userspace
TRACE_CLOCK and TRACE_CLOCK_FREQ in clock_gettime
These new options to clock_gettime allows the user to retreive the TSC
frequency and the current TSC from userspace.
We use the LTTng infrastructure to make sure the TSC is synchronized. If
it is not, we fallback to a syscall (which for the moment does the same
thing but in the future will be modified to ensure consistency for the
tracing between user and kernel space).
The main difference with using the TSC clocksource directly is that the
time starts at machine boot and not at Linux boot which makes it possible
to correlate user and kernelspace events. Also we export frequency and
cycles, we don't do the conversion in sec.nsec from the kernel since we
don't need it.
The differences between the v1 are :
- we validated on 32 bits the clock_gettime vDSO doesn't exist so it
cleans up the vDSO code;
- the syscall is now properly defined using the posix timer architecture
- we export the frequency to userspace so we don't need to convert the
cycles in sec.nsec anymore. Which means that on 64 bits machine, the
nsec field will contain the whole cycle counter and on 32 bits the
value is split between the two fields sec and nsec.
- remove the rdtsc_barrier() which is overkill for tracing purpose
- trace_clock_is_sync field is updated as soon as the LTTng trace clock
detects an inconsistency
Updated benchmarks (with 20000000 iterations reading the tsc before and
after each call on an i7 920):
64 bits with vDSO
average cycles for clock_realtime: 101
average cycles for clock_monotonic: 104
average cycles for clock_trace: 52
64 bits without vDSO (using syscall)
average cycles for clock_realtime: 240
average cycles for clock_monotonic: 256
average cycles for clock_trace: 219
32 bits (without vDSO)
average cycles for clock_realtime: 649
average cycles for clock_monotonic: 661
average cycles for clock_trace: 616
Signed-off-by: Julien Desfossez <julien.desfossez@polymtl.ca>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Diffstat (limited to 'arch/arm/plat-omap/include/plat/trace-clock.h')
0 files changed, 0 insertions, 0 deletions