Bytes privados VS Conjunto de trabajo en Process Explorer

39

Sé que el conjunto de trabajo es la cantidad real de memoria que utiliza el proceso y también que los bytes privados son la cantidad reservada en caso de que necesite más.

Entonces, ¿agregaría los dos para averiguar cuánta memoria se está REALMENTE quitando de otros procesos en el sistema?

Escandaloso
fuente

Respuestas:

52

Me temo que no es tan simple. En particular, los bytes privados no son muy útiles para responder la pregunta que plantea.

Lo primero a tener en cuenta es que puede existir una página de memoria en la memoria principal o en el almacenamiento externo (actualmente "paginación de disco" o "intercambio"). El segundo es que un proceso tendrá páginas privadas de memoria en su huella, pero también usará objetos en páginas compartidas, que otros procesos están usando al mismo tiempo.

El conjunto de trabajo es el tamaño de las páginas que pertenecen al proceso, que actualmente están almacenadas en la memoria principal. Cuando una página de memoria utilizada por un proceso se mueve al archivo de página, se elimina de la métrica del conjunto de trabajo, y cuando se vuelve a llamar a la memoria principal, se agrega nuevamente.

Sin embargo, el conjunto de trabajo no se refiere exclusivamente a la memoria que posee su proceso. Los procesos utilizan muchos objetos de memoria compartida, y el tamaño de estos objetos se refleja en la estadística. desafortunadamente, cuando dos procesos comparten un objeto de 1 MB, ambos procesos muestran una asignación de 1 MB en el conjunto de trabajo, por lo que si suma todos los conjuntos de trabajo, el objeto de 1 MB se registraría dos veces, por lo que la acumulación de todos los tamaños de los conjuntos de trabajo podría En casos extremos, parece exceder el tamaño del ariete disponible. ver más aquí: http://cybernetnews.com/cybernotes-windows-memory-usage-explained/

Bytes privados se refiere a la cantidad de espacio de archivo de página que se asigna al proceso (no necesariamente utilizado) en el caso de que la huella de la memoria privada del proceso esté completamente paginada para intercambiarse. la mayoría de las veces, el proceso no es del todo (o en absoluto) residente del archivo de página, por lo que los bytes privados parecen tener "espacio" para una asignación adicional. Sin embargo, no es el caso.

Sin embargo, los bytes privados solo se refieren a la memoria privada de los procesos, por lo que este valor puede no reflejar los recursos compartidos (incluso si el recurso compartido solo es utilizado por este proceso actualmente).

"Conjunto de trabajo privado" ("WS Private bytes" o "Private WS" en el explorador de procesos según la versión) es probablemente la mejor métrica para su uso. no se refiere al archivo de página, por lo que obtiene una representación precisa del impacto de los procesos en su ram físico, y no cuenta doblemente los objetos compartidos. los objetos compartidos se cuentan una vez (solo para el proceso que los creó), pero eso también significa que desde una perspectiva de proceso único no está registrando que su proceso usa objetos compartidos creados por otro proceso, por lo que su proceso podría usar más ram en otro máquina o en una situación en la que se requería crear el objeto compartido en sí mismo en lugar de usar otra instancia de procesos del mismo. El Administrador de tareas de Windows usa un conjunto de trabajo privado como su métrica de uso de memoria.

Espero que ayude

Frank Thomas
fuente
1
Entonces, ¿estaría en lo correcto al decir que "Bytes privados" es la cantidad de memoria que ha solicitado el proceso y "Conjunto de trabajo" son los Bytes privados más un poco de memoria adicional compartida que otros procesos pueden usar? Y también, "Conjunto de trabajo privado" es la cantidad de memoria privada actualmente en RAM física, que es la representación más precisa de la cantidad de memoria que está utilizando realmente.
Escandalista
44
Sí, más o menos. Si está preocupado por el conjunto de trabajo privado de ram gratis, este es el camino a seguir. si le preocupan los bytes privados de archivo de página o de confirmación completa (ram + memoria virtual) es una buena métrica.
Frank Thomas
"Bytes privados" es el espacio de direcciones virtuales privadas comprometidas del proceso. Algo de esto puede estar en el archivo de paginación, algunos en RAM, algunos en ambos lugares, algunos de ellos, posiblemente la mayor parte, pueden no tener ningún almacenamiento físico asignado (todavía). Es la contribución del proceso a la "carga de compromiso" general del sistema. El "conjunto de trabajo privado" es el subconjunto de "bytes privados" que se encuentra en la RAM. nb: No encontrará "bytes privados" ni nada parecido en las pantallas de RAMmap porque RAMmap solo se refiere a la memoria física (RAM), no virtual.
Jamie Hanrahan