¿Ubuntu admite el tamaño de archivo de intercambio dinámico?

13

No puedo imaginar por qué un archivo de intercambio debe tener un tamaño fijo. ¿Por qué no dejar que cambie de tamaño dinámicamente, como el archivo de imagen del disco duro para una caja virtual?

Tom Mercer
fuente
Linux no admite tamaños de espacio de intercambio dinámico a menos que cuente la opción de agregar y eliminar espacios de intercambio completos en tiempo de ejecución. (Tampoco Windows por cierto, ni siquiera el último.)
David Foerster
¿Mac admite el intercambio dinámico?
Tom Mercer
No tengo idea. Es un núcleo completamente diferente que no estudié. Lo más probable es que sea similar al espacio de intercambio en Linux. De todos modos, ¿podría abrir una nueva pregunta sobre Unix y Linux o Preguntar diferente si tiene una pregunta nueva o de seguimiento sobre el núcleo Darwin de OS X? La sección de comentarios no es adecuada ni está destinada a nuevas preguntas o discusiones extensas. :-) Gracias.
David Foerster
@DavidFoerster en Windows puede establecer los tamaños mínimo y máximo para cada archivo de página y Windows aumentará el tamaño del archivo de página cuando sea necesario. tomshardware.com/news/…
phuclv

Respuestas:

11

No parece que Linux admita el tamaño dinámico del archivo de intercambio (en cualquier caso, no pude detectar que un archivo de intercambio hubiera cambiado de tamaño sin un swapoff/ swapon).

Presumiblemente, es más fácil suponer que un archivo de intercambio no cambia el tamaño del archivo dinámicamente al escribir código para soportarlo. Tampoco veo un gran uso para ello. Dado que puede usar múltiples archivos de intercambio, nada le impide crear más archivos de intercambio según sea necesario.

También tenga en cuenta este párrafo de la página de swaponmanual :

The  swap file implementation in the kernel expects to be able to write
to the file directly, without the assistance of the  filesystem.   This
is  a problem on preallocated files (e.g.  fallocate(1)) on filesystems
like XFS or ext4, and on copy-on-write filesystems like btrfs.

Creo que el mismo problema se aplicaría a un archivo de intercambio de tamaño dinámico.

muru
fuente
Parece que esto es cierto, y swapspace ni siquiera cambia el tamaño dinámicamente de intercambio.
Tom Mercer
2

SwapSpace es una utilidad que le permitirá realizar intercambios de tamaño dinámico si eso es lo que está buscando. Creo que está disponible en Ubuntu.

usuario231695
fuente
Si bien tuvo un nuevo lanzamiento hace 2 años , las versiones empaquetadas para Ubuntu parecen ser antiguas. ¿Qué tan bien funciona?
muru
No puedo imaginar que el método utilizado para escribir el archivo de intercambio haya cambiado, pero no puedo decirlo con certeza. Funciona bien en Debian.
user231695
Todavía voto su respuesta ya que es igual de simple crear un nuevo espacio.
user231695
Voy a intentarlo e informaré.
Tom Mercer
@ user231695, aunque es sencillo crear un nuevo espacio de intercambio, es terriblemente inconveniente y posiblemente una solución completamente inviable. El único momento en que un usuario desea agregar un nuevo espacio de intercambio es el momento en que el intercambio existente está lleno. De ahí mi pregunta para el tamaño dinámico del archivo de intercambio.
Tom Mercer
1

Sé que es tarde, pero creo que la mejor solución para el intercambio dinámico es:

sudo apt install dphys-swapfile
sudo update-rc.d dphys-swapfile enable

luego poner CONF_SWAPFACTOR=2en /etc/dphys-swapfiley finalmente

sudo service dphys-swapfile start
Denis Pitzalis
fuente
No parece cambiar dinámicamente el cambio de tamaño. Parece un script para inicializar un archivo de intercambio de cierto tamaño que tiene por defecto una capacidad de RAM 2x.
Tom Mercer
Hola @TomMercer configurando swapfactor y maxswap, de acuerdo con los comentarios en el archivo: "# establece el tamaño en el valor calculado, esto multiplica el tamaño de la RAM, se adapta dinámicamente, garantiza que haya suficiente intercambio sin desperdiciar espacio en disco en exceso". "se adapta dinámicamente" parece lo que estás buscando. Lo mejor
Denis Pitzalis
¿Hace que mi archivo de intercambio varíe en tamaño entre, digamos, 1 KB y 16 GB, mientras estoy usando el sistema operativo y llenando la RAM? Eso es lo que significa el intercambio de "cambio de tamaño dinámico". Crear un archivo de intercambio que sea un múltiplo del tamaño de RAM no es dinámico. No tiene sentido tener un swapfile en absoluto hasta que la RAM esté llena, y luego desea que el swapfile tenga exactamente el tamaño de VRAM que está utilizando. Si cierra las pestañas o la gran imagen en la que está trabajando, el archivo de intercambio debería volver a reducir su tamaño dinámicamente. El archivo de intercambio siempre debe estar exactamente 100% lleno al cambiar su tamaño dinámicamente.
Tom Mercer
0

El espacio de intercambio se puede agregar a un sistema en ejecución mediante el swaponcomando. Necesita un archivo de intercambio / partición existente (sin usar). Para crear uno, use el ddcomando para asignar un archivo contiguo y luego mkswappara agregar la información de control correcta al archivo / partición.

Para eliminar un archivo de intercambio, use swapoff; El archivo puede ser eliminado.

Sospecho que eso es lo SwapSpaceque hace dæmon que @ user231695 menciona.

Tenga en cuenta que el intercambio puede ser una operación lenta si el archivo de intercambio está en uso; Todos los datos deben transferirse a otra área de intercambio.

CSM
fuente