Warum nutzt Windows die Ressourcen nicht voll aus?

392
codemirror

Ich installiere ein Update unter Windows 8.1 und zeigt " Installieren ..." für mehr als 15 Minuten an.

Wenn ich den Task-Manager anschaue, werden 30% des Arbeitsspeichers angezeigt, 30% der CPU und SSD sind nur für 2-5% aktiv.

Was ist der Engpass / Engpass, auf den Windows wartet und diese Ressourcen nicht maximal ausnutzt?

Warum nutzt Windows die Ressourcen nicht voll aus?

0

2 Antworten auf die Frage

2
Mario

Die sehr kurze und einfache Antwort: Sie können nicht alles parallelisieren und so gut wie alle anderen PC-Komponenten sind langsamer als die CPU. 100% Last sollten Sie also nicht außerhalb von besonderen Bedingungen oder Aufgaben (z. B. Kompilieren oder Codieren) erreichen. Auch viele Programme sind immer noch in einem einzigen Thread, was ihren Hauptteil ihres Codes betrifft.

Angenommen, ein Thread fordert einige Dateiinhalte an, und das Lesen dieser Dateien dauert 0,5 Sekunden. Dies bedeutet, dass der Kern, der diesen Thread ausführt, in dieser Sekunde nicht mehr als 50% der Auslastung erreichen kann. Gleichzeitig bedeutet dies jedoch nicht notwendigerweise, dass der Frequenzumrichter mit 100% Last arbeitet.

Die Festplatte wird jedoch auch für 2% verwendet, sodass die CPU nicht auf Daten wartet. codemirror vor 7 Jahren 0
@codemirror Wie bereits erwähnt, könnte die CPU auf eine Operation warten, die nicht unbedingt dazu führt, dass das Laufwerk (oder eine andere Komponente) unter Volllast steht. Beispielsweise könnte die CPU darauf warten, dass die Platte das vollständige Schreiben der Datei bestätigt. Gleichzeitig ist der Datenträger noch bereit, andere Befehle zu empfangen, so dass er bei der Verarbeitung dieser Anforderung nicht zu 100% ausgeführt wird. Stellen Sie sich vor, Sie bestellen etwas in einem Restaurant. Während Sie auf Ihre Mahlzeit warten, bedeutet dies nicht zwangsläufig, dass eine andere Person nicht bestellen kann (der Kellner ist nicht zu 100% belastet), aber Sie können Ihren Besuch nicht fortsetzen (Thread). Mario vor 7 Jahren 0
Vielen Dank, also bedeutet das, dass wir bei Hardware-Parallelismen sehr weit fortgeschritten sind, aber viele Softwares sind immer noch nicht richtig multithreaded. codemirror vor 7 Jahren 0
Und es gibt viele Dinge, die sich überhaupt nicht parallelisieren lassen. codemirror vor 7 Jahren 1
@codemirror Ja, im Grunde. Moderne GPUs führen Tausende von Threads parallel aus (z. B. einen pro Pixel), da die Task parallelisiert werden kann. Es gibt jedoch Dinge, die Sie nur Schritt für Schritt tun können. Es ist also nicht unbedingt die Schuld des Autors. Mario vor 7 Jahren 0
Um es auf den Punkt zu bringen: Ich kann über eine 16-Kern-CPU verfügen und kann leicht 16 Single-Threaded-Prozesse erzeugen, die sich auf sqrt () drehen, und die CPU führt sie alle parallel aus, wobei 100% der CPU in allen Kernen verwendet werden. Der Punkt ist: es liegt am Betriebssystem und nicht vollständig an der App. arielnmz vor 7 Jahren 0
0
arielnmz

Es ist nicht die Aufgabe von Windows, Ressourcen tatsächlich zu 100% zu verwenden, vielmehr bestimmt Ihr Workflow, welche Ressourcen am meisten verwendet werden. Zum Beispiel: Wenn Sie für mobile Plattformen Code programmieren, kann es üblich sein, dass Ihre Haupt-IDE zusammen mit einem Browser mit mehr als 50 Registerkarten und einigen Emulatoren geöffnet ist. Bei dieser Art von Workflow kann eine Menge RAM verbraucht werden, möglicherweise 90-100% von der Zeit, aber es kann ein bisschen weniger auf CPU (50-70% über alle Kerne) und noch weniger auf Netzwerk und E / A sein. Ein anderes Szenario kann das Archivieren und Komprimieren einer Vielzahl von Dateien sein, die leicht 100% Ihrer Kerne beanspruchen können, aber wahrscheinlich nicht den gesamten Arbeitsspeicher (abhängig von algortihm und natürlich der Größe des Arbeitsspeichers). Das Betriebssystem ist dafür verantwortlich, das gesamte Chaos zu organisieren, das in Ihrem Alltag allgegenwärtig ist, und die Ressourcen entsprechend zuzuweisen. Windows und andere Betriebssysteme versuchen also, die Ressourcen in vollem Umfang zu nutzen.