2011-08-30 4 views
8

Estoy tratando de usar/dev/shm tmpfs para escribir mis archivos. El valor predeterminado es la mitad de la RAM física sin intercambio. Cuando escribo algo más allá del tamaño de este montaje, aparece el error "No queda espacio en el disco".puedo sobre ejecutar el tamaño de tmpfs

Mi pregunta es, ¿no debería estar utilizando el espacio de intercambio en lugar de un error de salida? ¿Hay alguna manera de que pueda dejar que mi aplicación se agote más de lo que se asigna para tmpfs, tal vez a través de una opción?

Qué sucede si uno de mis procesos se está ejecutando y ha agotado casi todo el espacio en/dev/shm y tengo otro proceso ejecutándose (fuera de/dev/shm) que también usa más del 50% de RAM ¿espacio? ¿Cuál se intercambia?

Por ejemplo, supongamos que mi memoria física total es de 40 GB y la de tmpfs es de 20 GB. Uno de los procesos está usando/dev/shm y tiene unos 20 GB. Ahora hay otro proceso en ejecución que toma alrededor de 30 GB. ¿Cuál de los procesos cambiará? O no puede ser determinado?

Respuesta

17

tmpfs usará el espacio de intercambio cuando sea necesario (puede suceder incluso si el tamaño de tmpfs es la mitad del tamaño de la RAM, ya que otras cosas también usan RAM) y 'la mitad de la RAM' es el tamaño predeterminado (bastante sano) del sistema de archivos. Es posible configurarlo para lo que quiera durante el montaje o volver a montarlo con el 'tamaño' argumento:

Opciones de montaje para tmpfs

size=nbytes 

    Override default maximum size of the filesystem. The size is 
    given in bytes, and rounded up to entire pages. The default is 
    half of the memory. The size parameter also accepts a suffix % 
    to limit this tmpfs instance to that percentage of your physical 
    RAM: the default, when neither size nor nr_blocks is specified, 
    is size=50% 

Si su distribución utiliza fstab para montar los tmpfs que pueda tener! agregar, por ejemplo 'tamaño = 40G' allí. También puede volver a montarlo en cualquier momento usando:

mount -o remount,size=40G /dev/shm 

Tenga cuidado, sin embargo. Si los archivos en los tmpfs toman demasiada memoria virtual (RAM + swap), las aplicaciones se pueden matar (con el asesino de OOM) y todo el sistema puede bloquearse.

Volver a sus preguntas ...

no creo que es fácil determinar lo que va a ser intercambiado, ya que yo sepa en ese nivel para Linux todo (incluyendo la memoria de datos del proceso, los archivos almacenados en caché de disco, archivos de disco mmaped , archivos tmpfs) es la misma "memoria virtual". Linux puede considerar algunas páginas más importantes (usadas recientemente), otras listas para ser intercambiadas. Por lo tanto, puede ser una parte del archivo tmpfs y una parte del otro proceso reemplazado.

+0

Agregaría http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/ a su comentario :) – Quamis

Cuestiones relacionadas