¿Existe un tamaño máximo en el que pueda funcionar un archivo de intercambio?

8

Hasta donde yo sé, el límite teórico para un archivo de intercambio es increíblemente grande dependiendo de si se utiliza un sistema de 32 bits o 64 bits.

Hice un archivo de intercambio de 16 GB en un sistema de 4 GB de RAM y 64 bits con especificaciones de bajo promedio, porque tengo espacio más que suficiente en mi HDD interno de 1 TB ...

Pero, ¿el gran archivo de intercambio realmente hace una diferencia en velocidad / rendimiento?

Devon van Schoor
fuente
1
Relacionado: askubuntu.com/q/49109/367990
Byte Commander
2
En mi opinión, si está utilizando el intercambio realmente necesita más RAM, no un archivo de intercambio más grande
Panther
1
Si está utilizando HDD, debe usar zram en su lugar y reducir la prioridad de los intercambios de HDD. Y una partición de intercambio tan grande no ayudará, porque por el tipo que usa como intercambio de 4GB su sistema ha sido lento para rastrear
phuclv
2
Relacionado: askubuntu.com/q/1017021/504066
PerlDuck
Hasta donde recuerdo, un archivo de intercambio consumirá cierta cantidad de RAM física (creo que menos del 1% del tamaño del archivo de intercambio). Por lo tanto, tener un archivo de intercambio excesivamente grande podría afectar el rendimiento debido al consumo de memoria. Pero para un archivo de intercambio de tamaño razonable, eso no será un problema.
kasperd

Respuestas:

7

Puede tener hasta 32 áreas de intercambio (archivos o particiones) con hasta ~ 4 mil millones (2 ^ 32) páginas cada una, donde una "página" es de 4 KB en un sistema tradicional (por ejemplo, x86 o x86_64) pero puede ser más grande en otros arquitecturas o si ha configurado páginas grandes especialmente.

Esto proporciona un máximo teórico de 16 TB por área de intercambio y hasta 32 áreas de intercambio. Puede haber otras limitaciones que se aplican antes de llegar a esto, pero este es un área de intercambio tan grande que mkswappuede crear para usted.

En cuanto a cuánto desea, cualquier área de intercambio más allá del máximo que realmente utiliza no contribuye en nada al rendimiento o la estabilidad del sistema. El truco consiste en estimar la cantidad máxima de utilización que alguna vez ocurrirá en una situación normal o incluso anormal, y usar eso como el tamaño del archivo de intercambio y nada más.

Al momento de escribir, es muy poco probable que se utilice un espacio de intercambio mayor de aproximadamente 4 GB más que el tamaño de su memoria física, a menos que su sistema sea muy anormal. En un sistema típico, como un sistema de escritorio utilizado por una persona a la vez, es probable que incluso pueda detenerse a un máximo de 6 GB a 8 GB, incluso si su memoria física es mayor.

thomasrutter
fuente
6

No hace ninguna diferencia en términos de velocidad o rendimiento. Simplemente le permite usar hasta 20 GB de memoria virtual antes de que el asesino de OOM comience a eliminar procesos para recuperar memoria.

Si quieres un mejor rendimiento:

  • disminuya swappinesssi no usa más de 4 GB con tanta frecuencia
  • agregar RAM
  • cambiar a un SSD y poner el archivo de intercambio en él
Chai T. Rex
fuente
Si a menudo llega al punto de tener que intercambiar bloques de memoria, un SSD debido a su arquitectura y ciclos de escritura limitados no es el camino a seguir, ya que puede agotar fácilmente los ciclos de escritura del SSD muy rápidamente. Si solo ocasionalmente necesita memoria de intercambio, los SSD están bien.
Videonauth
11
@Videonauth: " Use fácilmente los ciclos de escritura del SSD muy rápidamente": cualquier tipo de SSD moderno medio decente puede mantener la escritura de la capacidad total del SSD día tras día durante años . Su consejo podría haber sido correcto en 2010, pero está desactualizado. Incluso un SSD 840 Samsung GiB de 256 grados de consumo puede soportar escribir 100 GiB por día durante más de 2 años.
AlexP
Si tiene mucha RAM, la disminución del intercambio hace una diferencia aún menor que si tuviera RAM limitada. En realidad, instalar mucha RAM hace que cualquier otro ajuste para intercambiar sea redundante si es suficiente para evitar el intercambio. Mantenga una partición de intercambio para estabilidad "por si acaso", el 99.9% de las veces no se usará, y conservará un gran rendimiento.
thomasrutter
1
Además, lo que pasa con los ciclos limitados de escritura SSD ha sido falso durante más de una década, realmente es hora de que este FUD deba llamarse. Lo siento, este comentario es tan redundante dado que AlexP ya se ocupó de esto, pero vale la pena subrayarlo. Los SSD son excelentes para aplicaciones de escritura pesada.
thomasrutter
1
La nivelación del desgaste en los SSD se convirtió en una cosa alrededor de 2008 ( artículo de 2008 | artículo de Anandtech de 2009 ). "¿Las computadoras portátiles a precios normales de consumo incluso llegaron con SSD en 2008" diablos no, las SSD eran locamente caras y realmente no eran estándar.
thomasrutter
3

Según la respuesta de Gilles

... Solía ​​haber un límite de tamaño de intercambio de 2 GB (en la mayoría de las plataformas de 32 bits), pero este no ha sido el caso durante años. La limitación se eliminó en algún momento de la serie 2.2 del núcleo.

Además, cita la página de manual para mkswap:

El tamaño útil máximo de un área de intercambio depende de la arquitectura y la versión del kernel.

En la biblioteca linux / swap.h hay una MAX_SWAPFILESentrada, por lo que hay un límite en la cantidad de archivos de intercambio en el nivel del kernel, sin embargo, al parecer, tampoco es un área definitiva. Según el documento vinculado:

Cabe señalar que los seis bits para "tipo" deberían permitir que existan hasta 64 áreas de intercambio en una arquitectura de 32 bits en lugar de la restricción MAX_SWAPFILES de 32

Lo que entiendo tiene un máximo de hasta 64 archivos de intercambio en las arquitecturas de 32 bits. Sin embargo, no he notado en el documento mencionar lo que sucedería en la arquitectura de 64 bits. También vale la pena señalar que en este caso , los esfuerzos de OP para crear archivos de intercambio fallaron en la entrada 30.

En cuanto a las particiones de intercambio, parece que no hay límite para eso en el núcleo, además de las constantes mencionadas anteriormente, pero el número de particiones aún estaría limitado por el BIOS subyacente y el diseño del disco .

Sergiy Kolodyazhnyy
fuente
2

Esta respuesta podría no ser apropiada para Ubuntu 18.04 (gracias a @Chai T. Rex por señalar esto en los comentarios).

De todos modos, para versiones anteriores, aquí va (todavía no hay una actualización propuesta LTS> LTS, por lo que esto podría ser relevante):

No es un archivo, es una partición, y sí, lo hace debido al intercambio

El parámetro de intercambio controla la tendencia del núcleo a mover los procesos fuera de la memoria física al disco de intercambio. Debido a que los discos son mucho más lentos que la RAM, esto puede conducir a tiempos de respuesta más lentos para el sistema y las aplicaciones si los procesos se eliminan demasiado agresivamente de la memoria.

Básicamente, si su partición de intercambio es mucho más grande que la RAM que tiene, el sistema tenderá a intercambiar más, causando una lentitud general.

dadexix86
fuente
44
Ahora hay archivos de intercambio, y son los predeterminados (en lugar de particiones) al instalar 18.04 desde cero.
Chai T. Rex
1
Supongo que el comportamiento del intercambio sigue siendo el mismo, sin importar si está respaldado por una partición o un archivo. También puede tener múltiples archivos de intercambio y / o particiones al mismo tiempo. De todos modos, no creo que más swap tenga un efecto negativo mientras todavía quede suficiente RAM.
Byte Commander
Asumiría lo mismo, pero hasta que lo tenga en mis manos, esto es solo una suposición
descabellada
Hay particiones de intercambio y hay archivos de intercambio. Las particiones de intercambio pueden ser utilizadas por dos o más instalaciones de Linux en la misma PC (arranque dual o arranque triple). La partición de intercambio es mejor en el caso de un disco lleno donde el archivo de intercambio podría crearse fragmentado. ... Los archivos de intercambio funcionarán tan bien como las particiones de intercambio si se crean en discos no completos para evitar la fragmentación - Devon van Schoor j
Devon van Schoor
2

No hay mucha diferencia en velocidad o rendimiento al aumentar la partición de intercambio para que sea arbitrariamente grande.

Hay varios factores relacionados con el intercambio que pueden afectar el rendimiento, como el swappinesstipo de disco duro (SDD o HDD).

El intercambio es bastante lento y el intercambio creciente reduce el rendimiento. Sin embargo, solo tiene un efecto si no hay suficiente RAM. Pero es mejor que no tener ningún intercambio. Mi recomendación es hacer que el tamaño de la partición de intercambio sea dos veces mayor que su RAM.

Zanna
fuente
55
esa recomendación está desactualizada. Los sistemas modernos con 32 o 64 GB de RAM no necesitarán un intercambio de 64 o 128 GB
phuclv
3
@ LưuVĩnhPhúc No usaría más de 2GB de intercambio en estos días ...
el.pescado
2 gb parece muy bajo ... las máquinas virtuales o los juegos realmente podrían llenar más de 2 gb de intercambio muy rápidamente. Creo que 4 a 8 gb de intercambio funciona bien con cualquier cantidad de ram. Si necesita más de 8 gb, entonces probablemente debería agregar más ram.
Germain
0

Llego al hecho de que un archivo de intercambio o una partición de intercambio prácticamente no tienen límite. Además, mi archivo de intercambio de 16 GB es bastante grande, pero el tamaño no afecta la velocidad.

Sin embargo, lo que deduzco es que lo que sí afecta la velocidad es que el sistema realmente hace uso de ese espacio de intercambio en lugar del hardware físico.

Mi solución a eso es hacer un alto valor de intercambio para que el intercambio no se use en exceso en lugar del hardware más rápido. Así que lo hice:

sudo -s
nano /etc/sysctl.conf

Agregado al archivo:

#vm.swappiness = 50

salvar

sudo sysctl -p

para actualizar (o podría haber reiniciado)

Devon van Schoor
fuente
Agregar la línea #vm.swappiness = 50a /etc/sysctl.confno tiene ningún efecto, el inicio #hace que esta línea sea un comentario, elimínela. Puede verificar el intercambio con cat /proc/sys/vm/swappiness.
mook765
Pero el método que describí funcionó. Cuando ingreso [cat / proc / sys / vm / swappiness] obtengo 50 como salida
Devon van Schoor