9 votos

Comprender el uso de memoria virtual > cambiar + física en Linux

Tengo un proceso que se está reportando en el 'top' que tiene 6GB de memoria residente y 70 gb de memoria virtual asignada. Lo extraño es que este servidor en particular solo tiene 8GB de la física y de 35GB de espacio de intercambio disponible.

Desde el 'top' manual:

   o: VIRT  --  Virtual Image (kb)
      The total amount of virtual memory used by the  task.   It  includes
      all  code,  data  and  shared  libraries  plus  pages that have been
      swapped out. (Note: you can define the STATSIZE=1 environment  vari-
      able  and  the VIRT will be calculated from the /proc/#/state VmSize
      field.)

      VIRT = SWAP + RES.

Dada esta explicación, yo esperaría que el virtual con la asignación de memoria para un proceso de limitarse a mi swap + memoria física disponible.

Según el 'plan de acción', el código de la biblioteca compartida, y secciones de memoria compartida de este proceso son todos mínimos - no más de 300 METROS o así.

Obviamente, la máquina y el proceso todavía están funcionando correctamente (aunque lentamente), así que lo que me estoy perdiendo aquí?

2voto

cjc Puntos 17092

He aquí una discusión de virt vs residente en memoria:

http://stackoverflow.com/questions/561245/virtual-memory-usage-from-java-under-linux-too-much-memory-used

La discusión se refiere a los procesos Java, pero es aplicable a cualquier cosa que se ejecuta bajo Linux. El principal punto con respecto a virt es que el total incluye un montón de cosas que nunca podrán ser utilizados. Virt es algo para mirar para 32-bit sistemas operativos (ya que los procesos que llegará a límites de espacio direccionable), pero en gran parte no es útil en caso contrario. Como se señaló, lo que hay que prestar atención a los residentes de la memoria, que estará limitada a la memoria RAM física disponible y el intercambio.

1voto

MichaelS Puntos 121

Esto es probable porque el espacio de direcciones del proceso es el tamaño como se dijo, pero realmente no es asignado por el sistema operativo.

De: http://lwn.net/Articles/428100/

En el proceso de tratar de alcanzar la meta de "lo suficientemente baja sobrecarga y no significativa de la latencia," el Ir a los desarrolladores han hecho algunos supuestos simplificadores, uno de los cuales es que la memoria que está gestionado por una aplicación en ejecución proviene de una sola, prácticamente contiguos rango de direcciones. Tales supuestos se pueden ejecutar en el mismo problema que tu editor de golpear con vi - otro código puede asignar piezas en el medio de la gama - por lo que el Ir a los desarrolladores adoptado la misma solución: simplemente asignar toda la memoria piensan que podría necesitar (imaginaban que, razonablemente, que el de 16 gb debería ser suficiente en un sistema de 64 bits) en el tiempo de inicio.

Así que esa es la unelegant forma de administración de memoria se hace a veces tener un continuo de espacio de direcciones simplifica la distribución no utilizados mem.

0voto

Kirill Osenkov Puntos 3902

Puede ser que la demanda cero de la memoria que no está en la ram física, o en el archivo de paginación.

Algunos de los recursos que usted puede desear mirar en:

¿La aplicación es crear un montón de vacíos de las páginas de memoria? Si es así, su aplicación podría beneficiarse enormemente de:

Permite comprimir y descomprimir en tiempo real de las páginas de memoria. A su vez, son capaces de mantener todo en RAM en lugar de swap a disco (muy lento).

0voto

Nick Puntos 268

La respuesta es, probablemente, MMAP - los datos en el disco, sino que es "fuera" de la swap y no puede ser visto con "libre" o "superior" de comandos.

Si el proceso java no es demasiado complicado, puede intentar jugar con "lsof" donde encontrar el archivo MMAP es. Sin embargo, si este proceso java es complicado, no será difícil para ser visto.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: