time issues and ZFS
Adrian Chadd
adrian at freebsd.org
Mon Jan 21 20:09:28 UTC 2013
I still firmly believe the ACPI event timer code is racy, and what we
may be seeing here is the fallout from that.
It's very possible that we're missing interrupts here - the new
eventtimer code that made it into 9.x puts the halt behind a critical
section, with interrupts disabled. The only platforms that correctly
implement enable-interrupts-and-halt atomically is the HLT (well, and
the don't-sleep-at-all) idle loops on i386/amd64. The default method
is to use the ACPI sleep method, which doesn't do atomic interrupt
enable / halt.
I'm still seeing odd stuff on some of my ACPI-using netbooks when
doing net80211/ath development and it all goes away whenever I fondle
with the above settings.
So, play with kern.eventtimer.periodic, kern.eventtimer.idletick and
machdep.idle (try setting machdep.idle to hlt, or something else
listed in machdep.idle_available) - please report back what the
results are.
Adrian
On 21 January 2013 07:54, Ian Lepore <ian at freebsd.org> wrote:
> On Mon, 2013-01-21 at 17:35 +0200, Daniel Braniss wrote:
>> ...
>> >
>> > What's the output of sysctl kern.eventtimer?
>>
>> kern.eventtimer.periodic is 0
>>
>> > Does the bad behavior
>> > change if you set kern.eventimer.periodic=1?
>> >
>>
>> setting kern.eventtimer.timer=LAPIC
>> instead of the default HPET made the missing cpu timers to appear:
>> # vmstat -i
>> interrupt total rate
>> irq3: uart1 1695 0
>> irq4: uart0 5 0
>> irq19: ehci0 3875 0
>> irq20: hpet0 uhci3 5495755 1135
>> irq21: uhci2 ehci1 29 0
>> irq23: atapci0 48 0
>> cpu0:timer 7063 1
>> irq256: bce0 117073 24
>> irq260: mfi0 51083 10
>> irq261: mfi1 3088 0
>> cpu1:timer 484 0
>> cpu14:timer 36 0
>> cpu6:timer 486 0
>> cpu8:timer 38 0
>> cpu5:timer 38 0
>> cpu15:timer 38 0
>> cpu7:timer 32 0
>> cpu12:timer 38 0
>> cpu3:timer 40 0
>> cpu9:timer 36 0
>> cpu10:timer 34 0
>> cpu11:timer 37 0
>> cpu2:timer 33 0
>> cpu13:timer 40 0
>> cpu4:timer 36 0
>> Total 5681160 1173
>>
>> is this relevant?
>
> I'll have to let someone who knows modern x86 hardware better comment on
> the relative merits of hpet vs. lapic timers. If it was using hpet in
> one-shot mode, and changing it to hpet in periodic mode makes the
> problem go away, that might be a clue that there's something wrong in
> the hpet eventtimer start or interrupt routines.
>
> I wonder if a single missed interrupt in one-shot mode would bring an
> eventtimer to a halt like that? And if so, then what is it about
> manually asking for the date that kicks it into running again?
>
> -- Ian
>
>
> _______________________________________________
> freebsd-stable at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-stable
> To unsubscribe, send any mail to "freebsd-stable-unsubscribe at freebsd.org"
More information about the freebsd-stable
mailing list