(Nota: si quiere usar un fichero para swap porque obtiene errores de tipo
"virtual memory exhausted", debería intentar antes elevar
los límites por proceso con
unlimit(1) en csh, o
ulimit(1) en sh.
OpenBSD 2.5 usa swapon(8) para manejar la «memoria de intercambio» (memoria de "swap"). Para usar un fichero como memoria de intercambio no es necesario compilar un núcleo ("kernel") a medida, aunque lo podría hacer así. Este documento le mostrará cómo añadir espacio swap de los dos modos.
Usar un fichero como memoria de swap es el modo más fácil y rápido para obtener un área de swap adicional. Esto no sirve para los usuarios que estén usando "Softupdates" (que no se encuentra activado por definición). Para empezar, puede ver cuánta memoria de swap tiene actualmente y cuánta está usando con la utilidad pstat(8) Puede hacerlo del siguiente modo:
ericj@oshibana> pstat -s Device 512-blocks Used Avail Capacity Priority swap_device 65520 8 65512 0% 0
Esto muestra los dispositivos que se están usando actualmente para
memoria de swap y sus estadísticas.
En el ejemplo anterior sólo hay un dispositivo llamado
"swap_device".
Éste es el área predefinida en el disco para swap (si usa
disklabel lo mostrará como la partición b).
Como también puede observar en el ejemplo anterior, el dispositivo no
está siendo muy usado en este momento.
Pero para el propósito de este documento, supondremos que necesitamos
32MB adicionales.
El primer paso para configurar un fichero como dispositivo de memoria de swap es crear el fichero. La mejor forma de crearlo es mediante la utilidad dd(1). Aquí tiene un ejemplo de cómo crear el fichero /var/swap con un tamaño de 32MB.
ericj@oshibana> sudo dd if=/dev/zero of=/var/swap bs=1k count=32768 32768+0 records in 32768+0 records out 33554432 bytes transferred in 20 secs (1677721 bytes/sec)
Una vez que haya hecho esto, puede activarlo como dispositivo de swap. Use la siguiente orden:
ericj@oshibana> sudo swapon -a /var/swap
Ahora debe comprobarlo para ver si ha sido correctamente añadido a la lista de dispositivos de swap.
ericj@oshibana> pstat -s Device 512-blocks Used Avail Capacity Priority swap_device 65520 8 65512 0% 0 /var/swap 65536 0 65536 0% 0 Total 131056 8 131048 0%
Una vez que el fichero esté activado y se esté usando como memoria de swap, debe añadir una línea a su fichero de configuración del sistema /etc/fstab, para que también se active la próxima vez que inicie el sistema. Si no añade esta línea, la próxima vez que inicie o reinicie el sistema no tendrá este dispositivo de swap activado.
ericj@oshibana> cat /etc/fstab /dev/wd0a / ffs rw 1 1 /var/swap /var/swap sw 0 0
Ésta es una solución más permanente que la de añadir más espacio de swap. Para usar un fichero de swap de modo permanente, primero compile un núcleo con vnd0c como swap. Si su sistema de archivo raíz es wd0a, entonces wd0b es swap. Use la siguiente línea en el fichero de configuración del núcleo (si tiene dudas, mire la sección sobre la compilación del núcleo):
config bsd root on wd0a swap on wd0b and vnd0c dumps on wd0b
A continuación debe crear el fichero que usará para swap. Hágalo usando las mismas órdenes que en los ejemplos anteriores.
ericj@oshibana> sudo dd if=/dev/zero of=/var/swap bs=1k count=32768 32768+0 records in 32768+0 records out 33554432 bytes transferred in 20 secs (1677721 bytes/sec)
Ahora que ya tiene el fichero en su sitio, debe añadirlo al fichero /etc/fstab. Aquí tiene una línea de ejemplo para iniciar con este dispositivo como swap en el arranque del sistema.
ericj@oshibana> cat /etc/fstab /dev/wd0a / ffs rw 1 1 /dev/vnd0c none swap sw 0 0
En este momento debe reiniciar su sistema para que tengan lugar los cambios en el núcleo. Una vez hecho esto, es el momento de configurar el dispositivo como memoria de swap. Para ello use vnconfig(1).
ericj@oshibana> sudo vnconfig -c -v vnd0 /var/swap vnd0: 33554432 bytes on /var/swap
Como último paso, debe activarlo como dispositivo de memoria de swap. Para ello hágalo como en los ejemplos anteriores, usando swapon(8). A continuación compruebe si ha sido correctamente añadido a nuestra lista de dispositivos de swap.
ericj@oshibana> sudo swapon -a /dev/vnd0c ericj@oshibana> pstat -s Device 512-blocks Used Avail Capacity Priority swap_device 65520 8 65512 0% 0 /dev/vnd0c 65536 0 65536 0% 0 Total 131056 8 131048 0%
Si su versión de OpenBSD es la 2.5 (estos pasos no son necesarios en la versión 2.6 de OpenBSD), y si empieza a usar las medidas para afinar el rendimiento, es posible que empiece a quedarse sin memoria en el núcleo del sistema. Si comienza a ver avisos como "out of space in kmem_map", entonces necesita añadir la siguiente opción al núcleo:
Si ve un aviso como "vm_map_entry_create: out of map entries", puede incrementar el número de entradas y asignaciones estáticas en el núcleo. El valor por definición para estas opciones depende de la arquitectura, y está especificado en /sys/vm/vm_map.h. Si está usando "softupdates", los siguientes valores le deberín servir.