2-4 GB ya no es realmente memoria alta 5 años después.
fifi finance
@ KasperSouren No, no lo es. Fue una cantidad justa en el momento.
C. Ross
Respuestas:
54
Hay muchas maneras de calcular cuánto uso de intercambio en una máquina. Las sugerencias comunes utilizan fórmulas basadas en RAM, como 2 x RAM, 1.5 x RAM, 1 x RAM, .75 x RAM y .5 x RAM. Muchas veces las fórmulas varían según la cantidad de RAM (por lo que una caja con 1 GB de RAM podría usar 2 x intercambio de RAM (2 GB), mientras que una caja con 16 GB de RAM podría usar .5 x intercambio de RAM (8 GB).
Otra cosa a considerar es para qué se usará la caja. Si va a tener una gran cantidad de procesos que se ejecutan simultáneamente en la caja, pero un número significativo de ellos estará inactivo por períodos de tiempo, entonces agregar intercambio adicional tiene sentido. Si va a ejecutar una pequeña cantidad de procesos críticos, entonces tiene sentido agregar un intercambio adicional (esto puede parecer contrario a la intuición, pero lo explicaré en un minuto). Si está ejecutando una caja como escritorio, entonces tiene sentido agregar un intercambio adicional.
En cuanto a si debe incluir el intercambio, sí, debería. Siempre debe incluir espacio de intercambio a menos que realmente sepa lo que está haciendo y realmente tenga una buena razón para ello.
Vea, la forma en que funciona el kernel de Linux, el intercambio no solo se usa cuando ha agotado toda la memoria física. El kernel de Linux tomará aplicaciones que no estén activas (inactivas) y después de un período de tiempo, moverá la aplicación para intercambiarla desde la memoria real. El resultado es que cuando necesite esa aplicación, habrá un retraso momentáneo (generalmente solo un segundo o dos) mientras la memoria de la aplicación se vuelve a leer del intercambio a la RAM. Y esto suele ser algo bueno.
Esto le permite poner las aplicaciones inactivas en "suspensión", dando a sus aplicaciones activas acceso a RAM adicional. Además, Linux usará cualquier RAM disponible (no asignada) en una máquina como caché de disco, haciendo que la mayor parte de la actividad del disco (lenta) sea más rápida y más receptiva. Intercambiar procesos inactivos le proporciona más caché de disco y hace que su máquina sea más rápida en general.
Por último, seamos sinceros, el espacio en disco es barato. Muy barato. Realmente no hay una buena razón para no deslizar una porción (relativamente) pequeña de espacio para el intercambio. Si estuviera ejecutando con 2GB - 4GB de RAM en una máquina, probablemente configuraría mi espacio de intercambio para que sea al menos igual a la RAM. Si fuera menos de 2GB de RAM, entonces todavía iría con al menos 2GB de intercambio.
ACTUALIZACIÓN: Como mencioné un excelente comentario (y olvidé incluirlo), si está ejecutando una computadora portátil o una computadora de escritorio que tal vez desee poner en modo 'hibernar' (Suspender a disco), siempre querrá al menos lo mismo intercambia como tengas memoria. El espacio de intercambio se utilizará para almacenar el contenido de la RAM en la computadora mientras "duerme".
Gran respuesta, pero olvidaste solo una cosa. Si se trata de una computadora de escritorio o portátil, asegúrese de que el intercambio sea al menos tan grande como la RAM que tiene para que pueda hibernar su computadora. Esto ahorra la RAM para intercambiar.
Sander Marechal
44
Buena publicación. Sander me ganó en lo único que iba a agregar. Pensé en un elemento adicional, si tiene varias unidades, colocar su intercambio en una unidad que no tiene el resto de sus sistemas de archivos activos puede mejorar el rendimiento ya que no tendrá tantos conflictos.
GreenKiwi
Como descubrí el verano pasado, debe tener un espacio de intercambio sustancial si está ejecutando Java
Warren
Si el usuario tiene una cantidad de RAM mucho mayor que la cantidad que realmente usará (16 GB / 32 GB) en una computadora de escritorio con un tiempo de actividad del 100% (sin hibernación), ¿todavía sugiere que se soliciten procesos para SWAP? Me parece que sería beneficioso dejar todo en RAM a menos que alguna vez estuvieras cerca de su capacidad.
earthmeLon
1
@earthmeLon - Sugeriría que todavía tenga un poco de intercambio. Los discos son grandes y baratos en estos días, por lo que la pérdida de unos pocos GB de espacio en disco para intercambiar es insignificante. Tener un poco de espacio de intercambio le brinda una póliza de seguro en caso de que algo consuma más RAM de la que espera.
Christopher Cashell
17
Red Hat recomienda la siguiente fórmula para servidores con mucha memoria ram:
if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB
Si su sistema tiene 1 GB de RAM, su intercambio sería de 2 GB, para 16 GB sería de 18 GB.
Un servidor estaría bastante estancado si usara constantemente 1 Gb de intercambio porque su ram estaría lleno.
user2284570
12
Respuesta tardía, y creo que esto se cubrió más o menos en la respuesta seleccionada, pero hay información buena y fácilmente digerible en la respuesta proporcionada por @ssapkota aquí (copia / pegada a continuación).
En años anteriores, la cantidad recomendada de espacio de intercambio aumentó linealmente con la cantidad de RAM en el sistema. Pero debido a que la cantidad de memoria en los sistemas modernos ha aumentado a cientos de gigabytes, ahora se reconoce que la cantidad de espacio de intercambio que necesita un sistema es una función de la carga de trabajo de memoria que se ejecuta en ese sistema. Sin embargo, dado que el espacio de intercambio generalmente se designa en el momento de la instalación, y que puede ser difícil determinar de antemano la carga de trabajo de memoria de un sistema , recomendamos determinar el intercambio del sistema utilizando la siguiente tabla.
Cuadro actual (a diciembre de 2012):
Amount of RAM in the system Recommended swap space Recommended swap space
if allowing for hibernation
--------------------------- ---------------------------- ---------------------------
2GB of RAM or less 2 times the amount of RAM 3 times the amount of RAM
2GB to 8GB of RAM Equal to the amount of RAM 2 times the amount of RAM
8GB to 64GB of RAM 0.5 times the amount of RAM 1.5 times the amount of RAM
64GB of RAM or more 4GB of swap space No extra space needed
Mesa original:
Amount of RAM in the System Recommended Amount of Swap Space
4GB of RAM or less a minimum of 2GB of swap space
4GB to 16GB of RAM a minimum of 4GB of swap space
16GB to 64GB of RAM a minimum of 8GB of swap space
64GB to 256GB of RAM a minimum of 16GB of swap space
256GB to 512GB of RAM a minimum of 32GB of swap space
Depende bastante de lo que estés haciendo con él. Con la carga de trabajo adecuada, en realidad no necesita ningún espacio de intercambio, ya sea que tenga 16 MB o 16384 MB de RAM; de hecho, la mayoría de los dispositivos Linux integrados se ejecutan sin ninguno (¿a qué cambiarían?)
Teniendo en cuenta los precios de RAM, probablemente no va a utilizar el intercambio para el cálculo activo. Entonces, ¿qué queda?
En los escritorios, el espacio de intercambio se utiliza para suspender en disco. Este espacio de intercambio debe estar alrededor de 1 × RAM, dependiendo de qué tan bien se comprima el contenido de la memoria.
Permitir que las tareas inactivas se eliminen de la RAM para dejar más espacio para el caché de disco
Lo mismo, pero para permitir que los procesos activos lo usen en su lugar para el montón / pila
(2) y (3) dependen en gran medida de la carga de trabajo. En mis escritorios, puedo usar fácilmente 4GB + en (2), dejando vims, xterms, etc. ejecutándose en otros escritorios.
En la mayoría de los servidores que ejecuto, casi nunca hay nada intercambiado y 1–2GB de intercambio (independientemente de la cantidad de RAM) parece estar bien.
el espacio de intercambio también se usa si ejecuta algo que utiliza la JVM: ¡no chintz y olvide asignar espacio de intercambio si está ejecutando Java!
Warren
@warren: Tengo instancias de Tomcat, cada una superior a 3GiB, pero sin usar intercambio (y una está usando páginas enormes, por lo que no se puede intercambiar). No estoy seguro de lo que estás hablando.
derobert
hay un error semi-oscuro en la JVM relacionado con la configuración de memoria mínima y máxima que encontré el verano pasado ( antipaucity.com/?p=984 ). TL; DR: cada vez que la JVM solicita más memoria del sistema operativo, se escribe para intercambiar, obtiene su nueva porción de memoria y luego se vuelve a leer en la RAM para que su memoria sea contigua
advirtió el
@warren: OK, estoy ejecutando OpenJDK en 64 bits, con Xmx y Xms lo mismo. Pero no estoy seguro de cómo Java se obligaría a intercambiar, el único cierre de syscall sería madvise, pero eso no fallará ... ese error habla de quedarse sin memoria durante la recolección de basura. Agregar intercambio evita eso, por supuesto, pero también lo haría agregar RAM. ¿Quizás es debido a 32 bits con PAE?
derobert
también sucede con la JVM de 64 bits: si tiene Xmsy Xmxno establece los mismos valores, puede morderlo gravemente: nos causó problemas importantes durante más de dos semanas hasta que finalmente lo rastreamos
warren
4
Bueno, depende de qué servicios y aplicaciones planee ejecutar. Puede ver el uso de su memoria con free -m y ajustar su partición de intercambio en consecuencia con el tiempo.
Aquí hay una discusión interesante sobre el tema. Personalmente (y después de leer esa discusión) todavía dejaría alrededor de 1 GB para el intercambio.
No puedo hablar con Debian directamente, pero sé que cuando superas los 2 GB de RAM, la ecuación original de 2xRAM cambia, generalmente a 1xRAM. Creo que una vez que llegue a 16 GB de RAM, la sugerencia vuelve a bajar a .75xRAM.
Por supuesto, esto es cierto para Solaris, y en realidad es la métrica utilizada para las instalaciones de Oracle, por lo que YMMV depende de las aplicaciones que vaya a ejecutar allí.
El espacio de intercambio puede servir como "relleno" cuando de otro modo se quedaría sin memoria inmediatamente.
Cuando un proceso consume toda la RAM disponible y algo más, la máquina funcionará muy lentamente, pero generalmente podrá recuperarse. También será más fácil ver qué proceso está causando el problema.
Esta es una espada de doble filo: en la PC de mi casa, eliminé el intercambio cuando estaba usando Firefox 2.x, porque estaba consumiendo lentamente toda la memoria, y cuando la máquina comenzó a intercambiarlo, quedó completamente inutilizable; sin intercambio, el proceso de Firefox fue simplemente cerrado por el núcleo :)
wazoox
1
A lo largo de los años, he seguido la regla de que para las máquinas con Windows tienes tanto intercambio como RAM ... En Novell, sintonizaríamos más si tuviéramos más impresoras ... Para Linux, la regla y la práctica para mí han sido 1GB intercambie por cada 2GB de RAM que tenga. Y lo coloca en la parte frontal del disco para que se acceda más rápido.
Si es una puerta de enlace de correo / spam, uso el doble de intercambio a RAM
Si es un servidor *, no uso swap en absoluto
si es un servidor LAMP, la regla 1/2 está vigente.
El millaje variará según la aplicación y el uso de la GUI.
En realidad, creo que el intercambio en el medio del disco se accedería más rápidamente.
Eddie
0
Creo un intercambio de 1GB y compro más RAM en el segundo en que se usa. Realmente no necesitas cambiar en las computadoras modernas, la RAM es muy barata.
¿Para qué estás usando el sistema? Personalmente no uso ningún intercambio. Si algo usa un token de 512 MB o algo así solo las cosas pueden ponerse en el disco si es residente pero está inactivo por largos períodos.
Solo uso un pequeño intercambio de tokens (generalmente 256 MB, pero incluso he hecho 64 MB) porque la configuración de un sistema con intercambio cero necesita una configuración especial.
El espacio en disco es barato, pero muy lento. Tan pronto como el sistema comienza a intercambiarse, el rendimiento es cero. Y la RAM ya no es tan costosa.
Confía en mí, compra un procesador un poco más lento y compra más RAM. 2.8 GHz en lugar de 3.0 GHz le ahorrará suficiente dinero para comprar otros 2 GB de RAM, al menos.
Respuestas:
Hay muchas maneras de calcular cuánto uso de intercambio en una máquina. Las sugerencias comunes utilizan fórmulas basadas en RAM, como 2 x RAM, 1.5 x RAM, 1 x RAM, .75 x RAM y .5 x RAM. Muchas veces las fórmulas varían según la cantidad de RAM (por lo que una caja con 1 GB de RAM podría usar 2 x intercambio de RAM (2 GB), mientras que una caja con 16 GB de RAM podría usar .5 x intercambio de RAM (8 GB).
Otra cosa a considerar es para qué se usará la caja. Si va a tener una gran cantidad de procesos que se ejecutan simultáneamente en la caja, pero un número significativo de ellos estará inactivo por períodos de tiempo, entonces agregar intercambio adicional tiene sentido. Si va a ejecutar una pequeña cantidad de procesos críticos, entonces tiene sentido agregar un intercambio adicional (esto puede parecer contrario a la intuición, pero lo explicaré en un minuto). Si está ejecutando una caja como escritorio, entonces tiene sentido agregar un intercambio adicional.
En cuanto a si debe incluir el intercambio, sí, debería. Siempre debe incluir espacio de intercambio a menos que realmente sepa lo que está haciendo y realmente tenga una buena razón para ello.
Vea, la forma en que funciona el kernel de Linux, el intercambio no solo se usa cuando ha agotado toda la memoria física. El kernel de Linux tomará aplicaciones que no estén activas (inactivas) y después de un período de tiempo, moverá la aplicación para intercambiarla desde la memoria real. El resultado es que cuando necesite esa aplicación, habrá un retraso momentáneo (generalmente solo un segundo o dos) mientras la memoria de la aplicación se vuelve a leer del intercambio a la RAM. Y esto suele ser algo bueno.
Esto le permite poner las aplicaciones inactivas en "suspensión", dando a sus aplicaciones activas acceso a RAM adicional. Además, Linux usará cualquier RAM disponible (no asignada) en una máquina como caché de disco, haciendo que la mayor parte de la actividad del disco (lenta) sea más rápida y más receptiva. Intercambiar procesos inactivos le proporciona más caché de disco y hace que su máquina sea más rápida en general.
Por último, seamos sinceros, el espacio en disco es barato. Muy barato. Realmente no hay una buena razón para no deslizar una porción (relativamente) pequeña de espacio para el intercambio. Si estuviera ejecutando con 2GB - 4GB de RAM en una máquina, probablemente configuraría mi espacio de intercambio para que sea al menos igual a la RAM. Si fuera menos de 2GB de RAM, entonces todavía iría con al menos 2GB de intercambio.
ACTUALIZACIÓN: Como mencioné un excelente comentario (y olvidé incluirlo), si está ejecutando una computadora portátil o una computadora de escritorio que tal vez desee poner en modo 'hibernar' (Suspender a disco), siempre querrá al menos lo mismo intercambia como tengas memoria. El espacio de intercambio se utilizará para almacenar el contenido de la RAM en la computadora mientras "duerme".
fuente
Red Hat recomienda la siguiente fórmula para servidores con mucha memoria ram:
Si su sistema tiene 1 GB de RAM, su intercambio sería de 2 GB, para 16 GB sería de 18 GB.
fuente
Respuesta tardía, y creo que esto se cubrió más o menos en la respuesta seleccionada, pero hay información buena y fácilmente digerible en la respuesta proporcionada por @ssapkota aquí (copia / pegada a continuación).
Aquí hay una muy buena recomendación de RedHat: espacio de intercambio de sistema recomendado
Un extracto del mismo enlace:
Cuadro actual (a diciembre de 2012):
Mesa original:
fuente
Depende bastante de lo que estés haciendo con él. Con la carga de trabajo adecuada, en realidad no necesita ningún espacio de intercambio, ya sea que tenga 16 MB o 16384 MB de RAM; de hecho, la mayoría de los dispositivos Linux integrados se ejecutan sin ninguno (¿a qué cambiarían?)
Teniendo en cuenta los precios de RAM, probablemente no va a utilizar el intercambio para el cálculo activo. Entonces, ¿qué queda?
(2) y (3) dependen en gran medida de la carga de trabajo. En mis escritorios, puedo usar fácilmente 4GB + en (2), dejando vims, xterms, etc. ejecutándose en otros escritorios.
En la mayoría de los servidores que ejecuto, casi nunca hay nada intercambiado y 1–2GB de intercambio (independientemente de la cantidad de RAM) parece estar bien.
fuente
madvise
, pero eso no fallará ... ese error habla de quedarse sin memoria durante la recolección de basura. Agregar intercambio evita eso, por supuesto, pero también lo haría agregar RAM. ¿Quizás es debido a 32 bits con PAE?Xms
yXmx
no establece los mismos valores, puede morderlo gravemente: nos causó problemas importantes durante más de dos semanas hasta que finalmente lo rastreamosBueno, depende de qué servicios y aplicaciones planee ejecutar. Puede ver el uso de su memoria con free -m y ajustar su partición de intercambio en consecuencia con el tiempo.
Aquí hay una discusión interesante sobre el tema. Personalmente (y después de leer esa discusión) todavía dejaría alrededor de 1 GB para el intercambio.
fuente
No puedo hablar con Debian directamente, pero sé que cuando superas los 2 GB de RAM, la ecuación original de 2xRAM cambia, generalmente a 1xRAM. Creo que una vez que llegue a 16 GB de RAM, la sugerencia vuelve a bajar a .75xRAM.
Por supuesto, esto es cierto para Solaris, y en realidad es la métrica utilizada para las instalaciones de Oracle, por lo que YMMV depende de las aplicaciones que vaya a ejecutar allí.
fuente
Siempre hago tanto intercambio (al menos) como RAM. Por si acaso quiero hibernar la máquina algún día. Puede funcionar con menos, pero tampoco podría.
El espacio en disco duro es barato en estos días, por lo tanto, no dudo en regalar espacio de intercambio.
fuente
El espacio de intercambio puede servir como "relleno" cuando de otro modo se quedaría sin memoria inmediatamente.
Cuando un proceso consume toda la RAM disponible y algo más, la máquina funcionará muy lentamente, pero generalmente podrá recuperarse. También será más fácil ver qué proceso está causando el problema.
fuente
A lo largo de los años, he seguido la regla de que para las máquinas con Windows tienes tanto intercambio como RAM ... En Novell, sintonizaríamos más si tuviéramos más impresoras ... Para Linux, la regla y la práctica para mí han sido 1GB intercambie por cada 2GB de RAM que tenga. Y lo coloca en la parte frontal del disco para que se acceda más rápido.
si es un servidor LAMP, la regla 1/2 está vigente.
El millaje variará según la aplicación y el uso de la GUI.
fuente
Creo un intercambio de 1GB y compro más RAM en el segundo en que se usa. Realmente no necesitas cambiar en las computadoras modernas, la RAM es muy barata.
fuente
¿Para qué estás usando el sistema? Personalmente no uso ningún intercambio. Si algo usa un token de 512 MB o algo así solo las cosas pueden ponerse en el disco si es residente pero está inactivo por largos períodos.
fuente
Solo uso un pequeño intercambio de tokens (generalmente 256 MB, pero incluso he hecho 64 MB) porque la configuración de un sistema con intercambio cero necesita una configuración especial.
El espacio en disco es barato, pero muy lento. Tan pronto como el sistema comienza a intercambiarse, el rendimiento es cero. Y la RAM ya no es tan costosa.
Confía en mí, compra un procesador un poco más lento y compra más RAM. 2.8 GHz en lugar de 3.0 GHz le ahorrará suficiente dinero para comprar otros 2 GB de RAM, al menos.
fuente