Ich frage mich, ob jemand mehr Details über den Zeitstempel-Zähler in Linux weiß, wenn ein Kontextwechsel stattfindet? Bis jetzt war ich der Meinung, dass der TSC-Wert in jedem Taktzyklus nur um 1 zunimmt, egal ob im Kernel oder im Benutzermodus. Ich habe jetzt die Leistung einer Anwendung mit dem TSC gemessen, die ein Leistungsergebnis von 5 Mio Cycles ergab. Dann habe ich einige Änderungen an dem Scheduler vorgenommen, was bedeutet, dass ein Kontextwechsel beträchtlich länger dauert, z. 2 Millionen Zyklen statt 500.000 Zyklen. Das Witzige ist, dass wenn man die Leistung der ursprünglichen Anwendung erneut misst, es immer noch 5 Millionen Zyklen dauert ... Ich frage mich also, warum es nicht wesentlich länger gedauert hat, da ein Context Switch nun fast 2 Mio Clock Cycles mehr braucht? (und es treten mindestens 3 Kontext während der Ausführung der Anwendung auf).Zeitstempelzähler (TSC) beim Wechsel zwischen Kernel und Benutzermodus
Ist der Zeitstempel-Zähler im Kernel-Modus irgendwie deaktiviert? Oder wird der Inhalt des TSC während der Wettbewerbswechsel gespeichert? Danke, wenn mir jemand zeigen könnte, was das Problem sein könnte!
Vielen Dank für Ihre Eingabe. Ich dachte gleich, dass der TSC nur ein Hardware-Zähler ist, der mit jedem Tick zunimmt. Ich führe die Anwendung auf einem Multicore aus, aber ich habe den zweiten Kern deaktiviert, indem ich Maxcpus = 1 während des Bootens gesetzt habe, so dass ich nur einen Kern habe. Also, im Grunde habe ich jetzt diese 2 Prozesse auf dem gleichen Kern (hoffentlich;)), zur gleichen Zeit aber immer noch den Unterschied in der TSC-Zähler bleibt 5 Mio. Ich vermute, es sollte doppelt oder so ähnlich sein, wenn 2 Prozesse CPU-Zeit teilen ... –
PS .: Ich hätte die Tatsache erwähnen sollen, dass ich weiß, dass der Scheduler zwischen 3-10 mal während der Programmausführung aufgerufen wird. Es kann jedoch sein, dass es nur den gleichen Prozess erneut einplant. –
Der Zeitstempel-Zähler ist ein MSR, MSR '0x10' um genau zu sein. Das Betriebssystem kann einen Wert darauf schreiben. – doug65536