GNU/Linux >> Tutoriales Linux >  >> Linux

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

Tengo una computadora portátil Debian (Buster) con 8 GB Intercambio de RAM y 16 GB. Estoy ejecutando una tarea de ejecución muy larga. Esto significa que mi computadora portátil se ha dejado encendida durante los últimos seis días mientras funciona.

Mientras hago esto, periódicamente necesito usar mi computadora portátil como una computadora portátil. Esto no debería ser un problema; la tarea de ejecución prolongada está limitada a E/S, trabaja con cosas en un disco duro USB y no requiere mucha RAM (<200 MB) o CPU (<4%).

El problema es cuando vuelvo a mi computadora portátil después de unas horas, será muy lenta y puede tardar 30 minutos en volver a la normalidad. Esto es tan malo que los monitores de fallas marcan sus respectivas aplicaciones como congeladas (especialmente las ventanas del navegador) y las cosas comienzan a fallar incorrectamente.

Si miramos el monitor del sistema, de los 2,5 GB utilizados, aproximadamente la mitad se transfiere al intercambio. He confirmado que este es el problema eliminando el espacio de intercambio (swapoff /dev/sda8 ). Si lo dejo sin espacio de intercambio, vuelve a la vida casi instantáneamente, incluso después de 24 horas. Con el intercambio, es prácticamente un ladrillo para los primeros cinco minutos que se han dejado solo para seis horas. He confirmado que el uso de la memoria nunca supera los 3 GB incluso mientras estoy fuera.

He intentado reducir el intercambio (ver también:Wikipedia) a valores de 10 y , Pero el problema persiste. Parece que después de un día de inactividad, el kernel cree que la GUI completa ya no es necesaria y la borra de la RAM (la cambia al disco). La tarea de larga duración es leer un vasto árbol de archivos y leer cada archivo. Entonces podría ser que el kernel esté confundido al pensar que el almacenamiento en caché ayudaría. Pero en un solo barrido de un USB HD de 2 TB con ~1000 millones de nombres de archivo, un GB de RAM adicional no ayudará mucho al rendimiento. Esta es una computadora portátil barata con un disco duro lento. Simplemente no puede volver a cargar datos en la RAM lo suficientemente rápido.

¿Cómo puedo decirle a Linux que solo use el espacio de intercambio en una emergencia? No quiero correr sin intercambio. Si sucede algo inesperado, y el sistema operativo de repente necesita unos pocos GB adicionales, entonces no quiero que se eliminen las tareas y preferiría comenzar a usar el intercambio. Pero por el momento, si dejo habilitado el intercambio, mi computadora portátil simplemente no se puede usar cuando la necesito.

La definición precisa de una “emergencia” podría ser un tema de debate. Pero para aclarar lo que quiero decir:una emergencia sería cuando el sistema se queda sin otra opción que intercambiar o eliminar procesos.

¿Qué es una emergencia?¿Realmente tienes que preguntar?… ¡Espero que nunca te encuentres en un edificio en llamas!

No me es posible definir todo lo que podría constituir una emergencia en esta pregunta. Pero, por ejemplo, una emergencia podría ser cuando el kernel está tan presionado por la memoria que comienza a eliminar procesos con OOM Killer. Una emergencia NO es cuando el núcleo cree que puede mejorar el rendimiento mediante el intercambio.

Relacionado:Ubuntu:¿cómo verificar las conexiones SMB y el dialecto que se usa en Linux?

Edición final: Acepté una respuesta que hace exactamente lo que pedí en el nivel del sistema operativo. Los futuros lectores también deben tomar nota de las respuestas que ofrecen soluciones a nivel de aplicación.

Respuesta aceptada:

Tener un intercambio tan grande hoy en día es a menudo una mala idea. En el momento en que el sistema operativo intercambió solo unos pocos GB de memoria para intercambiar, su sistema ya se había arrastrado hasta la muerte (como lo que vio)

Es mejor usar zram con una pequeña partición de intercambio de respaldo . Muchos sistemas operativos como ChromeOS, Android y varias distribuciones de Linux (Lubuntu, Fedora) han habilitado zram de forma predeterminada durante años, especialmente para sistemas con menos RAM. Es mucho más rápido que intercambiar en HDD y puede sentir claramente la capacidad de respuesta del sistema en este caso. Menos en un SSD, pero según los resultados de referencia aquí, todavía parece más rápido incluso con el algoritmo lzo predeterminado. Puede cambiar a lz4 para obtener un rendimiento aún mejor con una relación de compresión un poco menor. Su velocidad de decodificación es casi 5 veces más rápida que lzo según el punto de referencia oficial

De hecho, Windows 10 y macOS también utilizan técnicas de compresión de archivos de paginación similares de forma predeterminada

También hay zswap aunque nunca lo he usado. Probablemente valga la pena intentarlo y comparar cuál es mejor para sus casos de uso

Después de eso, otra sugerencia es reducir la prioridad de esos procesos vinculados a IO y posiblemente deje una terminal ejecutándose con mayor prioridad para que pueda ejecutar comandos en ella de inmediato, incluso cuando el sistema tiene una carga alta

Lecturas adicionales

  • Arch Linux:mejora del rendimiento:Zram o zswap
  • Habilite ZSwap para aumentar el rendimiento
  • Habilite zRAM para mejorar el manejo de la memoria y menos intercambio
  • ¿Te estás quedando sin RAM en Ubuntu? Habilitar ZRAM
  • Diferencia entre ZRAM y ZSWAP
  • Guía definitiva de zram vs zswap vs zcache:cuándo usar cuál
  • Linux, SSD e intercambio
  • https://wiki.debian.org/ZRam
  • https://www.kernel.org/doc/Documentation/blockdev/zram.txt
  • https://wiki.gentoo.org/wiki/Zram

Linux
  1. Cómo elegir una computadora portátil Linux asequible para videoconferencias

  2. Cómo usar rsync avanzado para grandes copias de seguridad de Linux

  3. Cómo usar systemd-nspawn para la recuperación del sistema Linux

  4. Linux:¿cómo usar tres monitores en una computadora portátil?

  5. Cuánto espacio de intercambio agregar para Oracle Database en Linux

Cómo uso Cockpit para la administración del servidor Linux de mi hogar

Cómo extender el espacio de intercambio usando el archivo de intercambio en Linux

Cómo comprobar los puertos de escucha en Linux (Puertos en uso)

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

Cómo crear y usar un archivo de intercambio en Linux

Cómo verificar el espacio de intercambio en Linux