La memoria virtual es una de esas cosas que sustentan los sistemas operativos modernos, pero por lo general, no piensas en ello a menos que tengas un problema. Las distribuciones de Linux le piden que configure su espacio de memoria virtual (intercambiar particiones) durante la instalación, pero la mayoría de los principiantes no saben lo útil que es.
Aquí encontrará todo lo que necesita saber sobre la memoria virtual en Linux.
¿Qué es la memoria virtual?
La memoria virtual es una forma de representar su memoria que se abstrae de la memoria física en su máquina. Hace uso tanto de su RAM como de su espacio de almacenamiento, ya sea en un disco duro tradicional o en un SSD.
En Linux, esto se hace a nivel de kernel y hardware. La CPU tiene una pieza de hardware llamada Unidad de administración de memoria (MMU) que traduce las direcciones de memoria física en direcciones virtuales. Estas direcciones son independientes de dónde residen físicamente en la máquina. Estos espacios de direcciones se conocen como "páginas" y pueden estar en la RAM o en su disco duro o SSD. El sistema operativo ve estas direcciones como un gran grupo de memoria, conocido como "espacio de direcciones".
La memoria virtual aprovecha el hecho de que no toda la memoria que se usa en teoría se usa todo el tiempo. Los programas en la memoria se dividen en páginas y las partes que el kernel considera innecesarias se "intercambian" o se mueven al disco duro. Cuando se necesitan, se pueden "intercambiar" o devolver a la RAM.
El espacio utilizado para la memoria virtual en una unidad se conoce como "almacén de respaldo" o "espacio de intercambio". En el mundo de Windows, es generalmente implementado como un archivo, conocido como "archivo de intercambio". También es posible hacer esto en Linux, pero es mucho más común a usar una partición de disco dedicada.
Los archivos de intercambio en Linux generalmente se reservan para sistemas mínimos o integrados, y es común que estos últimos se ejecuten completamente sin memoria virtual porque los sistemas operativos integrados tienen que ser pequeños.
El resultado de la memoria virtual es que es posible ejecutar programas grandes usando más memoria que la RAM física en su máquina, similar a cómo una tarjeta de crédito le permite hacer grandes compras por más dinero del que tiene en su banco cuenta. Al igual que una tarjeta de crédito, la memoria virtual es útil cuando la necesita, pero no quiere extender demasiado su uso.
La memoria virtual también permite a los desarrolladores crear aplicaciones sin tener que saber cómo está organizada la memoria de una computadora.
Históricamente, el principal inconveniente de la memoria virtual ha sido que los discos duros han sido más lentos que la RAM. Si una máquina no tiene suficiente RAM, el sistema puede seguir intercambiando páginas sin parar, un proceso conocido como "thrashing". Esto es un problema menor en las PC modernas con más RAM y SSD más rápidos que desplazan a los discos duros mecánicos, pero aún así es algo a tener en cuenta de.
Particiones de intercambio de Linux
Como se mencionó anteriormente, el método habitual para configurar la memoria virtual en Linux es usar una partición de disco dedicada. La utilidad de instalación examinará su hardware y propondrá un esquema de partición que incluye una partición de intercambio.
También puede agregar particiones de intercambio después de la instalación. Si desea agregar una nueva partición a una unidad existente, tendrá que utilizar una herramienta de partición no destructiva como GParted. Asegúrese de haber seleccionado "Linux swap" como sistema de archivos para su partición.
Realice una copia de seguridad de los datos importantes antes de volver a particionar su unidad.
Después de haber creado su partición, use el comando mkswap para formatear su partición.
sudo mkswap /dev/sdX
Ahora tendrás que editar tu /etc/fstab como root para agregar su partición de intercambio. Esta línea, añadida al archivo, configurará una partición de intercambio que se montará en el momento del arranque:
/dev/sdX ninguno intercambiar valores predeterminados 0 0
Ahora usa el intercambiar comando para activar su nuevo espacio de intercambio, donde sdX es el nombre de su partición de intercambio:
sudo swapon /dev/sdX
Uso de archivos de intercambio en Linux
Es fácil de configurar un archivo de intercambio en Linux usando la línea de comando. Es posible que desee hacer esto si no quiere molestarse en volver a particionar su disco o editar /etc/fstab. Un método es usar fallar:
Por ejemplo, para crear un archivo de intercambio de 2 GB:
sudo fallocate -l 2G /ruta/al/archivo de intercambio
Como alternativa, puede usar el comando dd para crear el archivo de intercambio.
sudo si=/dev/cero de=/path/a/archivo de intercambio bs=1024 contar =2048
Asegúrese de estar usando el comando dd correctamente, ya que obtener el archivo de entrada y el archivo de salida incorrecto puede causar la pérdida de datos. fallocate es el método preferido por esta razón.
los /dev/zero El dispositivo es un dispositivo especial que genera "0". Lo que hace este comando dd es crear un archivo de bloque en blanco de dos gigabytes utilizando bloques de 1024 kilobytes adecuados para usar como espacio de intercambio.
A continuación, puede utilizar el mkswap y intercambiar comandos con un archivo de intercambio como lo haría con una partición de intercambio:
sudo mkswap /ruta/al/archivo de intercambio
sudo swapon /ruta/al/archivo de intercambio
Quizás se pregunte cuándo debe usar un archivo de intercambio o una partición dedicada para su espacio de intercambio. La elección es fácil: en la mayoría de las circunstancias, debe usar una partición. Esta es la mejor opción para un escritorio Linux o un servidor. El esquema de partición sugerido por el instalador suele ser adecuado en un escritorio Linux de un solo usuario.
Es posible que desee utilizar un archivo de intercambio si está ejecutando Linux en una máquina virtual, en un sistema integrado pequeño o simplemente no desea volver a particionar su sistema Linux existente.
¿Cuánto espacio de intercambio?
Durante muchos años, el consejo estándar sobre cuánto espacio de intercambio se necesita es el doble de RAM física. Con las unidades grandes y las cantidades de memoria que vienen con las PC más baratas, esta regla puede ser cuestionada.
En muchos sistemas, si marca top o htop, incluso podría notar que su espacio de intercambio ni siquiera se está utilizando si configura su sistema de esta manera.
Aún así, el doble de la memoria física es un buen punto de partida y una póliza de seguro si exige más de la memoria. Puede realizar cambios en su sistema según sea necesario. Si su sistema está usando toda su memoria RAM, la computadora puede experimentar problemas de rendimiento al usar la memoria virtual.
La computadora puede seguir cambiando de entrada y salida, un proceso conocido como paliza, lo que hace que parezca que no responde. Si todavía tiene un disco duro mecánico, a menudo puede escucharlo accediendo constantemente.
Esto es un problema mucho menor en estos días ya que la cantidad de RAM incluso en las PC más baratas es más que adecuada, además la velocidad de los SSD es mucho más rápida que los discos duros antiguos. Todavía es algo que debes tener en cuenta.
La forma más fácil de solucionar esto es simplemente agregar más RAM a su máquina. Si eso no es posible, puede intentar ajustar el "intercambio" del kernel de Linux.
El número de swappiness determina cuánto se sumerge el núcleo en la memoria virtual. Va de 0 a 100. Establecerlo en 0 significa que Linux no se intercambiará en absoluto, mientras que en 100, se intercambiará en cada oportunidad. El valor predeterminado en la mayoría de los sistemas es 60.
Para cambiar el swappiness temporalmente, use el comando sysctl:
sudo sysctl vm.swappiness=20
El "20" en ese comando será el número de swappiness hasta que reinicies. Para cambiarlo permanentemente, edite el /etc/sysctl.conf archivo como raíz y coloque la línea, "vm.swappiness=[número de intercambio]", donde "[número de intercambio]" es el número de intercambio que desea. Esto será un recurso provisional hasta que pueda instalar más RAM.
La memoria virtual mantiene su sistema Linux funcionando sin problemas
La memoria virtual es un componente de los sistemas operativos modernos, incluido Linux, que mantiene su computadora funcionando sin problemas. Puede usar un archivo de intercambio, pero el método habitual es una partición dedicada. No tiene que pensar tanto en ello, pero las particiones de intercambio de Linux y los archivos de intercambio son fáciles de configurar y solucionar problemas.
Muchos de estos consejos también son aplicables a otros sistemas, incluido Windows, incluso si los métodos para configurar la memoria virtual son diferentes.