Date: Fri, 16 Jul 2010 12:31:10 -0700 From: Rob Farmer <rfarmer@predatorlabs.net> To: Alexander Motin <mav@freebsd.org> Cc: current <current@freebsd.org> Subject: Re: Clock not moving in virtual machine Message-ID: <AANLkTilCKUtVEiViEN_EoCMGl7KvryVXEd-sWuxFjzsS@mail.gmail.com> In-Reply-To: <4C3FFD3F.7060909@FreeBSD.org> References: <mailpost.1279239004.5520450.26216.mailing.freebsd.current@FreeBSD.cs.nctu.edu.tw> <4C3FFD3F.7060909@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jul 15, 2010 at 11:33 PM, Alexander Motin <mav@freebsd.org> wrote: > Rob Farmer wrote: >> I have a VPS from rootbsd.net which is running current, though I don't >> update it very often. I just built and installed a new world and >> kernel and now the clock will not move from the time the system was >> booted, ie: >> # date >> Thu Jul 15 16:15:58 PDT 2010 >> <wait a minute> >> # date >> Thu Jul 15 16:15:58 PDT 2010 >> >> I have an old kernel from May 27 which doesn't have this problem. I >> noticed some clock related stuff changing in current in the last >> couple of weeks and suspect that their VM setup doesn't play well with >> these changes (their site says they use Xen, but several boot messages >> refer to QEMU). Officially, I think they only support running 8.0 so I >> thought I would ask here if anyone has any ideas before putting in a >> support request. >> >> Here's a diff of the dmesgs - I can post full copies if needed but >> didn't want to start with a ridicously long message: > >> =A0FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs >> =A0FreeBSD/SMP: 0 package(s) x 16 core(s) x 2 SMT threads >> =A0 cpu0 (BSP): APIC ID: =A00 > > Probably not related, but funny. :) So you have two CPUs? Yes, there's 2 CPUs. It also gives the non uniform processors warning, but it has been like that forever. > >> @@ -81,7 +81,10 @@ >> =A0ppc0: Generic chipset (NIBBLE-only) in COMPATIBLE mode >> =A0ppc0: [ITHREAD] >> =A0ppbus0: <Parallel port bus> on ppc0 >> -atrtc0: <AT Real Time Clock> at port 0x70 irq 8 on isa0 >> +atrtc0: <AT realtime clock> at port 0x70 irq 8 on isa0 >> +atrtc0: [FILTER] >> +Event timer "RTC" frequency 32768 Hz quality 0 >> +Starting kernel event timers: LAPIC @ 200Hz, RTC @ 128Hz >> =A0Timecounters tick every 5.000 msec > > Everything seems reasonable there. Try to collect more information: > sysctl kern.timecounter > sysctl kern.eventtimer > vmstat -ia > systat -vm 1 (presence and frequencies of interrupts) > > It could be a bug in emulation of some timers or bug in respective timer > driver, which was not triggered before last changes. You may try switch > to different timecounter by setting kern.timecounter.hardware, or > different eventtimers by setting kern.eventtimer.timer1 and > kern.eventtimer.timer2 sysctls. > > -- > Alexander Motin > This is all on the new (not-working) kernel in single user mode: # sysctl kern.timecounter kern.timecounter.tick: 1 kern.timecounter.choice: TSC(-100) dummy(-1000000) kern.timecounter.hardware: dummy kern.timecounter.stepwarnings: 0 kern.timecounter.tc.TSC.mask: 4294967295 kern.timecounter.tc.TSC.counter: 205772785 kern.timecounter.tc.TSC.frequency: 2261052646 kern.timecounter.tc.TSC.quality: -100 kern.timecounter.smp_tsc: 0 kern.timecounter.invariant_tsc: 1 kern.timecounter.tc.TSC.counter changes everytime (205772785, 3200717147, 1205899870, ...) but I can't see any pattern. # sysctl kern.eventtimer kern.eventtimer.choice: LAPIC(500) RTC(0) kern.eventtimer.et.LAPIC.flags: 15 kern.eventtimer.et.LAPIC.frequency: 50001404 kern.eventtimer.et.LAPIC.quality: 500 kern.eventtimer.et.RTC.flags: 1 kern.eventtimer.et.RTC.frequency: 32768 kern.eventtimer.et.RTC.quality: 0 kern.eventtimer.timer2: RTC kern.eventtimer.timer1: LAPIC kern.eventtimer.singlemul: 4 # vmstat -ia interrupt total rate ??? 0 0 irq1: atkbd0 339 339 stray irq1 0 0 irq0: 0 0 stray irq0 0 0 irq3: 0 0 stray irq3 0 0 irq4: uart0 0 0 stray irq4 0 0 irq5: re0 0 0 stray irq5 0 0 irq6: 0 0 stray irq6 0 0 irq7: ppc0 0 0 stray irq7 0 0 irq8: atrtc0 24463 24463 stray irq8 0 0 irq9: 0 0 stray irq9 0 0 irq10: re1 0 0 stray irq10 0 0 irq11: 0 0 stray irq11 0 0 irq12: psm0 0 0 stray irq12 0 0 irq13: 0 0 stray irq13 0 0 irq14: ata0 224 224 stray irq14 0 0 irq15: ata1 0 0 stray irq15 0 0 irq16: 0 0 stray irq16 0 0 irq17: 0 0 stray irq17 0 0 irq18: 0 0 stray irq18 0 0 irq19: 0 0 stray irq19 0 0 irq20: 0 0 stray irq20 0 0 irq21: 0 0 stray irq21 0 0 irq22: 0 0 stray irq22 0 0 irq23: 0 0 stray irq23 0 0 irq24: 0 0 stray irq24 0 0 irq25: 0 0 stray irq25 0 0 irq26: 0 0 stray irq26 0 0 irq27: 0 0 stray irq27 0 0 irq28: 0 0 stray irq28 0 0 irq29: 0 0 stray irq29 0 0 irq30: 0 0 stray irq30 0 0 irq31: 0 0 stray irq31 0 0 irq32: 0 0 stray irq32 0 0 irq33: 0 0 stray irq33 0 0 irq34: 0 0 stray irq34 0 0 irq35: 0 0 stray irq35 0 0 irq36: 0 0 stray irq36 0 0 irq37: 0 0 stray irq37 0 0 irq38: 0 0 stray irq38 0 0 irq39: 0 0 stray irq39 0 0 irq40: 0 0 stray irq40 0 0 irq41: 0 0 stray irq41 0 0 irq42: 0 0 stray irq42 0 0 irq43: 0 0 stray irq43 0 0 irq44: 0 0 stray irq44 0 0 irq45: 0 0 stray irq45 0 0 irq46: 0 0 stray irq46 0 0 irq47: 0 0 stray irq47 0 0 cpu0:timer 38223 38223 cpu1:timer 38220 38220 Total 101469 101469 systat -ia cycles between: 526 total atkbd0 1 128 atrtc0 8 ata0 irq14 199 cpu0:timer 199 cpu1:timer 530 total atkbd0 1 128 atrtc0 8 ata0 irq14 201 cpu0:timer 201 cpu1:timer If I set kern.eventtimer.timer1=3D"RTC", dmesg says: Starting kernel event timers: RTC @ 200Hz, LAPIC @ 128Hz Event timer "LAPIC" is dead. Starting kernel event timers: RTC @ 800Hz, NONE @ 0Hz The clock still doesn't move though. On the old kernel I had i8254 in the dmesg and that appears to be what was = used: kern.timecounter.tick: 1 kern.timecounter.choice: TSC(-100) i8254(0) dummy(-1000000) kern.timecounter.hardware: i8254 kern.timecounter.stepwarnings: 0 kern.timecounter.tc.i8254.mask: 65535 kern.timecounter.tc.i8254.counter: 51889 kern.timecounter.tc.i8254.frequency: 1193182 kern.timecounter.tc.i8254.quality: 0 kern.timecounter.tc.TSC.mask: 4294967295 kern.timecounter.tc.TSC.counter: 266155055 kern.timecounter.tc.TSC.frequency: 2261010847 kern.timecounter.tc.TSC.quality: -100 kern.timecounter.smp_tsc: 0 kern.timecounter.invariant_tsc: 1 Also, in the old kernel, there was nothing on irq8 in vmstat: irq8: 0 0 stray irq8 0 0 At the loader prompt I tried entering set kern.timecounter.hardware=3D"i8254" and set kern.timecounter.hardware=3D"TSC" and they appear set correctly if I type show, but when I boot, the sysctl is back to dummy. I have zero knowledge of this kind of thing, but I looks to me like I need to be using i8254 and the new kernel is not detecting this device. Is there a hint or something I can set to try and pick up this device again? Thanks, --=20 Rob Farmer
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTilCKUtVEiViEN_EoCMGl7KvryVXEd-sWuxFjzsS>