GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué puede hacer específicamente el intercambio que la RAM no puede?

Hibernación (o suspensión en disco). La hibernación real apaga el sistema por completo, por lo que el contenido de la RAM se pierde y debe guardar el estado en algún almacenamiento persistente. También conocido como intercambio. A diferencia de Windows con hiberfil.sys y pagefile.sys , Linux usa el espacio de intercambio tanto para la memoria comprometida como para la hibernación.

Por otro lado, la hibernación parece un poco complicada para que funcione bien en Linux. Si realmente "puedes" hibernar es una cosa diferente. ¯\_(ツ)_/¯


¿Qué se puede hacer con el intercambio que no se haría agregando RAM?

Esta pregunta en realidad podría reformularse en ¿Qué se puede hacer con la RAM no volátil que no se haría agregando más RAM volátil? . El hecho de que dedique una partición para la paginación (una forma dedicada de interactuar con la RAM volátil), no cambia el hecho de que sigue siendo parte de un medio de almacenamiento secundario persistente. La partición de intercambio tampoco es obligatoria para poner un sistema en hibernación, también se puede usar un "archivo de intercambio" creado en una partición preexistente.

Al final, ya sea que esté utilizando una partición de intercambio o un archivo de intercambio, lo que almacenará son cosas para escribir en o desde la RAM. Si tuviera que desconectar el cable de alimentación de un sistema con una partición de intercambio habilitada, esa partición de intercambio no se borraría mágicamente.

Si bien estos datos de intercambio no se leerán en su próximo arranque (porque el archivo de paginación tendría entradas correspondientes a procesos que ya no se están ejecutando), y algunas distribuciones podrían tomar medidas deliberadas para destruirlo durante un apagado adecuado o un reinicio adecuado , si alguien sacara un cable de un sistema, podría examinar esa partición de intercambio de forma forense.

En cuanto al caso de los dispositivos integrados que mencionó, Flash, al ser un tipo de almacenamiento de RAM no volátil (NVRAM o EEPROM), se desgasta debido a su capacidad para recibir golpes de E/S (Flash Cell Endurance representado en términos de número de programas). /ciclos de borrado) palidece en comparación con el de la memoria RAM volátil. Literalmente, elimina una capa de óxido cada vez que realiza una escritura en esa ubicación y, finalmente, simplemente no queda óxido para permitir el almacenamiento persistente de la carga y, literalmente, se filtra antes de su lectura posterior.

Por otro lado, la capacidad de supervivencia de la memoria RAM volátil es prácticamente inexistente (del orden de minutos en condiciones experimentales ideales) en comparación con la memoria flash, si o cuando corta su fuente de alimentación. En el caso de la RAM volátil, no hay nada que detenga la fuga de la carga y el estado correspondiente del flip-flop (entradas, determinando las salidas, que luego redeterminan las entradas), también conocidos como latches controlados por retroalimentación.


32 GB de RAM y sin intercambio frente a 16 GB de RAM con 16 GB de intercambio.

Preguntado así, el intercambio en su mayoría ahorra dinero, aumentando el rendimiento por dólar, tal vez también por vatio.

Pero el intercambio aún es más que "memoria tan lenta como un disco". Es un almacenamiento temporal para páginas de memoria, que se pueden cargar directamente (sucias como están, sin sobrecarga del sistema de archivos) en la RAM cuando sea necesario.

Por supuesto, mucho depende de la carga (del tipo de la carga), y la idea de intercambiar puede incluso resultar contraproducente. Es por eso que hay un parámetro de "intercambio", además de swapon / swapoff en sí mismo, y la discusión sobre el tamaño correcto.

De wikipedia obtuve esta declaración sobre "intercambio" en Linux (en el artículo "paginación")

El kernel de Linux admite una cantidad prácticamente ilimitada de backends de intercambio (dispositivos o archivos...

Si se asigna la misma prioridad a varios backends de intercambio, se utilizan de forma rotativa (que es algo similar a los diseños de almacenamiento RAID 0),...

Esto demuestra que puede convertir el intercambio en algo que tenga más sentido a nivel de hardware:una "unidad de memoria virtual" dedicada le daría a estas páginas intercambiadas un mejor hogar. Idealmente, un disco duro debería ser (muy) pequeño pero rápido y robusto.

Según la "nueva" regla de tamaño (raíz cuadrada de Giga), su ejemplo debe comparar:

16 GB RAM + 0 GB Swap+1000 GB Disk

16 GB RAM + 4 GB Swap+ 996 GB Disk

Porque lo que realmente no tiene sentido es:

16 GB RAM+0 GB Swap + 1000 GB Disk

12 GB RAM+4 GB Swap + 1000 GB Disk

Eso sería una partición de intercambio en un tmpfs ("ramdisk"), tal vez ni siquiera demasiado dañino, pero no veo ningún beneficio aquí. Ni siquiera puedes hibernar.

(Mira a continuación para zram y zswap, sin embargo, cuando agregas compresión a eso)

Para comprender el intercambio, debe considerar todo el sistema y la carga promedio. Y debido a que vm/mm (administración de memoria virtual) es un sistema complejo, es realmente difícil nombrar una ventaja clara. Me gusta la idea de una transición "suave" a un sistema sobrecargado.

Tengo 8 GB de RAM y no swap. Pero aun así defiendo el concepto, AFA lo puedo entender :-)

Encontré esta cita de redhat en uno de los enlaces OP. El escenario es una demanda de memoria cada vez mayor, en 2 GB de RAM + 2 GB de intercambio, si mal no recuerdo:

... En nuestro caso [recién ilustrado], hay bastante intercambio disponible, por lo que el tiempo de bajo rendimiento es largo.

Pero la alternativa es OOM ¡incluso antes!

El "tiempo de bajo rendimiento" es largo, sí, pero el rendimiento solo se degrada proporcionalmente a la carga. No conozco el contexto, tal vez solo quieren advertir sobre un demasiado grande partición de intercambio. suena anti-swap, pero a segunda vista no lo es.

Por otra parte, por la misma razón, no tengo intercambio. Quiero saber cuándo mis aplicaciones y yo tocamos el techo, y luego decidiré si tengo que disminuir la carga, comprar más RAM o activar una partición para intercambio (tengo una o dos particiones pequeñas listas para eso).

Busqué este zram y luego zswap cosa:muy interesante...:

En comparación, zswap actúa como un caché basado en RAM para dispositivos de intercambio. Esto proporciona a zswap un mecanismo de desalojo para las páginas intercambiadas menos utilizadas, del que carece zram.

Por otro lado, zram funciona sin ningún dispositivo de intercambio. Hace posible que lo que dije no tenga sentido, pero no tomé en cuenta la compresión.

Mi punto es este desalojo mecanismo inherente al "swap". Este puede ser muy útil bajo una carga alta, ya sea que cambie por intercambio o comprimiendo.


Linux
  1. Una introducción al espacio de intercambio en sistemas Linux

  2. Lo que un archivo de puntos de shell puede hacer por usted

  3. ¿Cómo puedo saber qué proceso está usando swap?

  4. ¿Puedo probar mi propia red?

  5. ¿Cómo puedo saber qué está acelerando mi disco?

¿Qué hacer cuando Ctrl + C no puede matar un proceso?

E/S de disco OOM de Linux. También:swap, ¿para qué sirve?

¿Qué comando se puede usar para forzar la liberación de todo en la partición de intercambio a la memoria?

¿Puede un proceso tener un propietario? ¿Qué significa?

El 30% de la RAM son búferes. ¿Qué es?

¿Qué puede hacer que Linux no responda durante minutos al navegar por ciertos sitios web?