Pregunta

¿Cuál es la forma correcta de obtener el tamaño del proceso? Solaris, HP-UX y AIX?¿Deberíamos usar top o ps -o vsz ¿o algo mas?

¿Fue útil?

Solución

Las definiciones exactas de vsize, rss, rprvt, rshrd, y otras abreviaturas de apariencia oscura varían de un sistema operativo a otro.Las páginas del manual del top y ps Los comandos tendrán algún tipo de descripción, pero todas esas descripciones están muy simplificadas (o se basan en implementaciones del kernel extintas hace mucho tiempo).
El "tamaño del proceso" como concepto es diabólicamente difícil de precisar en el caso general.Las respuestas en casos específicos dependen en gran medida de la implementación real de la gestión de memoria en el sistema operativo y rara vez son tan satisfactorias como el concepto ordenado de "tamaño de proceso" que existe en la mente de la mayoría de los usuarios (y de la mayoría de los desarrolladores).

Por ejemplo, ninguno de esos números (ni, probablemente, ninguna combinación de ellos) se puede utilizar para indicar exactamente cuántos procesos de este tipo se pueden ejecutar a la vez en una determinada cantidad de memoria libre.Pero en realidad, lo mejor que puedes hacer es hacerlo desde ese extremo:¿Por qué quieres este número y para qué lo usarás?Dada esa información, creo que obtendrá respuestas más útiles.

Otros consejos

En Solaris, puede obtener información detallada sobre el uso de memoria de un proceso con el pmap dominio.En particular, pmap -x <pid> muestra cuánta memoria de un proceso se comparte y cuánta utiliza específicamente ese proceso.Esto es útil para calcular el uso de memoria "marginal" de un proceso; con esta técnica puede evitar el doble conteo de bibliotecas compartidas.

Sí, tienes razón al bloquear en VSZ.

ps u le dará VSZ y RSS, que son el tamaño de la memoria virtual y el tamaño del conjunto residente.El RSS es la cantidad de memoria física que se ha asignado al proceso y el VSZ es el tamaño de la memoria virtual del proceso.Si tiene varias copias de un programa en ejecución, gran parte de la memoria en VSZ se compartirá entre esos procesos.

Resumí el tamaño del conjunto residente para todos los procesos como este (como root):

ps ax -o rss | awk '{rss += $1;} END { print rss}'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top