Re: exakte Zeitmessungen auf Multiprozessoren
29. Sep 2006, 23:14
Das grunglegende Problem ist der mehrfache Taskswitch pro Sekunde und dein Task wird auch frei von einem Kern auf den anderen verschoben. Wenn ein Kern mal öfters im Halt war oder mehrfach die Taktfrequenz änderte, dann gehen die Time Stamp Counter der beiden Kerne auseinander, da einer weniger Taktimpulse hatte als der andere. Da nun der Thread/Prozess mehrfach zwischen den Kernen wechselt, ist die wahrscheinlich hoch, dass man auf einem Kern den Counter liest (Startpunkt) und auf einem/dem anderen Kern den Counter beim Stoppen. Und so einfach kann die Zeit auch mal negativ sein.
Abhilfe würde hier z.B. das Festlegen eines Threads/Prozesses auf einen logische CPU/Kern helfen. Dies schliesst das beschriebene aus, aber nicht die Nebenwirkungen des Power/Taktmanagements.
SetThreadAffinityMask(), SetProcessAffinityMask(), etc ...
So, Details und weitere Info's in den über mir verlinkten Links..
|