2008-08-04 10 views
22

¿Cuál es la forma correcta de obtener el tamaño del proceso en Solaris, HP-UX y AIX? ¿Deberíamos usar top o ps -o vsz o alguna otra cosa?Tamaño del proceso en UNIX

Respuesta

17

Las definiciones exactas de vsize, rss, rprvt, rshrd, y otras abreviaturas de aspecto oscuros varían de OS a OS. Las páginas de manual para los comandos top y ps tendrán algún tipo de descripción, pero todas esas descripciones se simplifican enormemente (o se basan en implementaciones del kernel largamente extinguidas).
El "tamaño de proceso" como concepto es extremadamente difícil de precisar en el caso general. Las respuestas en instancias específicas dependen en gran medida de la implementación real de administración de memoria en el sistema operativo, y rara vez son tan satisfactorias como el concepto de "tamaño de proceso" ordenado que existe en la mente de la mayoría de los usuarios (y 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 de esos procesos se pueden ejecutar a la vez en una cantidad determinada de memoria libre. Pero, en realidad, su mejor apuesta es llegar desde ese punto: ¿por qué quiere este número y para qué lo usará? Dada esa información, creo que obtendrás más respuestas útiles.

3

Sí, tiene derecho a bloquear en la VSZ.

ps u le proporcionará 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 ejecutándose, mucha de la memoria en el VSZ será compartida entre esos procesos.

+3

El número VSZ es inútil si lo que le interesa es el consumo de memoria. VSZ mide qué parte del espacio de memoria * virtual * del proceso ha sido marcado por el proceso como memoria que debe ser asignada por el sistema operativo si el proceso llega a tocarlo. Pero no tiene nada que ver con si esa memoria realmente ha sido tocada y utilizada. VSZ es un detalle interno acerca de cómo un proceso asigna la memoria, qué tan grande es la cantidad de memoria no utilizada que capta a la vez. Mira RSS para el recuento de páginas de memoria que en realidad comenzó a usar. –

5

En Solaris, puede obtener información detallada sobre el uso de memoria de un proceso con el comando pmap. En particular, pmap -x <pid> le muestra qué parte de la memoria de un proceso se comparte y cuánto se utiliza específicamente en 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.

2

que resume el tamaño del conjunto residente para todos los procesos de este tipo (como root):

ps ax -o rss | awk '{rss += $1;} END { print rss}' 
Cuestiones relacionadas