calcru: runtime went backwards, RELENG_6, SMP
Dmitry Morozovsky
marck at rinet.ru
Tue Jun 12 20:18:18 UTC 2007
On Tue, 12 Jun 2007, Matthew Dillon wrote:
MD> :s,/kernel,/boot/kernel/kernel, ;-)
MD> :
MD> :well, strange enough result for me:
MD> :
MD> :(kgdb) print cpu_ticks
MD> :$1 = (cpu_tick_f *) 0xffffffff8036cef0 <rdtsc>
MD> :
MD> :Does this mean that kernel uses tsc? sysctl reports
MD> :
MD> :kern.timecounter.choice: TSC(-100) ACPI-fast(1000) i8254(0) dummy(-1000000)
MD> :kern.timecounter.hardware: ACPI-fast
MD>
MD> It means the kernel is using the TSC for calcru. It's using ACPI-fast
MD> for normal timekeeping.
MD>
MD> In anycase, that's the problem right there, or at least one problem.
MD> The TSC cannot safely be used for calcru or much of anything else on
MD> a SMP system because the TSCs aren't synchronized between cpu's and
MD> because their frequencies aren't locked, so they will drift relative
MD> to each other as well.
MD>
MD> If you want to run another test, try disabling the use of the TSC for
MD> calcru. There is no boot variable I can see to do it so go into
MD> /usr/src/sys/i386/i386/tsc.c and comment out the call to
MD> set_cputicker() in Line 107 and line 187. Then see if that helps.
MD> If you are doing an amd64 build comment it out in amd64/amd64/tsc.c
MD> line 98 and line 163.
Not much success (amd64 with two set_cputicker calls commented out):
Trying to mount root from ufs:/dev/ad4s1b
Loading configuration files.
No suitable dumpkernel trap 12 with interrupts disabled
Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
fault virtual address = 0x140
fault code = supervisor write data, page not present
instruction pointer = 0x8:0xffffffff803528a8
stack pointer = 0x10:0xffffffffa02c2a00
frame pointer = 0x10:0xffffffffa02c2a40
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags = resume, IOPL = 0
current process = 43 (sh)
[thread pid 43 tid 100033 ]
Stopped at cpu_throw+0x18: lock btrl %eax,0x140(%rdx)
db> bt
Tracing pid 43 tid 100033 td 0xffffff003da9d9c0
cpu_throw() at cpu_throw+0x18
thread_exit() at thread_exit+0x31d
exit1() at exit1+0xb13
sys_exit() at sys_exit+0xe
syscall() at syscall+0x254
Xfast_syscall() at Xfast_syscall+0xab
--- syscall (1, FreeBSD ELF64, sys_exit), rip = 0x800930f6c, rsp =
0x7fffffffe388, rbp = 0x800b110b5 ---
Sincerely,
D.Marck [DM5020, MCK-RIPE, DM3-RIPN]
------------------------------------------------------------------------
*** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- marck at rinet.ru ***
------------------------------------------------------------------------
More information about the freebsd-stable
mailing list