HPET oder TSC

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Peter_Pan123
Beiträge: 117
Registriert: 17.08.2006 17:48:47

HPET oder TSC

Beitrag von Peter_Pan123 » 24.01.2009 14:29:27

Hallo,

mich würde interessieren welchen Timer ich für welches System nutzen sollte um bestmögliche Leistung zu erzielen?

HPET oder TSC?

Gruß

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Re: HPET oder TSC

Beitrag von storm » 24.01.2009 16:53:15

Die Frage ist ganz schön allgemein und eine erschöpfende Antwort werden die vllt. höchstens die Kernel-Entwickler mit ausreichend Blick auf die Hardware geben können. Ich versuchs trotzdem mal. :)

Wenn du eine neueres Intel-System verwendest, ist der TSC benutzbar, weil dieser im Gegensatz zu früher und im Gegensatz zu AMD mit einer konstanten Rate inkrementiert wird. Das war nicht ganz so selbstverständlich, da der TSC die gleiche Frequenz wie ein Kern hatte und bei dynamischer Taktveränderung des Prozessors auch die Frequenz des TSC verändert wurde. Das ist für timing-Aufgaben sicher wenig hilfreich. Weiterhin war (oder ist) bei Mehrkern-CPUs ein Problem, dass jeder Kern einen eigenen TSC hat und dieser nicht immer auf allen Kernen den gleichen Wert im Register stehen hatte. Hier läuft ein AMD X2 und der hat eher einen unzuverlässigen TSC, im syslog findet man beim Anschalten von powernowd folgendes:

Code: Alles auswählen

Clocksource tsc unstable (delta = -85945125 ns)
Im Gegenzug ist der HPET nur auf neuer Hardware zu finden und bis vor kurzem hat es mit dem Kernelcode immer etwas gehapert. Seit 2.6.27 sind bei meiner Hardware aber keine Fehler mehr aufgetreten. Das sieht im syslog so aus:

Code: Alles auswählen

hpet clockevent registered
HPET: 4 timers in total, 0 timers will be used for per-cpu timer
...
hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0
hpet0: 4 comparators, 32-bit 14.318180 MHz counter
Außerdem ist der HPET universeller einsetzbar da frei programmierbar, aber der Zugriff ist auch "teurer" als beim vergleichsweise schnelle TSC, der in der CPU hockt.

Versuch doch mal für's erste, ob du die jeweilige Zeitquelle überhaupt verwenden kannst. Siehe /sys/devices/system/clocksource.

ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

Peter_Pan123
Beiträge: 117
Registriert: 17.08.2006 17:48:47

Re: HPET oder TSC

Beitrag von Peter_Pan123 » 24.01.2009 17:28:59

Hallo,

erstmal vielen dank für diese ausführliche Information.

Ich habe bereits ein wenig probiert und hatte gesehen das ich es nutzen kann, also ja. Nur ist mein problem, welches eben performanter ist und vor allem genauer. Ich nutze den in einem Quad Core system.

Gruß

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Re: HPET oder TSC

Beitrag von storm » 24.01.2009 17:47:22

Eigentlich musst du dir da keinen Kopf machen: der Kernel hat eine Rangliste mit verwendbaren Zeitquellen, da wird u.a. der tsc gegen die üblichen Schwächen getestet (beim booten). Sind die Tests erfolgreich, wird der tsc verwendet, sonst nicht. Mittlerweile ist der tsc in dieser Rangliste von höherer Wertigkeit, da er viel schneller ist:
Thomas Gleixner hat geschrieben: > Why is the TSC preferred to the HPET as a clocksource for the x86
> architecture?

Performance. TSC access is extremly fast as it is a per CPU
register. HPET is a chipset device and scales bad when multiple CPUs
try to access it simultanously as the access is serialized in
hardware. Even on a UP system the access overhead is somewhere in the
range of factor 100.
ciao, storm


[1] http://www.gossamer-threads.com/lists/l ... 769#917769
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

Peter_Pan123
Beiträge: 117
Registriert: 17.08.2006 17:48:47

Re: HPET oder TSC

Beitrag von Peter_Pan123 » 25.01.2009 13:46:52

k danke.

Antworten