calcru: runtime went backwards, RELENG_6, SMP
Matthew Dillon
dillon at apollo.backplane.com
Tue Jun 12 18:23:12 UTC 2007
:s,/kernel,/boot/kernel/kernel, ;-)
:
:well, strange enough result for me:
:
:(kgdb) print cpu_ticks
:$1 = (cpu_tick_f *) 0xffffffff8036cef0 <rdtsc>
:
:Does this mean that kernel uses tsc? sysctl reports
:
:kern.timecounter.choice: TSC(-100) ACPI-fast(1000) i8254(0) dummy(-1000000)
:kern.timecounter.hardware: ACPI-fast
It means the kernel is using the TSC for calcru. It's using ACPI-fast
for normal timekeeping.
In anycase, that's the problem right there, or at least one problem.
The TSC cannot safely be used for calcru or much of anything else on
a SMP system because the TSCs aren't synchronized between cpu's and
because their frequencies aren't locked, so they will drift relative
to each other as well.
If you want to run another test, try disabling the use of the TSC for
calcru. There is no boot variable I can see to do it so go into
/usr/src/sys/i386/i386/tsc.c and comment out the call to
set_cputicker() in Line 107 and line 187. Then see if that helps.
If you are doing an amd64 build comment it out in amd64/amd64/tsc.c
line 98 and line 163.
-Matt
More information about the freebsd-stable
mailing list