¿Cómo puedo desactivar el intercambio de forma permanente?

65

El intercambio hace que mi sistema se vuelva lento y apagarlo hace que todo sea más fluido. Tengo 3.5 GB de RAM.

Sé cómo desactivar el intercambio ingresando sudo swapoff -aen la terminal, pero eso es solo para la sesión actual, porque después de un reinicio, el intercambio se vuelve a encender. ¿Hay alguna forma de desactivar el intercambio de forma permanente?

Alex Li
fuente
2
AFAIK el intercambio se utiliza para hibernación. Solo
digo
1
Sí lo es, pero aún se puede usar. Tengo un pequeño script que monta la partición de intercambio cuando el sistema entra en hibernación y la desmonta cuando vuelve. El archivo de intercambio no necesita estar activo mientras tanto.
animaletdesequia
Simplemente coloque swapoff -a en /etc/rc.local y olvídese de eso ...;)
user264467
1
@ user264467: es bastante contradictorio dejar el intercambio habilitado solo para deshabilitarlo en cada reinicio, es mucho más limpio deshabilitarlo permanentemente.
karatedog

Respuestas:

119

¿Puedo sugerir un enfoque más seguro? Nunca se sabe cuándo el intercambio puede evitar que se estrelle. Si bien el intercambio realmente ralentiza su computadora, si usa un programa que consume toda su RAM, tener la capacidad de intercambiar puede salvarlo de un reinicio completo. Cuando la computadora comience a intercambiar, notará y podrá eliminar la aplicación infractora.

Entonces, en lugar de deshabilitar el intercambio por completo, solo asegúrese de que su sistema operativo cambie muy raramente. Esto se controla mediante la vm.swappinessconfiguración en /etc/sysctl.conf. La configuración predeterminada de Ubuntu es 60si recuerdo correctamente, lo cual es demasiado para la mayoría de las situaciones y hará que comience a intercambiar incluso cuando la RAM todavía está disponible. Si reduce este valor, podrá mantener la línea de intercambio segura mientras la usa solo para emergencias. Entonces, abra el archivo:

sudo nano /etc/sysctl.conf

Y agregue esta línea:

vm.swappiness=10

Si todavía es demasiado, cambie el 10 a 1. Ahora, después de reiniciar, solo cambiará cuando sea absolutamente necesario y simplemente puede olvidarse de ello.

terdon
fuente
Me encanta cambiar swappines, y no lo he hecho en años. Gracias por el recordatorio. sudo upvote turdon!
Darth Egregious
16
Solo para agregar al argumento de 'enfoque más seguro': cuando no hay intercambio y el sistema se queda sin memoria, se invoca el asesino OOM (sin memoria) de Linux. Esto selecciona un proceso basado en una puntuación de 'maldad' y luego ... lo mata (finaliza, cierra) sin posibilidad de que la aplicación guarde sus cambios, limpie, etc. Por lo tanto, si desactiva el intercambio y se queda sin memoria, corre muy bien el riesgo de perder el trabajo si los procesos importantes tienen una puntuación baja en los ojos del asesino de OOM. Por lo tanto, solo debe desactivar el intercambio si está seguro de que nunca se quedará sin memoria.
Reid
55
@Reid vale la pena señalar que, obviamente, sucederá exactamente lo mismo si también te quedas sin espacio de intercambio.
o0 '.
11
Esto en realidad no responde la pregunta. Desactivar el intercambio por completo puede tener mucho sentido en un sistema con 16 GB o 32 GB de RAM. Unos pocos GB adicionales de intercambio no servirán de nada en el caso de las aplicaciones que consumen memoria, mientras que una gran cantidad de intercambio (por ejemplo, 20 GB) ocuparía mucho espacio en el disco duro / SSD. Además, hibernar con 32 GB de RAM no es divertido .
jmiserez
77
Para algunas configuraciones, tan pronto como se quede sin RAM física y comience a intercambiarse, el sistema comenzará a "succionar lodo" y quedará inutilizable. Sí, en teoría, puede ingresar y matar al delincuente, pero cuando lleva más de 20 minutos cambiar el enfoque en la interfaz de usuario e incluso más tiempo para obtener una solicitud de contraseña a través de SSH, el OOM termina siendo la mejor opción (seguido de un duro reiniciar, seguido de entrar y solucionar el problema).
BCS
47

Busque la línea en / etc / fstab que se refiere al intercambio y coméntela. El mío es así:

UUID=6880a28d-a9dc-4bfb-ba47-0876b50e96b3 /               ext4    errors=remount-ro 0       1
UUID=7350e6f2-e3a7-4d80-9a95-8741c7db118f /home           ext4    defaults        0       2
UUID=E2E26AD1E26AAA0D /media/windows  ntfs    defaults,umask=007,gid=46 0       0

# Swap a usb extern (3.7 GB):
#/dev/sdb1 none swap sw 0 0

Puede editar este archivo con gedit. Haga una copia de seguridad primero, por si acaso:

sudo cp /etc/fstab /etc/fstab_backup
gksu gedit /etc/fstab

Simplemente agregue # al comienzo de la línea donde está el intercambio y reinicie la computadora.

O

Pruebe la forma de la línea de comandos de comentar la entrada de intercambio en el /etc/fstabarchivo,

sudo sed -i.bak '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
animaletdesequia
fuente
Me sale esto cuando escribogksu gedit /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /host/ubuntu/disks/root.disk / ext4 loop,errors=remount-ro 0 1 /host/ubuntu/disks/swap.disk none swap loop,sw 0 0
Alex Li
1
Entonces, haz lo que él dice. Comente la primera línea que se refiere a "intercambio". : P
cHao
14

Simplemente elimine la entrada (o coméntela usando # delante de la línea) de fstab y reinicie. Busque la línea con la palabra "intercambio".

sudo nano /etc/fstab
mdalacu
fuente
10
Este también funcionaría, pero creo que es mejor comentar la línea en lugar de eliminarla por completo, en caso de que desee revertir los cambios.
animaletdesequia
1
He editado mi publicación.
mdalacu
11

Incorrecto ... si systemd encuentra una partición SWAP en cualquier unidad, la montará automáticamente. Es extraño que nadie mencione systemd. La solución es bastante simple de todos modos; para desactivar permanentemente el intercambio debe:

  1. intercambio -a
  2. edite / etc / fstab y comente cualquier entrada de intercambio si está presente.
  3. ejecute: sudo systemctl mask dev-sdXX.swap (donde XX es la partición de intercambio. También es útil hacerlo para todas las particiones posibles para que si hay una partición de intercambio en cualquier otra unidad no se montará)

Tranquilízate.

Zibri
fuente
número 3 por la victoria !!
oneklc