![]() |
Betriebssystem: Win 7,Win 8,Win 8.1
Windows 7 vs. Windows 8/8.1 - Thread-Management
Moin,
mir erzählte kürzlich jemand, dass mit Windows 8/8.1 ein neuer Thread-Scheduler gekommen sei, der eine /spürbare/ Performance-Steigerung mit sich brächte. Als Beispiel wurde die Software Adobe Premiere genannt, die ein Video mit einer rund 1/3 höheren Bildrate rendere. Grundsätzlich mag ich nicht in Frage stellen, dass dieser Mensch ein Windows8-System gesehen hat, welches die Videos schneller fertiggestellte als ein angeblich vergleichbares Windows7-System. Ich habe im MSDN gefühlt jeden sein umgedreht und keinerlei Hinweise darauf gefunden, dass substantielle Änderungen am Thread-Management vorgenommen worden seien. Ich denke eher, dass ein besseres Zusammenspiel von Hard- und Software über die Treiber auf dem 8er-System zu dem Resultat führte und Windows per se damit erstmal nichts zutun hatte. Ist Euch da mit den Threads und Windows 7 bzw. Windows 8 etwas bekannt? |
AW: Windows 7 vs. Windows 8/8.1 - Thread-Management
Eine Performance-Steigerung kommt durch bessere Prozessoren zustande.
Wenn neue Software neue CPU-Funktionen nutzt und/oder parallel auf mehreren Cores läuft wird z.B. Rendern schneller. Manche Software nutzt auch Funktionen der Grafik-CPUs. |
AW: Windows 7 vs. Windows 8/8.1 - Thread-Management
Details hat er nicht genannt?
|
AW: Windows 7 vs. Windows 8/8.1 - Thread-Management
Es geht um ein und dieselbe Version von Adobe Premiere. Dass neuere CPUs schneller sein können, ist klar, aber hier nicht die Frage.
Es geht darum, ob mit Windows 8 tatsächlich ein effizienteres Thread-Management am Start ist. |
AW: Windows 7 vs. Windows 8/8.1 - Thread-Management
Nun ja, es wird kompatible zu alten sein. Insofern wäre das wissen nur akademischer Natur und nicht von praktischen Nutzen, denke ich mal.
Im alten bekam jeder Thread eine Zeitscheibe von 20 ms, wobei höher priorisierte Threads Vorrang hatten. Eventuell haben sie da etwas an einer Schraube gedreht. Itelligente Threadumschlatung oder so. Cachen des TEB, so dass Threads schneller wieder geladen werden können. Wären eventuell Stichworte für Google, wenn man da mehr in Erfahrung bringen will. |
AW: Windows 7 vs. Windows 8/8.1 - Thread-Management
Ja, da hat sich einiges getan. Eine Dokumentation habe ich allerdings nicht gefunden. Ich hatte darüber mal etwas gelesen.
Du kannst es aber leicht selbst testen, dass sich da etwas geändert hat. Pack einfach ein
Delphi-Quellcode:
ins FormCreate. Unter Windows 7 wird ein Kern zu 100% ausgelastet, ab Windows 8 werden alle Kerne um etwas mehr als 100% / Kernanzahl mehr ausgelastet. Sprich alles wird nun besser auf die Kerne aufgeteilt.
while True do;
Das ist einer der Gründe weshalb viele Spiele ab Windows 8 plötzlich etwas schneller laufen. Viele sind noch nicht komplett multithread-fähig, so dass diese Optimierungen dort gut ankommen. Deshalb gibt es standardmäßig bei Windows 8 und höher auch keine Kernansicht mehr (kann man per Kontextmenü auf das Diagramm umschalten). Es ist schlicht uninteressant, weil die einzelnen Threads nicht mehr einen Kern auslasten, sondern dynamisch auf die Ressourcen aller Kerne zugreifen. Dadurch wird das ganze schneller, auch einzelne Threads, da die Ressourcen besser genutzt werden können. Ein komplett ausgelasteter Kern ist langsamer als mehrere nicht komplett ausgelastete Kerne. Eine so hohe Leistungssteigerung konnte ich allerdings nicht feststellen. Bei mir sind es so ca. 3-5% gewesen. Ein anderer Effekt ist, dass alle Kerne heruntertakten können und so Strom gespart werden kann, wenn nicht einer auf 100% läuft und so volle Leistung fordert. // EDIT: Ach ja, den Leistungsunterschied kann man leicht messen indem man einmal normal laufen lässt und einmal die Prozessoraffinität auf einen bestimmten Kern setzt. |
AW: Windows 7 vs. Windows 8/8.1 - Thread-Management
Das ist in der Tat eine massive Änderung der Thread(ablauf)organistaion.
Zitat:
|
AW: Windows 7 vs. Windows 8/8.1 - Thread-Management
Zitat:
|
AW: Windows 7 vs. Windows 8/8.1 - Thread-Management
Zitat:
"Time resources on Windows are mostly interrupt controlled entities. Therefore, they show a certain granularity. Typical interrupt periods are 10 ms to 20 ms. The interrupt period can also be set to be 1 ms or even a little below 1 ms by using API calls to NTSetTimerResolution or timeBeginPeriod. However, for several reasons they can and shall never be set to anything near the 1 μs regime. The best resolution to observe by means of Windows time services is therefore in the 1 ms regime." Das heisst, die NTSetTimerResolution kann geändert werden. ![]() PDF-Download |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz