Frage Wie kann ich feststellen, ob mein Windows-Server ausgetauscht wird?


Ich verwende Process Explorer, um meinen Windows-Server zu überwachen, während er einige Daten rekonstruiert. Es ist hauptsächlich ein CPU-intensiver Prozess, aber ich möchte sicherstellen, dass es nicht ausgetauscht wird. Wie kann ich feststellen, ob Process Explorer verwendet wird? Meine erste Vermutung ist im Fenster Systeminformationen, es ist Paging-Datei Write Delta. Ja? Nein? Ich bin ein Idiot?

* Screenshot ist nicht vom Server ... nur ein Beispiel.

alt text http://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg


28
2017-10-15 16:20


Ursprung




Antworten:


"Pages Input / sec ist der zu überwachende Counter, aber Sie sollten sich nicht darum kümmern, dass er" swappt ", da Windows die Page-Datei nicht wie * nixes verwendet.

Zuerst müssen Sie verstehen, dass Windows-Seiten nicht aus sind. Ich zitiere den relevanten Teil von Eric Lipperts Blogeintrag (leicht bearbeitet), da ich es selbst nicht besser sagen kann:

"RAM kann nur als eine Leistungsoptimierung angesehen werden. Der Zugriff auf Daten im RAM, wo die Informationen in elektrischen Feldern gespeichert werden, die sich mit Lichtgeschwindigkeit ausbreiten, ist viel schneller als der Zugriff auf Daten auf der Festplatte, wo Informationen in riesigen, schweren gespeichert werden Eisenmetall-Moleküle

Das Betriebssystem verfolgt, auf welchen Speicherseiten, auf welche Prozesse am häufigsten zugegriffen wird, und erstellt eine Kopie von diesen im RAM, um die Geschwindigkeit zu erhöhen. Wenn ein Prozess auf einen Zeiger zugreift, der einer Seite entspricht, die derzeit nicht im RAM zwischengespeichert wird, führt das Betriebssystem einen "Seitenfehler" aus, geht auf die Festplatte und erstellt eine Kopie der Seite von der Festplatte in den Arbeitsspeicher dass es in Kürze wieder zugänglich sein wird.

Das Betriebssystem ist auch sehr schlau beim Freigeben von schreibgeschützten Ressourcen. Wenn zwei Prozesse dieselbe Codepage von derselben DLL laden, kann das Betriebssystem den RAM-Cache zwischen den beiden Prozessen teilen. Da der Code vermutlich von keinem der beiden Prozesse geändert wird, ist es sinnvoll, die doppelte RAM-Seite zu speichern, indem Sie sie teilen.

Aber selbst mit cleverem Teilen wird dieses Caching-System irgendwann keinen RAM mehr haben. Wenn dies geschieht, gibt das Betriebssystem eine Schätzung darüber ab, auf welche Seiten am ehesten bald wieder zugegriffen wird, schreibt sie auf die Festplatte, wenn sie sich geändert haben, und gibt diesen RAM frei, um etwas einzulesen, auf das mit höherer Wahrscheinlichkeit zugegriffen wird bald.

Wenn das Betriebssystem falsch rät oder wahrscheinlicher ist, wenn es einfach nicht genug RAM gibt, um alle Seiten mit häufigem Zugriff in allen laufenden Prozessen zu speichern, dann beginnt der Rechner mit dem "Thrashing". Das Betriebssystem verbringt die meiste Zeit damit, den teuren Plattenspeicher zu schreiben und zu lesen, der Datenträger läuft ständig und Sie haben keine Arbeit erledigt.

Dies bedeutet auch, dass das "Auslaufen von RAM" selten zu einem "Nicht genügend Speicher" -Fehler führt. Statt eines Fehlers führt dies zu einer schlechten Leistung, da die vollen Kosten der Tatsache, dass sich der Speicher tatsächlich auf der Festplatte befindet, plötzlich relevant werden.

Eine andere Möglichkeit, dies zu betrachten, ist, dass die Gesamtmenge an virtuellem Speicher, die Ihr Programm verbraucht, für seine Leistung nicht wirklich relevant ist. Was relevant ist, ist nicht die Gesamtmenge an virtuellem Speicher, die verbraucht wird, sondern (1) wie viel von diesem Speicher nicht mit anderen Prozessen geteilt wird, (2) wie groß der "Arbeitssatz" von allgemein verwendeten Seiten ist und ( 3) ob die Arbeitssätze aller aktiven Prozesse größer sind als das verfügbare RAM.

Inzwischen sollte klar sein, warum "out of memory" -Fehler in der Regel nichts damit zu tun haben, wie viel physikalischer Speicher Sie haben oder wie viel Speicher noch verfügbar ist. Es geht fast immer um den Adressraum, der auf 32-Bit-Windows relativ klein und leicht fragmentiert ist. "

Ein paar zusätzliche Punkte:

  1. dlls und Programmdateien werden immer nur eingelagert, niemals out, da sie bereits auf der Festplatte sind (und normalerweise werden die ersten Seiten freigegeben, wenn der physische RAM niedrig wird)
  2. Sie haben viel weniger Möglichkeiten, freie Seitentabelleneinträge auszufüllen, oder haben stark beanspruchten Speicher als alle anderen Speicherprobleme (abgesehen von der insgesamt schlechten Leistung, wie bereits erwähnt
  3. Selbst wenn Sie mit keiner Auslagerungsdatei arbeiten, können Sie immer noch Seitenfehler bekommen
  4. Im Allgemeinen sagt das Betrachten von festem Gedächtnis mehr darüber aus, wie ein Prozess Speicher verwendet

Für ein komplettes Bild, wie Speicherverwaltung in Windows funktioniert

Der Virtual-Memory Manager in Windows NT

Wenn Sie denken, dass Sie ein Speicherproblem haben, würde ich zuerst vorschlagen, diese Präsentation anzuschauen Fehlerbehebung im Windows-Speicher

Hier ist eine großartige Erklärung, warum Sie manchmal "aus dem Gedächtnis" bekommen, wenn Sie nicht dank Speicherfragmentierung sind:

Siehe auch Die Grenzen von Windows verschieben: Physischer Speicher

Mehr zu virtuellem Speicher, Speicherfragmentierung und -lecks und WOW64 

RAM, virtueller Speicher, Pagefile und all das Zeug (Microsoft Support)

Aktualisieren:

Windows 10 macht etwas anderes mit dem Speicher und im Laufe der Zeit sehen Sie einen Prozess namens "System und komprimierten Speicher". Windows 10 fügt der Auslagerungsliste einen "Komprimierungsspeicher" hinzu. Dieser RAM ist ein USER-Speicher, der dem System gehört (normalerweise hatte das System nur Kernel-Speicher) Dieser Speicher wird für eine durchschnittliche Reduzierung auf etwa 30% komprimiert. Dadurch können mehr Seiten im Speicher gespeichert werden (für diejenigen unter Ihnen, die 70% mehr Platz benötigen). Wenn der Speicher noch unter Druck steht, können Seiten aus dem Komprimierungsspeicher (Benutzermodus Systemprozessbereich) auf dem geänderten Platz platziert werden Liste (komprimiert), die dann in die physische Auslagerungsdatei geschrieben werden kann. Das System sieht, dass sie aus dem Systembenutzermodusraum stammen und komprimiert sind, und versucht nicht, sie in den Speicher zurückzulegen. Auf Systemen mit Windows 10 sieht es vielleicht so aus, als würde das System den RAM inhalieren, aber in Wirklichkeit versucht es nur, den RAM effizienter zu nutzen. Mac-Benutzer verwenden seit 2013 eine ähnliche Funktion, und neuere Versionen des Linux-Kernels verwenden eine Version der Speicherkomprimierung. Diese Speichermethode ist nicht nur besser, sondern bereits bei anderen Betriebssystemen üblich.


25
2017-10-16 01:42





Ja, die Paging-Deltas würden Ihnen eine Live-Anzeige geben, wie viel der Server paging (oder "swapping"), aber nur in diesem Moment. Um dies genauer zu beobachten und eine historische Sichtweise zu sehen, würde ich vorschlagen, sie zu verwenden Leistungsüberwachung (perfmon.exe) Diese Deltas (und andere Leistungsindikatoren von Interesse, die dazu beitragen können, bestimmte Ereignisse oder Aktivitäten mit Spitzen in der Paging-Aktivität zu korrelieren) werden aufgezeichnet oder aufgezeichnet.


6
2017-10-15 17:00





Performance Monitor (Perfmon) ist hier dein Freund. Sie suchen nach Seitenfehlern (dh Seitenfehler, wenn die für die Anforderung erforderliche Speicherseite von der Festplatte gelesen werden muss), sodass die Überwachung von Fehlern auf der Hard- und der weichen Seite nicht optimal ist.

Beobachten Sie den Zähler "Seiten Eingabe / Sek." Im Objekt "Speicher" mit perfmon, um ein Gefühl dafür zu bekommen, wie viele Seitenfehler auftreten.


5
2017-10-15 17:23





Eine gute Faustregel besagt, dass, wenn Ihre Gebühr höher ist als Ihr physischer Speicher, Sie definitiv paging sind etwasWenn Ihre App jedoch einen einzigen festen Datenpuffer verwendet, der immer in Verwendung ist, wird er im Allgemeinen nicht ausgelagert. Es kann zu Verzögerungen beim Start kommen, während anderer Speicher ausgelagert wird, um Platz dafür zu schaffen.


0
2017-10-15 20:17



mh: Ich bin mir nicht sicher, ob ich deiner Faustregel zustimme. Wenn die Commit-Gebühr höher ist als der physische Speicher, bedeutet das einfach etwas war paged an einem gewissen Punkt, aber das System ist nicht unbedingt immer noch etwas paging. Etwas wird nur ausgelagert, wenn ein Seitenfehler auftritt. Ansonsten stimme ich zu, dass die Verwendung eines einzelnen festen Datenpuffers am besten wäre, aber dann denke ich, dass wir uns wahrscheinlich in den Bereich von stackoverflow.com bewegen werden - Jessica McKinnon
Mein Fehler, ich hätte sagen sollen: "In der Vergangenheit wurde etwas ausgetauscht, und zukünftige Speicheranfragen werden ebenfalls ausgetauscht werden müssen". - Maximus Minimus
Dies ist nicht unbedingt der Fall, wenn eine Anwendung nur Seiten im Speicher sperren kann, die über diese Betriebssystemberechtigung verfügen. - Jim B