136 votos

Inicio - ¿Qué significa el tamaño de la memoria Virtual? ...Linux/Ubuntu

Me estoy quedando top para supervisar mi servidor rendimiento y 2 de mis procesos java muestran memoria virtual de hasta 800MB - 1GB. ¿Eso es algo malo?

¿Qué es la memoria virtual?

Y por cierto, tengo swap de 1GB y muestra 0% utilizado. Así que estoy confundida.

Proceso de Java = 1 servidor Tomcat + mi propio demonio java Server = Ubuntu 9.10 (karmic)

155voto

apenwarr Puntos 588

La memoria Virtual no es necesariamente la memoria. Por ejemplo, si un proceso de memoria-los mapas de un gran archivo, el archivo se almacena en el disco, pero todavía ocupa "espacio de direcciones" en el proceso.

Espacio de direcciones (es decir. la memoria virtual en la lista de procesos) no cuesta nada; que no es real. Lo que es real es el RSS (RES) de la columna, que es residente en memoria. Es que mucho de su memoria real de un proceso que ocupa.

Pero incluso eso no es toda la respuesta. Si un proceso llama a fork(), se divide en dos partes, y ambos inicialmente compartir todas sus RSS. Así que incluso si el RSS fue inicialmente de 1 GB, el resultado después de la bifurcación de dos procesos, cada uno con un feed RSS de 1 GB, pero usted todavía sólo se puede usar 1 GB de memoria.

Confundido todavía? Aquí es lo que usted realmente necesita saber: el uso de la free comando y comprobar los resultados antes y después de iniciar el programa (en la +/- buffers/cache de la línea). La diferencia es cuánto nueva memoria a su recién iniciado programa utilizado.

25voto

amphetamachine Puntos 438

Desde la parte superior(1) el hombre de la página:

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.

      VIRT = SWAP + RES.

Donde RES significa Residente en memoria (memoria física usada).

En realidad eso no es correcto (ya). Cuando dice "swap", que también incluye los archivos que el programa ha asignado en su espacio de direcciones, que puede o no estar consumiendo la RAM real todavía. Esta memoria es el archivo de copia, pero no es realmente de intercambio.

VIRT también incluye páginas que han sido asignados, pero no se usa para nada. Cualquier página en este estado se asigna a la del núcleo de Página Cero (concepto brillante-usted debe mirar hacia arriba) por lo que se muestra en VIRT pero en realidad no consume memoria.

5voto

leonbloy Puntos 834

VIRT columna en el ps/salida superior es casi irrelevante para medir el uso de la memoria. No te preocupes por eso. http://serverfault.com/questions/122810/apache-heavy-load-virt-vs-res-memory

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

1voto

Somatik Puntos 2440

Linux soporta memoria virtual, es decir, el uso de un disco como una extensión de la memoria RAM para que el tamaño efectivo de memoria utilizable crece proporcionalmente. El kernel va a escribir el contenido de una actualmente en desuso bloque de memoria en el disco duro de modo que la memoria puede ser utilizada para otro propósito. Cuando el contenido original se necesita de nuevo, se lee en la memoria. Todo esto es completamente transparente para el usuario; los programas se ejecutan en Linux sólo ver la mayor cantidad de memoria disponible y no se dan cuenta que partes de ellos residen en el disco de vez en cuando. Por supuesto, la lectura y escritura del disco duro es más lenta (del orden de miles de veces más lento) que el uso de la memoria real, por lo que los programas no corren tan rápido. La parte del disco duro que se utiliza como memoria virtual es llamado el espacio de intercambio.

Linux puede utilizar un archivo normal en el sistema de archivos o una partición separada para el espacio de intercambio. Una partición de intercambio es más rápido, pero es más fácil cambiar el tamaño de un archivo de intercambio (no hay necesidad de volver a crear particiones del disco duro entero, y posiblemente instalar todo desde cero). Cuando usted sabe cuánto espacio de intercambio que usted necesita, usted debe ir para una partición swap, pero si no está seguro, usted puede utilizar un archivo de intercambio en primer lugar, utilizar el sistema por un tiempo, así que usted puede obtener una idea de cuánto de intercambio que necesita y, a continuación, crear una partición swap cuando usted está seguro acerca de su tamaño.

Usted también debe saber que Linux permite el uso de varias particiones swap y/o de intercambio de archivos al mismo tiempo. Esto significa que si sólo de vez en cuando necesita una inusual cantidad de espacio de intercambio, puede configurar un extra de archivo de intercambio en esos momentos, en lugar de mantener el monto total asignado todo el tiempo.

Una nota sobre el sistema operativo de la terminología: ciencias de la computación generalmente se distingue entre la memoria de intercambio (escrito todo el proceso para espacio de intercambio (swap) y paginación (sólo escritura fija el tamaño de las piezas, generalmente de unos pocos kilobytes, en un momento). La paginación es generalmente más eficiente, y eso es lo que Linux, pero Linux tradicionales de la terminología de las conversaciones sobre el intercambio de todos modos.

Fuente: http://www.faqs.org/docs/linux_admin/x1752.html

1voto

Marek Kowalski Puntos 101

He encontrado esta charla muy útil para entender el tema: http://www.youtube.com/watch?v=twQKAoq2OPE

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: