|
|
· Junio y Julio, Curso Global de Servidores con CentOS 6.
· Taller de programación de Python. · Curso de programación de PHP. · Prueba ALDOS 1.4.4. Nuestro sistema operativo para escritorio. Gestión de espacio de memoria de intercambio (swap) en GNU/Linux.
Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/ Jabber ID: darkshram@jabber.org Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
Introducción.Algo de historia.Hace muchos años, GNU/Linux, en los tiempos del núcleo versión 2.0, se encontraba limitado a utilizar una sola partición de memoria de intercambio de un máximo de 128 MB, siendo esto una de los principales argumentos utilizados por sus detractores. Por fortuna las cosas han cambiado y hoy en día ya no existe dicho límite y es posible además utilizar cuanta memoria de intercambio sea requerida para satisfacer las necesidades de cualquier sistema. ¿Qué es y como funciona el espacio de intercambio?El espacio de memoria de intercambio o Swap, es lo que se conoce como memoria virtual. La diferencia entre la memoria real y la virtual es que está última utiliza espacio en el disco duro en lugar de un módulo de memoria. Cuando la memoria real se agota, el sistema copia parte del contenido de esta directamente en este espacio de memoria de intercambio a fin de poder realizar otras tareas. Utilizar memoria virtual tiene como ventaja el proporcionar la memoria adicional necesaria cuando la memoria real se ha agotado y se tiene que realizar un proceso. El inconveniente radica en que, como consecuencia de utilizar espacio en el disco duro, la utilización de esta es mucho muy lenta. Uno puede percatarse de esto cuando el disco duro empieza a trabajar repentinamente hasta por varios minutos después de abrir varias aplicaciones. ¿Cuanto espacio para memoria de intercambio se debe asignar al sistema?
Circunstancias en lasque se requiere aumentar la cantidad de memoria de intercambio.Contar con mayor espacio para utilizar memoria virtual puede ser práctico en los siguientes casos:
Procedimientos.Todos los procedimientos listados a continuación requieren hacerse como el usuario root o bien utilizando el mandato sudo. Cambiar el tamaño de la partición.Cambiar el tamaño de las particiones el disco duro y cambiar las dimensiones una partición de memoria de intercambio adicional es el método más efectivo.Sin embargo,ésto representa un riesgo, debido que podría ocurrir un error durante el procesos de repartición que podría desencadenar en pérdida de datos en un disco duro. Si se utiliza este método, es importante disponer de un respaldo de todos los datos importantes antes de comenzar el proceso. Crear un archivo para memoria de intercambio.Otro método más sencillo y sin riesgo alguno, consiste en utilizar un archivo de intercambio de forma similar a como se hace en otros sistemas operativos. Ante todo, la mejor solución siempre será adquirir más RAM. Procedimientos.Activar una partición de intercambio adicional.Si se cambio la tabla de particiones del disco duro y se ha creado una nueva partición de memoria de intercambio, se le da formato de la siguiente forma con el mandato mkswap, donde la opción -c indica se verifiquen sectores del disco duro buscando bloques dañados a fin de marcar estos y evitar utilizarlos:
En el siguiente ejemplo se dará formato como partición de memoria de intercambio a la partición /dev/sda8, de aproximadamente 1 GB, verificando sectores en busca de bloques dañados:
Lo anterior puede devolver una salida similar a la siguiente:
Para activar la partición y que sea utilizada inmediatamente por el sistema operativo, se ejecuta el mandato swapon de la siguiente forma:
En el siguiente ejemplo se activa como partición de memoria de intercambio a la partición /dev/sda8:
Para corroborar que la nueva partición de memoria de intercambio está siendo utilizada por el sistema operativo, se ejecuta el el mandato free, que puede devolver una salida similar a la siguiente:
Para que esta partición se utilice como memoria de intercambio automáticamente en el siguiente arranque del sistema, se edita el archivo /etc/fstab:
La línea que se deba agregar, lleva el siguiente formato:
De tal modo, en el siguiente ejemplo se definirá como partición de memoria de intercambio a la partición /dev/sda8:
Utilizar un archivo como memoria de intercambio.Este método no requiere hacer cambios en la tabla de particiones del disco duro. Es idóneo para usuarios poco experimentados, para quienes desean evitar tomar riesgos al cambiar la tabla de particiones el disco duro o bien para quienes requieren más de memoria de intercambio ocasional o de manera circunstancial.
Considerando que el archivo de memoria de intercambio puede ser colocado en cualquier directorio del disco duro, se ejecuta el mandato dd, especificando que se escribirán ceros (if=/dev/zero) para crear el archivo /swap (of=/swap), en bloques de 1024 bytes (bs=1024) hasta completar una cantidad en bytes determinada (count=[cantidad multiplicada por el valor de bs]). En el siguiente ejemplo se realiza lo anterior hasta completar 524288000 bytes (1024 por ), que equivalen a 512 MB:
Para dar formato de memoria de intercambio al archivo creado, se ejecuta el mandato mkswap, del siguiente modo:
Lo anterior puede devolver una salida similar a la siguiente:
Para activar la partición y que sea utilizada inmediatamente por el sistema operativo, se ejecuta el mandato swapon. En el siguiente ejemplo se activa como partición de memoria de intercambio a el archivo /swap:
Para corroborar que nuevo archivo de memoria de intercambio está siendo utilizada por el sistema operativo, se ejecuta el el mandato free, que puede devolver una salida similar a la siguiente:
Para que este archivo se utilice como memoria de intercambio automáticamente en el siguiente arranque del sistema, se edita el /etc/fstab: Y se agrega la línea correspondiente, del siguiente modo, donde en lugar de el dispositivo, se pone la ruta del archivo de memoria de intercambio creado:
Optimizando el sistema, cambiando el valor de /proc/sys/vm/swappinessEl núcleo de GNU/Linux permite cambiar con que frecuencia las aplicaciones y programas son movidas de la memoria física hacia la memoria de intercambio. El valor predeterminado es 60, como puede observarse al mirar el contenido de /proc/sys/vm/swappiness de la siguiente forma:
Pueden establecerse valores entre 0 y 100, donde el valor más bajo establece que se utilice menos la memoria de intercambio, lo cual significa que se reclamará en su lugar el caché de la memoria. El valor predeterminado de 60, fue establecido teniendo en mente a quienes desarrollan el núcleo de Linux, con la finalidad de permitir realizar pruebas y diagnósticos. Para la mayoría de los casos, conviene cambiar este valor por uno más bajo a fin de que el sistema utilice menos la memoria de intercambio y utilice más la memoria cache. Ésta es una clase de memoria RAM estática de acceso aleatorio (SRAM o Static Random Access Memory). Se sitúa entre la Unidad Central de Procesamiento (CPU) y la memoria RAM y se presenta de forma temporal y automática para el usuario proporcionado acceso rápido a los datos de uso más frecuente. Un valor apropiado y que funcionará para la mayoría de los sistemas en producción es 10. En el siguiente ejemplo se aplica el valor 10 para el archivo /proc/sys/vm/swappiness.
Para lo anterior, también se puede ejecutar el mandato sysctl de la siguiente forma:
Lo anterior devuelve una salida similar a la siguiente, confirmando que se ha aplicado el cambio:
Este cambio en las variables del sistema de forma aplica inmediata hasta el siguiente reinicio del sistema. Para hacer que el cambio sea permanente, se edita el archivo /etc/sysctl.conf.
Y se añade la siguiente línea:
|
Comentarios Recientes