SafeChildren Banner

Havoc Oracle Solaris Experts

domingo, 3 de octubre de 2010

Cómo Limitar el tamaño de /tmp en Solaris y OpenIndiana

Introducción
En Solaris el directorio temporal </tmp>, o mejor dicho, el sistema de archivos <tmpfs> es un sistema de archivos en memoria, y por lo tanto, es muy eficiente, pero ... si no tenemos cuidado podemos tener problemas en nuestro host.

Por defecto, <tmpfs> utilizará nuestro área <swap> para crear la unidad, y por lo tanto, si no definimos unos valores máximos, podremos sufrir un desvanecimiento de nuestro host -por que se quede sin memoria física-.

Para solucionarlo, simplemente definiremos la opción <size=XYZm> en el archivo </etc/vfstab>, por ejemplo:
# cat /etc/vfstab |grep tmp
swap            -               /tmp            tmpfs   -       yes     -
# vi /etc/vfstab
  swap            -               /tmp            tmpfs   -       yes     size=512m
:wq
# cat /etc/vfstab |grep tmp
swap            -               /tmp            tmpfs   -       yes     size=512m

Referencias

2 comentarios:

  1. Tengo un par de Solaris 10 que trabajan como almacén de documentos (storage), los cuales se sirven usando samba.
    Desde que los monté, aleatoriamente se quedaban "colgados" (lo mismo lo hacían una vez a la semana, que pasaban meses). Pude ver que si entraba por consola vía KVM-IP no tenía problema, pero desaparecían de la red.
    Después de ver esta entrada tuya creo que el culpable va a ser este.
    El sistema tiene 4 Gb de RAM. Le voy a poner 2 Gb de swap (continuando por tmpfs), pero no quiero ponerle más porque entre eso y lo que me consume el ZFS...
    Lo malo es que no puedo ponerle ahora mismo una partición swap en disco, porque ya lo tengo todo montado (y en mi ignorancia, cuando instalé el solaris, pensaba que la swap la montaba en disco, no en memoria (pardillaco que es uno)).

    En fin, muchas gracias por tus entradas (especialmente por ésta), y si puedes aportar lo que sea a mi pequeño "problemilla", bienvenido será.

    Have a nice day ;-)
    TooManySecrets

    ResponderEliminar
  2. Hola Manuel,

    Si, la verdad es que el funcionamiento de la swap en Solaris es un poco diferente.

    Lo cierto, es que tal vez no esté muy claro el post -o no me he explicado con suficiente detalle- pero hay que tener en cuenta lo siguiente:

    El sistema de archivos tmpfs es un sistema en Memoria y, por lo tanto, intentará "colocarse" en RAM, ahora bien, como el propio funcionamiento de Solaris, donde la swap es la suma de la RAM + Espacio en Disco, puede darse el caso de que tmpfs "bloquee" el uso de RAM y por lo tanto, para el sistema tenga que "tirar de disco" ya que TMPFS "intentará siempre ponerse en RAM".

    Claro, cuanto más grande es el tmpfs (en nuestro caso /tmp y /var/tmp) menos "RAM Física" hay para Solaris. Si a esto le sumas ZFS que "intentará mantener la caché en RAM", podemos encontrarnos con un Sistema totalmente "saturado" y "swapeando a disco" -ya que en Solaris, que swapee no significa que lo haga a disco.

    Entonces, por dónde empezar?

    1.- Limitar el tamaño de /tmp
    2.- Limitar el uso de la caché de ZFS
    3.- Limitar el uso de swap en los procesos

    Para ampliar la swap "en caliente" podemos incluir un archivo para la swap para intentar solucionar el problema, aquí tienes cómo se hace Ampliar el Area SWAP en Solaris

    Además, deberías activar los Resource Controls de los project (por ejemplo, poner los procesos de SAMBA) y activar controles para saber "cuándo se están pasando de swap, files, etc.
    Configuraciones de Project en Solaris

    Podemos empezar por ahí, y vemos a ver si podemos solucionarlo.

    Espero haberte ayudado,


    Un Saludo,
    Urko

    ResponderEliminar