Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- From: Steven Rostedt <rostedt@xxxxxxxxxxx>
- Date: Wed, 16 Jan 2008 10:06:40 -0500 (EST)
On Wed, 16 Jan 2008, Mathieu Desnoyers wrote:
Hrm, I will reply to the rest of this email in a separate mail, but
there is another concern, simpler than memory ordering, that just hit
me :
If we have CPU A calling clocksource_accumulate while CPU B is calling
get_monotonic_cycles, but events happens in the following order (because
of preemption or interrupts). Here, to make things worse, we would be on
x86 where cycle_t is not an atomic write (64 bits) :
CPU A CPU B
clocksource read
update cycle_mono (1st 32 bits)
read cycle_mono
read cycle_last
clocksource read
read cycle_mono
read cycle_last
update cycle_mono (2nd 32 bits)
update cycle_last
update cycle_acc
Therefore, we have :
- an inconsistant cycle_monotonic value
- inconsistant cycle_monotonic and cycle_last values.
Or is there something I have missed ?
No, there's probably issues there too, but no need to worry about it,
since I already showed that allowing for clocksource_accumulate to happen
inside the get_monotonic_cycles loop is already flawed.
If you really want an seqlock free algorithm (I _do_ want this for
tracing!) :) maybe going in the RCU direction could help (I refer to my
RCU-based 32-to-64 bits lockless timestamp counter extension, which
could be turned into the clocksource updater).
I know you pointed me the code, but lets assume that I'm still ignorant
;-)
do you actually use the RCU internals? or do you just reimplement an RCU
algorithm?
-- Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Follow-Ups:
- Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- From: Mathieu Desnoyers
- Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- References:
- [RFC PATCH 00/22 -v2] mcount and latency tracing utility -v2
- From: Steven Rostedt
- [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- From: Steven Rostedt
- Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- From: Mathieu Desnoyers
- Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- From: Steven Rostedt
- Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- From: Mathieu Desnoyers
- Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- From: Steven Rostedt
- Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- From: Mathieu Desnoyers
- Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- From: Steven Rostedt
- Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- From: Mathieu Desnoyers
- [RFC PATCH 00/22 -v2] mcount and latency tracing utility -v2
- Prev by Date: Re: [PATCH 1/2] Extend sys_clone and sys_unshare system calls API
- Next by Date: Re: [patch for 2.6.24? 1/1] cpufreq: Initialise default governor before use
- Previous by thread: Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- Next by thread: Re: [RFC PATCH 16/22 -v2] add get_monotonic_cycles
- Index(es):
Relevant Pages
|
|