¿Cómo puedo saber si mi servidor de Windows está intercambiando?


29

Estoy usando Process Explorer para monitorear mi servidor de Windows mientras reconstruye algunos datos. Es principalmente un proceso intensivo de CPU, pero quiero asegurarme de que no se intercambie. ¿Cómo puedo saber si está usando Process Explorer? Mi conjetura inicial está en la ventana de Información del sistema, es Delta de escritura de archivo de paginación. ¿Sí? ¿No? ¿Soy un idiota?

* La captura de pantalla no es del servidor ... solo un ejemplo.

texto alternativo http://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg

Respuestas:


30

"La entrada de páginas / segundo es el contador para mirar, pero no debe preocuparse por" intercambiar ", ya que Windows no utiliza el archivo de página como * nixes.

Primero debes entender que las páginas de Windows no entran. Voy a citar la porción relevante de la publicación del blog de Eric Lipperts (ligeramente editada) ya que no puedo decirlo mejor:

"La RAM se puede ver simplemente como una optimización del rendimiento. Acceder a los datos en la RAM, donde la información se almacena en campos eléctricos que se propagan a una velocidad cercana a la de la luz, es mucho más rápido que acceder a los datos en el disco, donde la información se almacena en forma enorme y pesada. moléculas de metales ferrosos

El sistema operativo realiza un seguimiento de qué páginas de almacenamiento desde qué procesos se accede con mayor frecuencia, y hace una copia de ellas en la RAM, para aumentar la velocidad. Cuando un proceso accede a un puntero correspondiente a una página que actualmente no está en caché en la RAM, el sistema operativo hace un "error de página", sale al disco y hace una copia de la página del disco a la RAM, haciendo la suposición razonable que está a punto de ser accedido nuevamente pronto.

El sistema operativo también es muy inteligente al compartir recursos de solo lectura. Si dos procesos cargan la misma página de código desde la misma DLL, entonces el sistema operativo puede compartir la memoria caché de RAM entre los dos procesos. Dado que presumiblemente el código no será cambiado por ninguno de los procesos, es perfectamente sensato guardar la página duplicada de RAM compartiéndola.

Pero incluso con el uso compartido inteligente, eventualmente este sistema de almacenamiento en caché se quedará sin RAM. Cuando eso sucede, el sistema operativo adivina a qué páginas es menos probable que se vuelva a acceder pronto, las escribe en el disco si han cambiado y libera esa RAM para leer en algo que es más probable que se acceda nuevamente. pronto.

Cuando el sistema operativo adivina incorrectamente, o, más probablemente, cuando simplemente no hay suficiente RAM para almacenar todas las páginas a las que se accede con frecuencia en todos los procesos en ejecución, la máquina comienza a "sacudirse". El sistema operativo pasa todo su tiempo escribiendo y leyendo el costoso almacenamiento en disco, el disco funciona constantemente y no realiza ningún trabajo.

Esto también significa que "quedarse sin RAM" rara vez produce un error de "falta de memoria". En lugar de un error, da como resultado un mal rendimiento porque el costo total del hecho de que el almacenamiento está realmente en el disco de repente se vuelve relevante.

Otra forma de ver esto es que la cantidad total de memoria virtual que consume su programa no es realmente relevante para su rendimiento. Lo relevante no es la cantidad total de memoria virtual consumida, sino más bien (1) qué cantidad de esa memoria no se comparte con otros procesos, (2) qué tan grande es el "conjunto de trabajo" de las páginas de uso común y ( 3) si los conjuntos de trabajo de todos los procesos activos son más grandes que la RAM disponible.

A estas alturas debería estar claro por qué los errores de "falta de memoria" generalmente no tienen nada que ver con la cantidad de memoria física que tiene, ni con la cantidad de almacenamiento disponible. Casi siempre se trata del espacio de direcciones, que en Windows de 32 bits es relativamente pequeño y se fragmenta fácilmente. "

Algunos puntos adicionales:

  1. los archivos dlls y de programa siempre se ingresan, nunca se eliminan, ya que ya están en el disco (y, por lo general, las primeras páginas se liberan cuando el RAM físico se agota)
  2. es mucho más probable que se quede sin entradas libres en la tabla de páginas o tenga una memoria muy fragmentada que cualquier otro problema de memoria (aparte del mal rendimiento general como ya se mencionó
  3. incluso si ejecuta sin archivo de página, aún puede obtener fallas de página
  4. en términos generales, mirar la memoria comprometida es más revelador de cómo un proceso usa la memoria

para obtener una imagen completa de cómo funciona la gestión de memoria en Windows, consulte

El administrador de memoria virtual en Windows NT

si crees que tienes un problema de memoria, primero te sugiero que veas esta presentación sobre la solución de problemas de memoria de Windows

Aquí hay una gran explicación de por qué a veces se queda "sin memoria" cuando no lo está gracias a la fragmentación de la memoria:

Consulte también Empujar los límites de Windows: memoria física

Más sobre memoria virtual, fragmentación de memoria y fugas, y WOW64

RAM, memoria virtual, archivo de paginación y todo eso (soporte de microsoft)

Actualizar:

Windows 10 hace algo un poco diferente con la memoria y, con el tiempo, verá un proceso llamado "Sistema y memoria comprimida". Windows 10 agrega un "almacén de compresión" a la lista de paginación. Esta memoria RAM es la memoria del USUARIO que es propiedad del sistema (por lo general, el sistema solo tenía memoria del núcleo). Esta memoria se comprime en su lugar para una reducción promedio de alrededor del 30%. Esto permite que se almacenen más páginas en la memoria (para aquellos de ustedes que hacen las matemáticas, es un 70% más de espacio) Tenga en cuenta que si la memoria aún tiene presión, entonces las páginas del almacén de compresión (espacio de proceso del sistema en modo de usuario) se pueden colocar en el lista (comprimida) que luego puede escribirse en el archivo de paginación físico. El sistema verá que provienen del espacio del modo de usuario del sistema y están comprimidos y no intentará volver a colocarlos en la tienda. Por lo tanto, en los sistemas Windows 10 puede parecer que el sistema está inhalando ram, pero de hecho solo está tratando de ser más eficiente en el uso de ram. Los usuarios de Mac han estado utilizando una función similar desde 2013, y las versiones más nuevas del kernel de Linux emplean una versión de compresión de memoria. Este método de conservar memoria no solo es mejor, sino que ya es común entre otros sistemas operativos.


6

Sí, los deltas de paginación le darían una indicación en vivo de la paginación del servidor (o "intercambio"), pero solo en ese momento. Para ver esto más de cerca y ver una vista histórica, sugeriría usar el Monitor de rendimiento ( perfmon.exe ) para trazar o registrar esos deltas (y cualquier otro contador de rendimiento de interés que pueda ayudar a correlacionar eventos o actividades específicos con picos en actividad de paginación).


5

Monitor de rendimiento (perfmon) es tu amigo aquí. Está buscando fallas de página duras (es decir, fallas de página cuando la página de memoria necesaria para cumplir con la solicitud debe leerse desde el disco), por lo que el monitoreo de fallas de página duras y blandas es subóptimo.

Mire el contador "Entrada de páginas / seg." En el objeto "Memoria" usando perfmon para tener una idea de cuántas fallas de página están ocurriendo.


0

Una buena regla general es que si su carga de confirmación es mayor que su memoria física, definitivamente está buscando algo , pero si su aplicación usa un único búfer de datos fijo que siempre se mantiene en uso, generalmente no se paginará fuera en absoluto. Puede haber algún retraso en el inicio mientras se busca otra memoria para hacer espacio para esto.


3
mh: No estoy seguro de estar de acuerdo con tu regla general. Si la carga de confirmación es mayor que la memoria física, eso simplemente significa que algo se paginó en algún momento, pero el sistema no necesariamente sigue paginando nada. Algo solo se localizará cuando ocurra un fallo de página. De lo contrario, estoy de acuerdo que el uso de una única memoria intermedia de datos fija sería lo mejor, pero entonces creo que probablemente estamos moviendo en el terreno de stackoverflow.com
Jessica McKinnon

Lo malo es que debería haber dicho "algo se ha intercambiado en el pasado, y las futuras solicitudes de memoria también requerirán un intercambio".
Maximus Minimus

Esto no es necesariamente cierto, una aplicación solo puede bloquear páginas en memoria si tiene ese privilegio de sistema operativo.
Jim B
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.