Kategorien
Hardware & Software Windows Vista

Windows schneller machen: SuperFetch ausschalten

Mitunter legt Windows ein eigenartiges Verhalten an den Tag: Obwohl ein schneller Prozessor und viel RAM eingebaut sind, arbeitet Windows extrem langsam – meist dauert es nach dem Start mehrere Minuten, bis die Arbeit mit Vista losgehen kann. Selbst auf Systemen mit Core 2 Duo-Prozessor und zwei oder mehr Gigabyte Arbeitsspeicher ist von Schnelligkeit keine Spur. Die Festplatte rattert unentwegt und hört scheinbar gar nicht mehr auf, Dateien zu lesen oder zu schreiben.

Mitunter legt Windows ein eigenartiges Verhalten an den Tag: Obwohl ein schneller Prozessor und viel RAM eingebaut sind, arbeitet Windows extrem langsam – meist dauert es nach dem Start mehrere Minuten, bis die Arbeit mit Vista losgehen kann. Selbst auf Systemen mit Core 2 Duo-Prozessor und zwei oder mehr Gigabyte Arbeitsspeicher ist von Schnelligkeit keine Spur. Die Festplatte rattert unentwegt und hört scheinbar gar nicht mehr auf, Dateien zu lesen oder zu schreiben.

Ein Blick in den Task-Manager ([Strg]+[Alt]+[Entf], Task-Manager starten) zeigt dabei, dass im Register Leistung in der Zeile Physikalischer Speicher – Frei die Menge des noch freien Speicher kontinuierlich gegen Null tendiert.

Schuld ist ausgerechnet ein Dienst, der Windows Vista eigentlich schneller machen soll: SuperFetch. Mit dem SuperFetch-Dienst, den es bereits unter Windows XP unter dem Namen Prefetch gab, wendet Windows einen Trick an, um flotter mit Anwendungen arbeiten zu können. Windows lädt nach dem Start einfach alle häufig benutzten Programme “auf Verdacht” schon mal in den Arbeitsspeicher. Vista analysiert dabei, welche Anwendungen Sie häufig starten. Wird eines der vorgeladenen Programme gebraucht, ist es dank Superfetch besonders schnell gestartet – es ist ja dann schon im schnellen Speicher.

Das Problem dabei: Der SuperFetch-Speicher ist sehr gierig; mit Zeit belegt es restlos den gesamten verfügbaren Arbeitsspeicher. Sind etwa vier GB Arbeitsspeicher im Rechner, nutzt Vista nach kurzer Zeit die gesamten vier GigaByte. Vista möchte damit auch vermeiden, dass bei PCs mit viel RAM der Arbeitsspeicher einfach leer und ungenutzt bleibt.

Schön und gut, der Start häufig genutzter Programme wie des Internet Explorers oder Outlooks geht mit SuperFetch tatsächlich schneller vonstatten – allerdings zu einem hohen Preis. Bevor Sie vernünftig mit Windows Vista arbeiten können, müssen Sie erst einmal warten, bis Vista Alles und Jedes in den SuperFetch-Arbeitsspeicher geladen hat. Das kann dauern und zieht den Start von Windows Vista nur unnötig in die Länge.

Wenn Sie Windows Vista schneller starten möchten, schalten Sie SuperFetch einfach aus. Das ist vollkommen gefahrlos, da SuperFetch lediglich häufig genutzte Programme vorab in den Speicher lädt. Wenn Sie auf den Service verzichten, starten Programme zwar einen Tick langsamer, dafür ist Windows Vista wesentlich schneller gestartet – und der Arbeitsspeicher ist nicht nach wenigen Minuten schon rappelvoll.

1. Rufen Sie die Systemsteuerung auf (Start | Systemsteuerung), und klicken Sie auf System und Wartung.

2. Klicken Sie auf Verwaltung und anschließend doppelt auf Dienste.

3. Klicken Sie doppelt auf Superfetch, und wählen Sie aus der Liste Starttyp den Eintrag Deaktiviert.

4. Schließen Sie die Fenster mit OK.

Ab dem nächsten Start verzichtet Windows Vista auf den Superfetch-Dienst und auf das Vorab-Laden der Programme in den Arbeitsspeicher. Mit dem Ergebnis, dass Windows Vista jetzt wesentlich zügiger startet.

6 Antworten auf „Windows schneller machen: SuperFetch ausschalten“

Auf jeden Fall Superfetch immer eingeschaltet lassen. Hat auch nichts mit SSD zu tun. Wenn man eine SSD hat, sollte man eher Autodefraq ausschalten, denn defraqen bräuchte man nicht mehr bei einer SSD. Superfetch arbeitet mit dem RAM usw. zusammen. Alles startet schneller und alles läuft auch besser!

Einfach nur Super! Herzlichen Dank für die weitreichenden Infos Superfetch/Prefetch!

@Matz: da im Netz viele Schein-Experten unterwegs sind, die allzu oft falsche Ratschläge geben wollte ich Dich fragen:

Welche Windows 7 Dienste kann man getrost auf manuell bzw. „on demand“ stellen?

Ich nutze diesen Desktop-Rechner vorwiegend für Medienwiedergabe (Musik, Filme, Streams, etc.) und einige Spiele. Das Betriebssystem ist Windows 7 Ultimate um genau zu sein.

Falls Du das hier liest, würde ich mich über Deine fachkundige Meinung hierüber sehr freuen! [boondocksaint (Klammeraff‘) gmx . de]

trotz der Belehrung im zweiten Kommentar ist dieser Tipp gleich geblieben. Wer die Kommentare nicht liest, hat wohl Pech gehabt, hm?

@Matz: Wow, danke für die guten und ausführlichen Erläuterungen. Da merkt man, dass ein Windows-Profi am Werk ist. Und danke für die Erlaubnis zum Verbraten. :)

Dieser Tipp müsste sofort umgeschrieben werden !!

Das Abschalten des gesamten Superfetch-Dienstes führt dazu, dass auch das normale Prefetching abgeschaltet wird.

Der Superfetch-Dienst überwacht nämlich alle Programmstarts und protolliert, was die Programme beim Starten so alles neben ihrer .exe – Datei zum Hochfahren brauchen ( hauptsächlich dll’s, aber auch settings-files etc. )

Wird dann ein Programm nochmals gestartet, werden alle diese Dateien bereits unverzüglich von der Festplatte geladen, ohne zu warten, dass das gestartete Programm sie vom Dateisystem anfordert.
So ist das Programm schneller ‚oben‘.

Das gilt auch und insbesondere für den Systemstart !

Eigentlich noch wichtiger für die Performance ist aber die optimierende Defragmentierung, die vom Superfetch-Dienst verwaltet wird.

Die oben genannten Protokollierungen der Programmstarts werden als *.pf -Dateien im Windows/Prefetch-Ordner abgespeichert.
( Übrigens sind diese recht gross, weil sie nicht nur naiv einfach alle benötigten Dateien auflisten, sondern weil sie eine Tabelle aller Festplatten-Cluster beinhalten, die von den benötigten Dateien belegt werden.
Diese werden dann Low-Level auf schnellstmöglichsten Wege ‚eingesammelt‘ und nicht etwa Datei für Datei )

Immer wenn die Zahl der Prefetch-Dateien im Prefetch-Ordner 128 erreicht, startet der Superfetch-Dienst – nach afaik ca. 30 Minuten Leerlaufzeit des Computers einen hochinteressanten Prozess:

– Superfetch sieht alle Prefetch-Dateien durch und erstellt eine Statistik, welche Programme am häufigsten geladen wurden.

– Zusätzlich wird eine Statistik über die häufigsten ‚hinzugeladenen“ Komponenten ( dll’s, assemblies ) aller dieser Programme erstellt.

– Daraus entwickelt Superfetch einen ‚Plan‘, wie man die Dateien ( und auch die Cluster für wichtige OrdnerPfade ) am Anfang der Festplatte am optimalsten anordnet.

Dieser ‚Plan‘ ist die „Layout.ini“ im Prefetch-Ordner, die übrigens mit dem Editor geöffnet werden kann. Der Anfang dieser Datei liest sich natürlich wie ein Boot-Protokoll, wie man es z.B. beim Starten im abgesicherten Modus zu sehen bekommt.

– Dann startet Superfetch defrag.exe, und zwar mit völlig undokumentierten Schaltern, z.B.
defrag.exe -p 3d4 -s 000004A0 -b C:

Damit werden dann die Dateien optimiert angeordnet.

– Danach löscht Superfetch einen Großteil der *.pf -Dateien und behält nur die *.pf-Dateien der 32 am häufigsten verwendeten Programme im Prefetch-Ordner

ERGO: Der Superfetch-Dienst ist essentiell für ein effizient arbeitendes System. Ohne ihn fällt man auf die „Blödheit“ von Win 3.1 / 95 / 98 / ME zurück.

Wenn von „Superfetching“ die Rede ist, ist aber meist das optionale Zusatzfeature des Superfetch-Dienstes gemeint, dass nach Neustart oder Hibernation – eben anhand dieser Prefetch-Dateien – bereits die am häufigsten verwendeten Programme in das ungenutzte RAM des Computers geladen werden, damit diese nach 2-3 Minuten mit „RAM-Disk-Geschwindigkeit“ geladen werden können.

Um dieses „Preloading“ seperat zu aktivieren oder zu deaktivieren, gibt es jedoch leider keine UI-Möglichkeit.

Der Registry-Schlüssel heisst

HKEY_LOCAL_MACHINESYSTEMControlSet001ControlSession ManagerMemory ManagementPrefetchParameters
,
der relevante Wert ist „EnableSuperfetch“

für ein Deaktivieren des Preloadens ist dieser auf 0 zurückzusetzen

Am bequemsten ist es, sich zwei Verknüpfungen auf den Desktop zu legen, mit denen man dieses Feature an und abschalten kann.

Bei der einen kopiert man als Ziel folgendes ein:

————————————————————
reg add „HKLMSYSTEMControlSet001ControlSession ManagerMemory ManagementPrefetchParameters“ /v EnableSuperfetch /t REG_DWORD /d 0 /f
————————————————————

und nenne sie i.e „SuperfetchOFF“

und analog für eine „SuperfetchON“- Verknüpfung folgendes Ziel:

——————————————————————
reg add „HKLMSYSTEMControlSet001ControlSession ManagerMemory ManagementPrefetchParameters“ /v EnableSuperfetch /t REG_DWORD /d 3 /f
——————————————————————
Zu bemerken ist natürlch, dass diese Verknüpfungen als Administrator auszuführen sind, sonst passiert einfach nix.

Da man das allzu gerne vergisst, verpasst man der Verknüpfung am besten gleich per Eigenschaften -> Verknüpfung -> Erweitert -> „Als Administrator ausführen“ den passenden Haken, damit man auch jedesmal hübsch seine UAC um die Ohren bekommt.

Ich schalte dies eigentlich nur für den mobilen Betrieb meines Notebooks ab, wenn ich das Teil haüfig runterhibere und immer mal für 10,15 Minuten resume.

Unter Desktop-Verwendungsszenarien, also hochfahren und dann stundenlang damit arbeiten, nehme ich die Preloaderei gerne in Kauf, denn:

Die Intelligenz, die dieses Superfetching benutzt, geht noch weiter als die, die für die Festplattenoptimierung verwendet wird.

Es werden auch Prioritäten gesetzt, was bei immer höherer „echter“ RAM-Nutzung noch im RAM-Cache bleiben darf und was auf die Auslagerungsdatei raus muss.
Dazu werden wieder gesonderte Statistiken erstellt, die mittels der *.db – Files im PrefetchOrdner verwaltet werden.

Superfetch lernt mit der Zeit, was man gerne zwischendurch mal startet und behält vorzugsweise diese auch bei deftigster RAM-Nutzung im RAM-Cache, so dass es fast nie zu „Gedenksekunden“ kommt.

Überdies wird die Auslagerungsdatei viel intelligenter verwaltet, und bei auch nur kurzen Arbeitspausen immer mal wieder „defragmentiert“.

PS zum ersten:

Noch zwei Worte – und das dürfte hier wohl nun exklusiv zu lesen sein – über den Modus „2“ als EnableSuperfetch

1. Von diesem ist immer nur zu lesen, dass damit das Superfetching sich auch auf Startdateien bezieht.
Das wäre ja Quatsch, denn gestartet ist der Computer ja schon, wenn der Superfetch-Dienst seine Arbeit aufnimmt.

Tatsache ist vielmehr, dass damit die erforderlichen Dateien für die Dienste, die auf den Starttyp „manuell“ gesetzt sind, ebenfalls preloaded werden.
( „manuell“ ist eine echt dämliche Übersetzung von „on demand“ )

Das findet (leider) generell vor dem Preloaden der Anwendungen statt.
Da ich lieber sehr viele Dienste auf „demand“ stehen habe ( bei „deaktiviert“ geht oft dieses und jenes nicht, und man bekommt meist nicht gesagt, welche Dienste dafür gebraucht werden ), bevorzuge ich den EnableSuperfetch-Wert von 1.
Wem das auch lieber ist, ändere den /d Wert (Data-Paramater) seiner SuperfetchON- Verknüpfung auf 1.

2. Wenn man den EnableSuperfetch-Wert von 3 auf 2 zurückstellt, ändert sich scheinbar nichts.
Das ist eigentlich ein Bug.
Die bis zu diesem Zeitpunkt in den db-Dateien gespeicherten Anwendungen werden weiter mitgeladen.
Nur beim Starten bislang unbekannter Anwendungen finden dies dann keinen Eingang mehr in diese Datenbanken.

PS zum zweiten:

Von der Windows-Defragmentierung wird hartnäckig immer wieder und weiter kolportiert, dass diese „strohdumm“ sei. Selbst c’t-Redakteure reihen sich in die unendliche Liste dieser Nachplapperer ein.

Das absolute Gegenteil ist der Fall.

Wer unbedingt meint, irgendeine 3rd Party-Software wäre tatsächlich besser, sollte den Superfetch-Dienst in der Tat komplett abschalten, weil sonst Superfetch nach einem Defragmentierungslauf mit diesen Teilen schon beim nächsten Neustart die Hände über dem Kopf zusammenschlägt, was da ein Unsinn vor allem am Anfang der Systempartition steht und wieder von vorne anfangen muss.

Diese 3rd-party-Software ist ja ganz nett zum Defragmentieren von Datenpartitionen oder um sich „optisch“ einen Überblick zu verschaffen, wie es auf der Systempartition aussieht.

Aber für die Systempartition sind diese IMMER ungeeignet.
Selbst wenn die verwendeten Algorhithmen tatsächlich besser wären, kann das nie und nimmer den Vorteil aufwiegen, den ein aktives Prefetching hat.

PS zum Dritten:

Wer mal so ein richtig fettes Programmpaket installiert hat, kennt das:
Der Kaltstart der neuen Anwendungen läuft furchtbar zäh.

Beim zweiten Kaltstart ist es dann schon etwas besser, da Superfetch bereits anhand der beim ersten Start angelegten .pf -Datei ein Prefetching durchführen kann.

Weil aber Programmdateien und dll’s der Anwendungen recht weit ‚hinten‘ auf der Platte liegen und immer auch teilweise in gerade offene Lücken gestopft wurden, also selten am Stück auf der Platte liegen, ist es immer noch unbefriedigend.

Nun braucht man aber nicht die gesamte Partition neu zu defragmentieren, um eine Verbesserung zu erreichen:

Erst einmal stelle man sicher, dass man alle Komponenten des Programms bzw. der Suite auch mal gestartet hat.

Bei vielen Programmen empfiehlt sich dabei, es mittels einer damit erstellten Dokumentdatei zu öffnen, da viele Programmteile erst dann mitgeladen werden müssen, die für eine „leere Umgebung“ noch nicht gebraucht werden.

( letzes Beispiel bei mir : VCS-Express mit einem WPF-Projekt, bei dem das XAML-Designer-Tab offen ist und auch der Objektbrowser mitgeladen wird. Dann will dieses Monster sage und schreibe 250 dll’s )

Dann hat Superfetch in seinen *.pf -Dateien alles zusammen, was es für einen Optimierungslauf braucht, umd man kann es anweisen, diesen bereits auszuführen, auch wenn der Prefetch-Ordner noch nicht „voll“ ist

Also Verknüpfung Nummer 3…

————————————————————
rundll32.exe advapi32.dll,ProcessIdleTasks
————————————————————

…die man auch am besten ProcessIdleTasks nennt.
Wieder gilt der Hinweis mit den Admin-Rechten.

Ich hab’s nicht getestet, aber es kann sein, dass damit auch der „Windows-Suche“-Dienst sich angesprochen fühlt und anfängt, auf den Platten wild um sich zu indizieren.

Der ist bei mir eh‘ deaktiviert.

Superfetch allein braucht für so einen Lauf etwa 4-8 Minuten, je nachdem wie „aktuell“ die letzte „Layout.ini“ war, und wie „fett“ das Programm ist.

Dabei entstehen auch Denkpausen, wo die Prozessorlast hochfährt, und eine Zeitlang auf der Platte nichts passiert.
Erst wenn im Taskmanager ( alle Prozesse anzeigen ) die Prozesse defrag.exe und dfrgntfs.exe ( der dritte im Bunde, der seine Anweisungen von defrag.exe bekommt ) verschwunden sind, ist die Sache (fast) erledigt.

____________________________________________________________________________

Es ist dem Betreiber der Web-Seite ausdrücklich erlaubt, ja sogar erwünscht, diesen Post für einzelne neue Tipps zu verbraten, damit mal Mythen und Unwissenheit über diese ausgereifte Technologie wirksam bekämpft werden können.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.