GNU/Linux >> Tutoriales Linux >  >> Linux

Una introducción al espacio de intercambio en sistemas Linux

Hay dos tipos básicos de memoria en una computadora típica. El primer tipo, la memoria de acceso aleatorio (RAM), se usa para almacenar datos y programas mientras la computadora los usa activamente. La computadora no puede usar los programas y los datos a menos que estén almacenados en la memoria RAM. RAM es memoria volátil; es decir, los datos almacenados en la memoria RAM se pierden si se apaga la computadora.

Los discos duros son medios magnéticos que se utilizan para el almacenamiento a largo plazo de datos y programas. Los medios magnéticos no son volátiles; los datos almacenados en un disco permanecen incluso cuando se desconecta la alimentación de la computadora. La CPU (unidad central de procesamiento) no puede acceder directamente a los programas y datos del disco duro; primero debe copiarse en la RAM, y ahí es donde la CPU puede acceder a sus instrucciones de programación y a los datos con los que operarán esas instrucciones. Durante el proceso de arranque, una computadora copia programas específicos del sistema operativo, como kernel e init o systemd, y datos del disco duro a la RAM, donde el procesador de la computadora, la CPU, accede directamente a ellos.

El segundo tipo de memoria en los sistemas Linux modernos es el espacio de intercambio.

Intercambiar espacio

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

La función principal del espacio de intercambio es sustituir el espacio en disco por la memoria RAM cuando la RAM real se llena y se necesita más espacio.

Por ejemplo, suponga que tiene un sistema informático con 8 GB de RAM. Si inicia programas que no llenan esa RAM, todo está bien y no se requiere intercambio. Pero suponga que la hoja de cálculo en la que está trabajando crece cuando agrega más filas, y eso, además de todo lo demás que se está ejecutando, ahora llena toda la RAM. Sin espacio de intercambio disponible, tendría que dejar de trabajar en la hoja de cálculo hasta que pudiera liberar parte de su RAM limitada cerrando algunos otros programas.

El núcleo utiliza un programa de gestión de memoria que detecta bloques, también conocidos como páginas, de memoria en los que el contenido no se ha utilizado recientemente. El programa de administración de memoria intercambia suficientes de estas páginas de memoria que se usan con relativa poca frecuencia en una partición especial en el disco duro específicamente designada para "paginación" o intercambio. Esto libera RAM y deja espacio para que se ingresen más datos en su hoja de cálculo. El código de administración de memoria del kernel rastrea esas páginas de memoria intercambiadas al disco duro y se pueden volver a paginar en la RAM si es necesario.

La cantidad total de memoria en una computadora con Linux es la RAM más el espacio de intercambio y se denomina memoria virtual .

Tipos de intercambio de Linux

Linux proporciona dos tipos de espacio de intercambio. De forma predeterminada, la mayoría de las instalaciones de Linux crean una partición de intercambio, pero también es posible utilizar un archivo especialmente configurado como archivo de intercambio. Una partición de intercambio es justo lo que su nombre implica:una partición de disco estándar designada como espacio de intercambio por mkswap comando.

Se puede usar un archivo de intercambio si no hay espacio libre en el disco para crear una nueva partición o espacio de intercambio en un grupo de volúmenes donde se puede crear un volumen lógico para el espacio de intercambio. Este es solo un archivo normal que se crea y se asigna previamente a un tamaño específico. Entonces el mkswap se ejecuta el comando para configurarlo como espacio de intercambio. No recomiendo usar un archivo para el espacio de intercambio a menos que sea absolutamente necesario.

Golpeando

La hiperpaginación puede ocurrir cuando la memoria virtual total, tanto la RAM como el espacio de intercambio, están casi llenos. El sistema dedica tanto tiempo a la paginación de bloques de memoria entre el espacio de intercambio y la RAM y viceversa que queda poco tiempo para el trabajo real. Los síntomas típicos de esto son obvios:el sistema se vuelve lento o deja de responder por completo, y la luz de actividad del disco duro está encendida casi constantemente.

Si logras emitir un comando como free que muestra la carga de la CPU y el uso de la memoria, verá que la carga de la CPU es muy alta, tal vez entre 30 y 40 veces la cantidad de núcleos de CPU en el sistema. Otro síntoma es que tanto la RAM como el espacio de intercambio están asignados casi por completo.

Después del hecho, mirar los datos SAR (informe de actividad del sistema) también puede mostrar estos síntomas. Instalo SAR en todos los sistemas en los que trabajo y lo uso para el análisis forense posterior a la reparación.

¿Cuál es la cantidad correcta de espacio de intercambio?

Hace muchos años, la regla general para la cantidad de espacio de intercambio que se debe asignar en el disco duro era el doble de la cantidad de RAM instalada en la computadora (por supuesto, eso era cuando la RAM de la mayoría de las computadoras se medía en KB o MB) . Entonces, si una computadora tuviera 64 KB de RAM, una partición de intercambio de 128 KB sería un tamaño óptimo. Esta regla tuvo en cuenta el hecho de que los tamaños de RAM eran bastante pequeños en ese momento y que asignar más de 2X RAM para espacio de intercambio no mejoraba el rendimiento. Con más del doble de RAM para el intercambio, la mayoría de los sistemas dedicaron más tiempo a la paliza que a realizar un trabajo útil.

La RAM se ha convertido en un producto económico y la mayoría de las computadoras en estos días tienen cantidades de RAM que se extienden a decenas de gigabytes. La mayoría de mis computadoras más nuevas tienen al menos 8 GB de RAM, una tiene 32 GB y mi estación de trabajo principal tiene 64 GB. Mis computadoras más antiguas tienen de 4 a 8 GB de RAM.

Cuando se trata de computadoras que tienen grandes cantidades de RAM, el factor de rendimiento limitante para el espacio de intercambio es mucho más bajo que el multiplicador 2X. La Guía de instalación en línea de Fedora 28, que se puede encontrar en línea en la Guía de instalación de Fedora, define el pensamiento actual sobre la asignación de espacio de intercambio. He incluido a continuación algunas discusiones y la tabla de recomendaciones de ese documento.

La siguiente tabla proporciona el tamaño recomendado de una partición de intercambio según la cantidad de RAM en su sistema y si desea suficiente memoria para que su sistema hiberne. El tamaño de partición de intercambio recomendado se establece automáticamente durante la instalación. Sin embargo, para permitir la hibernación, deberá editar el espacio de intercambio en la etapa de partición personalizada.

Tabla 1:Espacio de intercambio del sistema recomendado en la documentación de Fedora

En el límite entre cada rango enumerado anteriormente (por ejemplo, un sistema con 2 GB, 8 GB o 64 GB de RAM del sistema), tenga discreción con respecto al espacio de intercambio elegido y la compatibilidad con la hibernación. Si los recursos de su sistema lo permiten, aumentar el espacio de intercambio puede conducir a un mejor rendimiento.

Por supuesto, la mayoría de los administradores de Linux tienen sus propias ideas sobre la cantidad adecuada de espacio de intercambio, así como sobre casi todo lo demás. La Tabla 2, a continuación, contiene mis recomendaciones basadas en mis experiencias personales en múltiples entornos. Es posible que no funcionen para usted, pero al igual que con la Tabla 1, pueden ayudarlo a comenzar.

Tabla 2:Espacio de intercambio del sistema recomendado por el autor

Cantidad de RAM del sistema

Espacio de intercambio recomendado

Cambio recomendado con hibernación

menos de 2 GB

2 veces la cantidad de RAM

3 veces la cantidad de RAM

2 GB - 8 GB

Igual a la cantidad de RAM

2 veces la cantidad de RAM

8 GB - 64 GB

0,5 veces la cantidad de RAM

1,5 veces la cantidad de RAM

más de 64 GB

depende de la carga de trabajo

no se recomienda la hibernación

Una consideración en ambas tablas es que a medida que aumenta la cantidad de RAM, más allá de cierto punto, agregar más espacio de intercambio simplemente conduce a una paliza mucho antes de que el espacio de intercambio esté cerca de llenarse. Si tiene muy poca memoria virtual mientras sigue estas recomendaciones, debe agregar más RAM, si es posible, en lugar de más espacio de intercambio. Al igual que con todas las recomendaciones que afectan el rendimiento del sistema, use lo que funcione mejor para su entorno específico. Experimentar y realizar cambios en función de las condiciones de su entorno Linux requerirá tiempo y esfuerzo.

Agregar más espacio de intercambio a un entorno de disco que no sea LVM

Debido a los cambios en los requisitos de espacio de intercambio en hosts con Linux ya instalado, puede que sea necesario modificar la cantidad de espacio de intercambio definida para el sistema. Este procedimiento se puede utilizar para cualquier caso general en el que sea necesario aumentar la cantidad de espacio de intercambio. Supone que hay suficiente espacio en disco disponible. Este procedimiento también asume que los discos están particionados en EXT4 "sin procesar" y particiones de intercambio y no utilizan administración de volumen lógico (LVM).

Los pasos básicos a seguir son simples:

  1. Desactive el espacio de intercambio existente.

  2. Cree una nueva partición de intercambio del tamaño deseado.

  3. Vuelva a leer la tabla de particiones.

  4. Configure la partición como espacio de intercambio.

  5. Agregue la nueva partición/etc/fstab.

  6. Activa el intercambio.

No debería ser necesario reiniciar.

Por motivos de seguridad, antes de desactivar el intercambio, al menos debe asegurarse de que no se esté ejecutando ninguna aplicación y que no se esté utilizando espacio de intercambio. El free o top Los comandos pueden decirle si el espacio de intercambio está en uso. Para estar aún más seguro, puede volver al nivel de ejecución 1 o al modo de usuario único.

Desactive la partición de intercambio con el comando que desactiva todo el espacio de intercambio:

$ swapoff -a 

Ahora muestra las particiones existentes en el disco duro.

$ fdisk -l 

Esto muestra las tablas de partición actuales en cada unidad. Identifique la partición de intercambio actual por número.

Iniciar fdisk en modo interactivo con el comando:

$ fdisk /dev/<device name> 

Por ejemplo:

$ fdisk /dev/sda 

En este punto, fdisk es interactivo y funciona solo en la unidad de disco especificada.

Usa el fdisk p subcomando para verificar que hay suficiente espacio libre en el disco para crear la nueva partición de intercambio. El espacio en el disco duro se muestra en términos de bloques de 512 bytes y números de cilindros iniciales y finales, por lo que es posible que deba hacer algunos cálculos para determinar el espacio disponible entre y al final de las particiones asignadas.

Utilice el n subcomando para crear una nueva partición de intercambio. fdisk te preguntará el cilindro de arranque. Por defecto, elige el cilindro disponible con el número más bajo. Si desea cambiar eso, ingrese el número del cilindro de arranque.

El fdisk El comando ahora le permite ingresar el tamaño de las particiones en varios formatos, incluido el último número de cilindro o el tamaño en bytes, KB o MB. Escriba 4000M, lo que dará aproximadamente 4 GB de espacio en la nueva partición (por ejemplo), y presione Entrar.

Utilice el p subcomando para verificar que la partición se creó como lo especificó. Tenga en cuenta que la partición probablemente no será exactamente lo que especificó a menos que haya utilizado el número de cilindro final. El fdisk El comando solo puede asignar espacio en disco en incrementos en cilindros completos, por lo que su partición puede ser un poco más pequeña o más grande de lo que especificó. Si la partición no es lo que desea, puede eliminarla y crearla nuevamente.

Ahora es necesario especificar que la nueva partición será una partición de intercambio. El subcomando t le permite especificar el tipo de partición. Así que ingresa t , especifique el número de partición y, cuando solicite el tipo de partición de código hexadecimal, escriba 82, que es el tipo de partición de intercambio de Linux, y presione Entrar.

Cuando esté satisfecho con la partición que ha creado, use el w subcomando para escribir la nueva tabla de particiones en el disco. El fdisk El programa se cerrará y lo regresará al símbolo del sistema después de que termine de escribir la tabla de particiones revisada. Probablemente recibirá el siguiente mensaje como fdisk completa la escritura de la nueva tabla de particiones:

¡La tabla de particiones ha sido alterada!
Llamando a ioctl() para volver a leer la tabla de particiones.
ADVERTENCIA:La relectura de la tabla de particiones falló con el error 16:Dispositivo o recurso ocupado.
El kernel todavía usa la tabla anterior.
La nueva tabla se usará en el próximo reinicio.
Sincronización de discos.

En este punto, utiliza el partprobe comando para obligar al kernel a volver a leer la tabla de particiones para que no sea necesario reiniciar.

$ partprobe 

Ahora usa el comando fdisk -l para enumerar las particiones y la nueva partición de intercambio debe estar entre las enumeradas. Asegúrese de que el nuevo tipo de partición sea "Linux swap".

Será necesario modificar el archivo /etc/fstab para que apunte a la nueva partición de intercambio. La línea existente puede verse así:

LABEL=SWAP-sdaX   swap        swap    defaults        0 0 

donde X es el número de partición. Agregue una nueva línea similar a esta, dependiendo de la ubicación de su nueva partición de intercambio:

/dev/sdaY         swap        swap    defaults        0 0 

Asegúrese de utilizar el número de partición correcto. Ahora puede realizar el paso final para crear la partición de intercambio. Usa el mkswap comando para definir la partición como una partición de intercambio.

$ mkswap /dev/sdaY 

El paso final es activar el intercambio usando el comando:

$ swapon -a 

Su nueva partición de intercambio ahora está en línea junto con la partición de intercambio existente anteriormente. Puedes usar el free o top comandos para verificar esto.

Agregar intercambio a un entorno de disco LVM

Si la configuración de su disco usa LVM, cambiar el espacio de intercambio será bastante fácil. De nuevo, esto supone que hay espacio disponible en el grupo de volúmenes en el que se encuentra el volumen de intercambio actual. De forma predeterminada, los procedimientos de instalación de Fedora Linux en un entorno LVM crean la partición de intercambio como un volumen lógico. Esto lo hace fácil porque simplemente puede aumentar el tamaño del volumen de intercambio.

Estos son los pasos necesarios para aumentar la cantidad de espacio de intercambio en un entorno LVM:

  1. Desactiva todos los intercambios.

  2. Aumente el tamaño del volumen lógico designado para el intercambio.

  3. Configure el volumen redimensionado como espacio de intercambio.

  4. Activa el intercambio.

Primero, verifique que existe el intercambio y es un volumen lógico usando el lvs comando (lista de volumen lógico).

 # lvs 
LV VG ATT LSIZE Pool Datos de origen% meta% Moja de registro CPY% sincronización de sincronización
Inicio Fedora_StudentVM1 -WI-AO ---- 2.00G
Pool00 Fedora_StudentVM1 Twi-Aotz - 2.00G 8.17 2.93
Root Fedora_StudentVM1 VWI-AOTZ--- 2.00G Pool00 8.17
Swap Fedora_StudentVM1 -WI-AO ---- 8.00G
TMP FEDORA_STUDENTVM1 -WI-AO --- - 5.00g
USR FEDORA_STUDENTVM1 -WI-AO ---- 15.00G
VAR FEDORA_STUDENTVM1 -WI-AO ---- 10.00G

Puede ver que el tamaño de intercambio actual es de 8 GB. En este caso, queremos agregar 2 GB a este volumen de intercambio. Primero, detenga el intercambio existente. Es posible que deba finalizar los programas en ejecución si el espacio de intercambio está en uso.

$ swapoff -a 

Ahora aumente el tamaño del volumen lógico.

# lvextend -L +2G /dev/mapper/fedora_studentvm1-swap
  El tamaño del volumen lógico fedora_studentvm1/swap cambió de 8,00 GiB (2048 extensiones) a 10,00 GiB (2560 extensiones).
  Volumen lógico fedora_studentvm1/swap redimensionado con éxito.

Ejecute mkswap Comando para convertir toda esta partición de 10 GB en espacio de intercambio.

# mkswap /dev/mapper/fedora_studentvm1-swap
mkswap:/dev/mapper/fedora_studentvm1-swap:advertencia:borrando la firma de intercambio antigua.
Configurando el espacio de intercambio versión 1, tamaño =10 GiB ( 10737414144 bytes)
sin etiqueta, UUID=3cc2bee0-e746-4b66-aa2d-1ea15ef1574a

Vuelva a activar el intercambio.

# swapon -a 

Ahora verifique que el nuevo espacio de intercambio esté presente con el comando list block devices. De nuevo, no es necesario reiniciar.

 # lsblk 
NOMBRE MAJ:MIN RM Tamaño tipo RO Mountpoint
SDA 8:0 0 60G 0 Disco
| -SDA1 8:1 0 1g 0 Parte / Boot
`-sda2                                 8:2    0   59G  0 parte
  |-fedora_studentvm1-pool00_tmeta   253:0    0    4M  0 lvm  
  | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
  | |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
  | `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm  
  |-fedora_studentvm1-pool00_tdata   253:1    0    2G  0 lvm  
  | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
  | |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
  | `-fedora_studentvm1-pool00 253:6 0 2g 0 lvm
| -fedora_studentvm1-swap 253:4 0 10g 0 lvm [swap]
| -fedora_studentvm1-usr 253:5 0 15g 0 lvm / usr
| -fedora_studentvm1-home 253:7 0 2g 0 lvm / home
| -fedora_studentvm1-var 253:8 0 10g 0 lvm / var
`-fedora_studentvm1-tmp 253:9 0 5g 0 lvm  /tmp
sr0

También puedes usar swapon -s comando, o top , free , o cualquiera de varios otros comandos para verificar esto.

 # gratis 
Total usado gratis Buff / caché compartido disponible
MEM:4038808 382404 2754072 4152 902332 3404184
Intercambio:10485756 0 10485756 0 10485756

Tenga en cuenta que los diferentes comandos muestran o requieren como entrada el archivo especial del dispositivo en diferentes formas. Hay varias formas de acceder a dispositivos específicos en el directorio /dev. Mi artículo, Administración de dispositivos en Linux, incluye más información sobre el directorio /dev y su contenido.


Este artículo se publicó originalmente en septiembre de 2018 y el editor lo actualizó con información adicional.


Linux
  1. ¿Cuál es la cantidad correcta de espacio de intercambio para un sistema Linux moderno?

  2. Cómo crear o aumentar el espacio de intercambio en Linux

  3. Linux:¿cómo usar el espacio de intercambio solo para emergencias?

  4. ¿Necesito espacio de intercambio si tengo una cantidad de RAM más que suficiente?

  5. Cómo agregar espacio de intercambio en Linux

Una introducción al navegador Vivaldi en Linux

¿Cuánto intercambio debería usar en Linux?

Cómo borrar la caché de RAM, el búfer y el espacio de intercambio en el sistema Linux

5 comandos para verificar el espacio de intercambio en Linux

Cómo borrar el caché de la memoria RAM, el búfer y el espacio de intercambio en Linux

Cómo verificar el espacio de intercambio en Linux

    Cantidad de RAM

    Espacio de intercambio recomendado

    ≤ 2GB

    RAM 2X

    2GB - 8GB

    =RAM

    >8GB

    8GB