Muchas personas consideran que se debe alocar el doble de memoria física para espacio swap. Pero esta es una regla equivocada. Aquí se explica como se deberá estimar el tamaño de swap correctamente:
Estimar el total de memoria necesaria. Esto es la mayor cantidad de memoria que se necesitará usar en un momento dado, y que estará dado por la suma de las memorias requeridas por todos los programas que se puedan ejecutar al mismo tiempo. Esto puede ser calculado ejecutando al mismo tiempo todos los programas que se utilicen habitualmente.
Por ejemplo, si se requiere ejecutar el servidor X, se deberá alocar alrededor de 8 MB para este, gcc requiere algunos pocos megabytes (algunos archivos pueden necesitar una inusual cantidad de memoria, hasta 10 MB, pero generalmente alrededor de 4 megabytes debería funcionar), y así sucesivamente. El kernel usará alrededor de un megabyte para si mismo, y un shell común y otros pequeños utilitarios talvéz unos pocos cientos de kilobytes (digamos un megabyte todos juntos). No es necesario que el cálculo sea exacto, una estimación aproximada estará bien, pero es posible que se quiera hacer una estimación pesimista poniendo todos los valores como máximos.
Recordar que si hay varios usuarios usando el sistema al mismo tiempo, estarán todos consumiendo memoria. A pesar de esto si dos usuarios están ejecutando el mismo programa al mismo tiempo, el total de memoria consumida no suele ser el doble, ya que cada página de código y librería compartida reside solo una vez en memoria.
Los comandos free y ps son útiles para estimar la memoria necesaria.
Agregar un margen de seguridad a los estimado en el paso 1. Esto es porque el tamaño estimado para los programas será probablemente erróneo, ya que habrán algunos programas que se querrán ejecutar, y seguramente no fueron tenidos en cuenta. Para salvar esto, se deberá tener algún espacio extra. Un par de megabytes deberá ser suficiente. (Es preferible alocar espacio de más que de menos, pero no hay necesidad tampoco de sobrepasarse y alocar todo el disco entero, el espacio swap no usado es espacio malgastado; ver mas adelante a cerca de agregar mas swap). También, es mejor tratar de que sea un número par, se podrá redondear hacia arriba para llegar al próximo número entero de megabytes.
Basados en los cálculos anteriores, se puede saber cuanta memoria se necesita en total. Por lo tanto, para alocar el espacio de swap, solo se necesita restar el tamaño de memoria física del total de memoria necesaria. (En algunas versiones de Unix, se necesita alocar tanto espacio como para una imagen de la memoria física, entonces la cantidad calculada en el punto dos será lo que se necesita, y no se deberá realizar la resta)
Si el espacio calculado de swap es mucho mayor que la memoria física (Mas del doble), probablemente se deberá invertir en más memoria física, sino la performances del sistema será muy lento.
Es una buena idea tener por lo menos un área de swap, aún cuando los cálculos indiquen que no se necesita. Linux usa el espacio de swap en forma agresiva, tanto, que trata de mantener la mayor cantidad de memoria física libre. Linux swapeará las páginas de memoria que no han sido usadas, aun si la memoria no es solicitada por ningún proceso. Esto evita las esperas por swapeo cuando ella es necesaria: El pasaje a swap puede ser hecho mucho más fácilmente cuando el disco está desocupado.
El espacio de swap puede ser dividido entre varios discos. Esto puede en algunas ocasiones mejorar el rendimiento, dependiendo de las velocidades relativas de los discos y del tipo de acceso. Se puede experimentar con algunos esquemas, pero es importante tener en cuenta que hacer esto apropiadamente puede ser muy complejo. No se debe creer que un esquema puede ser mejor que otro, antes de verificar su real aplicabilidad.