Hi,

I fixed the bugs regarding the CPU Topology on monster (here [1] you have
the cpu topology sysctl output from the monster). There were multiple
problems:
- one bug that I introduced when I did the refactoring in order to add
support for cpu topology to the vkernel
- I considered that the APICIDs are starting from 0 (in this case the
APICIDs were starting from 16)
- I considered that the APICIDs are consecutive (in this case they
weren't...because the number of cores/cpu isn't a power of two, so it had
to be skipped some ids between different physical cpus)
- I found a bug in "sbuf_vprintf". If the sbuf is auto expandable and if
there isn't enough space to put all the data, the sbuf is expanded and give
another try. The problem is that the va_list "ap" may be left in an
inconsistent state (va_arg() only iterated through some of the arguments)
and the print of the arguments would be wrong. I have made a fix, using a
copy of the "ap" [2]. (Alex H, I think this commit must go to master if I
am right).

PS: Matthew thanks a lot for the monster. You can shut it down now:). I
don't have any heuristics for core/chip cache coherence right now to do
performance testing.

[1] http://leaf.dragonflybsd.org/~mihaic/monster_cpu_topology
[2]
https://github.com/mihaicarabas/dragonfly/commit/5834c4f987284ba4f395ae701a64f3985ffc7490

Reply via email to