TL;DR: Meine Festplattenkombination führt dazu, dass das Laden von Ladedialogen ca. 6 Sekunden dauert, was auch per Code bestätigt wird, und ich kann keine Lösung finden.
Ich hatte lange Zeit Windows 7 und habe 8 komplett ignoriert. Solange ich 7 hatte, musste ich eine sehr lange Startzeit in Kauf nehmen, war aber ansonsten mit der Leistung bei allem zufrieden.
Kurz vor der Veröffentlichung von Windows 10 habe ich in den sauren Apfel gebissen und es installiert, damit ich zumindest versuchen konnte, mit der Zeit Schritt zu halten. Gleichzeitig habe ich mir eine neue SSD besorgt, auf der ich es installieren konnte, um meine Startprobleme zu lindern. Die Installation verlief viel reibungsloser als erhofft und ich war im Handumdrehen wieder auf dem Laufenden. Die Anfangsschwierigkeiten waren so gut wie nicht vorhanden, bis auf einen einzigen Dorn in meinem Auge: Gelegentlich dauerte es ~5-10 Sekunden, bis ein Ladedialogfeld überhaupt angezeigt wurde, wenn ich es öffnete.
(Bevor Sie aufspringen und „Energieprofil“ sagen: Das ist es nicht, es ist so eingestellt, dass die Festplatten nie heruntergefahren werden.) Ich sage nur „gelegentlich“, weil ich eine Weile gebraucht habe, um herauszufinden, welche Programme das tun – zuerst dachte ich, es sei alles, aber bei Chrome und anderen scheint das Verhalten durch Patches beseitigt worden zu sein. Das schlimmste Programm, das das Verhalten immer noch jedes Mal verursacht, ist Gimp 2.8; egal, was ich mache, wenn ich eine neue Datei speichere oder zum Laden gehe, muss ich 5–10 Sekunden warten, bis der Dialog erscheint.
Zuerst dachte ich, es handele sich um einen Fehler in Windows 10 selbst, aber als Chrome und Co. besser wurden, dachte ich, es müsse einfach etwas mit Gimp zu tun haben, und das wäre nicht die erste Merkwürdigkeit, die mir bei diesem Programm aufgefallen ist. Aber dann kam ich näher an die Hardware heran und entdeckte, dass es nicht an Gimp lag.
Ich programmiere Spiele mit Unity und arbeite derzeit an einem allgemeinen Dialog zum Speichern/Laden in C# (und veralteten Mono-Bibliotheken). Als ich den Dateibrowser zum ersten Mal zum Laufen brachte, war er langsam wie Melasse – ich schrieb das einer schlechten Methode meinerseits zu, aber als ich mit der Optimierung begann, stellte ich fest, dass der Großteil der Wartezeit durch eine einzige Codezeile verursacht wurde:
string[] drives = System.IO.Directory.getLogicalDrives();
Nach der Messung entsprach diese Verzögerung der Verlangsamung von Gimp: 5,5 Sekunden, und das alles, damit Windows sagen konnte: „Sie haben ein Laufwerk C:, D:, E: und F:.“ Ichhabe eine Modifikation an meinem Ladedialog gehacktalso würde diese Verzögerung der Laufwerksinformationen angezeigt und bestätigt, dass bei jedem Ausführen des Programms eine Verzögerung von ca. 5–6 Sekunden auftritt. Nur um von einem System-API-Aufruf zu hören, um eine Liste der Festplattenpfade zu erhalten.
Um zu verdeutlichen, wie schlimm das ist: Ich habe dasselbe oben verlinkte Programm auf dem Laptop meiner Frau, dem Laptop meines Bruders, dem Desktop meines Vaters (alle drei mit Windows 10) und dem Mac Mini meiner Mutter (nach Neukompilierung für ein MacOS-Ziel) ausgeführt. Auf jedem einzelnen von ihnen beträgt die Verzögerung nur einige zehn Millisekunden, genau das, was ich erwarten würde. Der Mac Mini brauchte etwa 20 Sekunden, nur um das verdammte Programm zu laden, aber als es einmal lief, bumm, dauerte es weniger als eine Zehntelsekunde, um die Festplatten aus dieser einzelnen Codezeile zu laden.
Jetzt bin ich also ratlos. Das Energieprofil ist so eingestellt, dass die Laufwerke nie heruntergefahren werden; mein BIOS ist für die SSD auf AHCI eingestellt; ich habe die Auslagerungsdatei so eingestellt, dass sie nicht dynamisch ist; ich habe die Indizierung und den Windows-Suchdienst deaktiviert; alles ist defragmentiert. Ich habe sogar Windows 7 neu gestartet, um den Stand der Dinge zu überprüfen; keines der Programme hatte irgendeine Art von Verzögerung beim Laden des Dialogs, aber als ich mein kleines Ladetool ausführte, zeigte es durchweg 5,5 Sekunden zum Laden der Laufwerke an.
Ich sollte anmerken, dass es während dieser 5 Sekunden zu keinen großen CPU-/Speicher- oder Festplattenzugriffsspitzen kommt. Hier ist ein Screenshot des Programms kurz nach der Ausführung mit dem Task-Manager im Hintergrund:.
Hier ist ein Screenshot der Datenträgerverwaltung:. Datenträger 0 ist die SSD, Datenträger 1 ein neueres 1-TB-Laufwerk, Datenträger 2 ein älteres Caviar Black 1-TB-Laufwerk und Datenträger 3 ein Caviar Green 2-TB-Laufwerk (nie wieder; es verfügt über eine integrierte 20-minütige Datenträgerabschaltung. Ich bin ziemlich sicher, dass dies nicht die Ursache ist, da wiederholte Tests alle noch immer eine Verzögerung von 5 Sekunden aufweisen).
Weiß jemand, was ich sonst noch versuchen könnte? Ich muss im Grunde nur mit einigen getrennten Laufwerken booten, um zu sehen, ob ein einzelnes Laufwerk irgendwie Probleme verursacht (obwohl ich versucht habe, alle außer den Laufwerken 0 und 1 in der Datenträgerverwaltung offline zu schalten, ohne Erfolg). Für jede Hilfe wäre ich sehr dankbar.
BEARBEITEN:Einige weitere Erkenntnisse: Nachdem ich alle Festplatten (einschließlich meines Blu-ray-Laufwerks, sodass mir nur noch eine SSD bleibt) getrennt habe, besteht das Problem weiterhin. Nachdem ich die Internetverbindung vollständig getrennt und die Netzwerkerkennung deaktiviert habe, besteht das Problem weiterhin.
Darüber hinaus scheint die Marke von 5,5 Sekunden eine absolut zuverlässige Zahl zu sein. Die „Disk Walk“-Zeit meines Tools (also die Zeit, die zum Lesen der ersten Verzeichnisebene jeder Festplatte benötigt wird) variiert stark, während die Festplattenlesezeit immer im Bereich von 5,550 bis 5,580 liegt. Dies scheint darauf hinzudeuten, dass irgendwo eine Art 5,5-Sekunden-Timeout auftritt.
BEARBEITEN 2:Ich habe Windows 7 gestartet, obwohl nur die beiden 1TB-Laufwerke angeschlossen waren. Die Ladezeit ist immer noch an die 5,5 Sekunden Wartezeit gebunden, selbstohnedie betroffene SSD, was meine Haupttheorie zur Grundursache zunichte macht. Das lässt mich vermuten, dass es vielleicht ein Problem mit den Eingabetreibern des Motherboards gibt, vielleicht?
Meine Hardware, nur für den Fall, dass es relevant ist:
- Prozessor:AMD Phenom II X4 965-Schwarz
- Hauptplatine:Gigabyte GA-790XTA-UD4
- Video:AMD HD 5770
- SSD:OCZ ARC 100 240 GB
- Festplatte:WD Black 1 TB (2013)
- Festplatte:WD Green 2 TB (2011)
- Festplatte:WD Black 1 TB (2010)
Antwort1
GorRAMSohn einerGeschäftsmann.
Es war dernicht vorhandenes Diskettenlaufwerk. Niemand erwartet jemals den Antrieb, den er nicht hat!
Auf meinem Motherboard befindet sich ein Diskettencontroller, eine Technologie, die offenbar aus einer Zeit stammt, in der es als Verschwendung von Taktzyklen galt, zu prüfen, ob etwas angeschlossen ist. Jedes Mal, wenn ich lief System.IO.Directory.GetLogicalDrives()
, wartete ich darauf, dass das geisterhafte Laufwerk ein Timeout hatte.
Ich habe mein BIOS geöffnet und eine Einstellung gefunden, mit der man die Diskette vollständig deaktivieren kann. Dadurch ist das Problem vollständig verschwunden. Gimp wird jetzt auch problemlos geladen.
Ich bin so ein verdammt guter Detektiv.
Antwort2
Zu Ihrer Information – DeaktivierenDiskettenlaufwerke>Diskettenlaufwerkim Geräte-Manager hat bei mir funktioniert. Ich war zu faul, neu zu starten und im BIOS herumzufummeln.