Autor Thema: Disabled Interrupts im User Mode  (Gelesen 15500 mal)

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #20 am: 28. July 2011, 11:24 »
Hallo,


Oder du laesst dir vom Kernel einfach die reale CPU-Zeit geben.
Da würde ich erst mal nachprüfen wie diese ermittelt wird um deren Genauigkeit beurteilen zu können, ich vermute mal (ohne es zu wissen) das die nicht für reproduzierbare und präzise Performancemessungen taugt.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #21 am: 28. July 2011, 17:41 »
Das ist kein Thema. Ist auf Nanosekunden genau. Das liegt daran, dass der Kernel in dem Fall die Zeiten zurück gibt, die in dem task-Struct des Kernels gespeichert sind. Die sind genau, da anhand dieser WErte auch die Scheduling-Entscheidungen getroffen werden. Das passt schon.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #22 am: 28. July 2011, 18:19 »
Hallo,


Das ist kein Thema. Ist auf Nanosekunden genau....
Ach echt, das würde ich dann doch bezweifeln. Mit welchen Mechanismus sollen den auf der x86-Plattform Nanosekunden-Genau Zeiten ermittelt werden?


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #23 am: 28. July 2011, 19:06 »
Wenn ich mich recht entsinne, machen die das über den Clock-Counter. Der gibt ja die Takte an, die seit dem Boot gelaufen sind. Darüber soll das funktionieren. Die Rechnen intern mit Jiffies und nicht echten Zeiten. Das ganze soll dann recht genau umgerechnet werden können.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #24 am: 28. July 2011, 19:17 »
Hallo,


machen die das über den Clock-Counter.
Was ist das? Doch wohl nicht etwa die SW-Uhr (die läuft maximal mit der Genauigkeit der Timer-IRQs).

Und Jiffies sind eher eine rein mathematische Größe und kein Messwert.

Mit welchen Mechanismus sollen den auf der x86-Plattform Nanosekunden-Genau Zeiten ermittelt werden?


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #25 am: 28. July 2011, 19:50 »
rizor meint den Time Stamp Counter, der die Taktzyklen zählt. Wenn man auf ein paar Details (Pipeline, dynamische Taktraten, Bugs) achtet, kann man damit die Zeit auf den CPU-Takt genau messen.

Nanosekunden gehen natürlich erst ab 1 GHz ^^
Dieser Text wird unter jedem Beitrag angezeigt.

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #26 am: 28. July 2011, 19:56 »
Hallo,


Das der Time Stamp Counter nur bedingt tauglich ist hatten wir hier doch schon mal ausführlich diskutiert. Spätestens wenn die CPU-Taktfrequenz geändert wird ist selbst die Mikrosekundenauflösung futsch. Der x86-Plattform fehlt ganz klar ein zentraler Timer (wirklich nur einer damit es keine Synchronisationsprobleme wie mit den TSCs bei SMP gibt) der mit hoher Frequenz arbeitet und sich in maximal 2 CPU-Takten auslesen lässt.


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #27 am: 29. July 2011, 03:23 »
Ich würde rizors Aussage etwas freier interpretieren und sagen, dass er mit "nanosekundengenau" etwas meint, was erik vielleicht als "besser als mikrosekundengenau" bezeichnen würde. ;-)

erik.vikinger

  • Beiträge: 1 277
    • Profil anzeigen
Gespeichert
« Antwort #28 am: 29. July 2011, 09:11 »
Hallo,


hm, selbst Mikrosekundengenau würde ich dem TSC nicht zutrauen wenn auch mal die CPU-Taktfrequenz geändert werden soll. Das ist nämlich kein deterministischer Vorgang, bis die PLL auf die neue Frequenz einrastet kann mal mehr und mal weniger Zeit vergehen in der der TSC steht und das sind mindestens etliche 10 bis etliche 100 Mikrosekunden (und der Jitter dürfte auch mindestens ein zweistelliger Mikrosekundenbetrag sein).


Grüße
Erik
Reality is that which, when you stop believing in it, doesn't go away.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #29 am: 29. July 2011, 19:25 »
Ich bin mir nicht sicher, ob es wirklich so ungenau ist.
Das würde bedeuten, dass Linux für seine Scheduling-Entscheidungen recht ungenaue Werte nimmt.
Das kann ich mir nicht wirklich vorstellen.
Vllt ist Nanosekunden genau übertrieben (habe ich nur mal irgendwo gelesen), aber damit sollte man trotzdem schon verlässliche Werte bekommen.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

 

Einloggen