[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Tamaño de swap



> Tengo entendido que la swap sirve para tener una memoria virtual, y que
> los procesos puedan tener un espacio de direcciones mayor (superior
> incluso a la memoria fisica). Entonces, ¿poner el triple de swap es
> mejor que poner el doble?

La razón de la swap no es aumentar el espacio de direcciones, pues eso es algo 
que depende del procesador (en el caso de los Intel IA-32, por ejemplo, al 
ser de 32 bits están limitados a 4 GB de memoria direccionable). La swap, 
como memoria virtual que es, sirve para poder tener ejecutándose 
simultáneamente más procesos de los que cabrían en la memoria física del 
ordenador. Los procesos que no se usan en un momento dado se pueden volcar 
total o parcialmente al soporte de la memoria de intercambio (swap), para 
dejar espacio libre para otras tareas. La administración de memoria en los 
equipos actuales es más compleja de lo que parece, normalmente mediante una 
combinación de segmentación y paginación.

Ten en cuenta que la memoria también se usa como caché y como buffer. El caché 
se usa cuando se leen archivos, y tras leerlos se mantienen en memoria. Si se 
necesita volver a utilizar esa información, no hace falta volver a buscarla 
en disco (que es una operación increíblemente lenta para la velocidad interna 
de un procesador) sino que puede usarse la información de esa caché en la 
memoria física, acelerando mucho el rendimiento.

Yo tengo 512 megas de RAM, y nunca se me ocupa entera (sin contar el caché y 
los buffers, es decir, mirando la línea "+/- buffers/cache" del comando 
"free"). Tengo un núcleo 2.6, y pongo la swappiness del kernel a 100, para 
que use cuando pueda la memoria de intercambio (esto se puede hacer con "echo 
100 > /proc/sys/vm/swappiness"). El sistema ahora mismo, tras unas 3 horas de 
uso, un par de juegos, un Mozilla con 20 tabs abiertas, un Kmail, el Knode, 
el XMMS y algunas aplicaciones chorras:

haplo@elfstar:/etc/init.d$ free
             total       used       free     shared    buffers     cached
Mem:        516860     498944      17916          0      17060     217208
-/+ buffers/cache:     264676     252184
Swap:       497972        432     497540

Personalmente creo que le debería haber puesto 256 megas de swap, porque no 
creo que llegue a usar nunca más. Pero en mi caso yo no le pongo 1 giga (el 
doble de mi RAM) ni borracho. :-P

> Y si me quedo corto, ¿qué problemas podría tener el sistema?

Si te pones a arrancar más y más procesos, estos necesitan memoria. Si alguna 
vez llega un proceso, pide memoria pero no hay disponible (y no se puede 
liberar memoria física volcando otros procesos a la swap), en principio 
terminaría con un "segmentation fault", indicando que no hay memoria para que 
se ejecute ese proceso.

Si me aburro a ver si hago un programita que haga infinitas copias de sí mismo 
hasta que pete la memoria, a ver qué hace el sistema en ese caso. No sería 
nada difícil. Ummmmmmmmm...

Haplo



Reply to: