martes, 7 de abril de 2009

Optimizando Firefox

Hace unos días, encontré un artículo de blog sobre cómo optimizar el consumo de memoria de Firefox. Dejando a un lado que el artículo atribuía incorrectamente el consumo a una "fuga de memoria" (o sea, memoria que es reservada pero luego no es liberada), me pareció lo suficientemente interesante para leerlo con detenimiento, analizarlo, y comprobarlo para ver qué resultado daban los cambios de configuración propuestos.

Lo he puesto a prueba en cuatro ordenadores diferentes (mi ordenador de escritorio, Nathan, con 2 GB de RAM; mi portátil, el Viejo Bilbo, con 512 MB de RAM, y los ordenadores de dos amigos míos, ambos con 256 MB de RAM). Y el resultado me ha sorprendido, sobre todo en las máquinas más limitadas: Firefox consume mucha menos memoria, anda más rápido cuando escasea la memoria (sobre todo por que toca el archivo de intercambio con menos frecuencia), y no hace falta reiniciarlo todos los días si el ordenador está 24 horas al día encendido.

Éstos son los cambios de configuración que he aplicado, los valores, en mi opinión, adecuados, y el porqué de esos valores. A todos ellos se accede a través de la página de configuración, tecleando about:config en la barra de direcciones.

Nombre: browser.cache.disk.capacity
Descripción: tamaño del caché en disco, en KB
Valor recomendado: 50000
Explicación: 50000 es el valor predeterminado. En mi experiencia, aumentarlo no beneficia mucho, pero reducirlo puede ralentizar la navegación en sitios con muchas imágenes, o impedir que se reanude una descarga cortada. No está de más revisarlo antes de modificar el siguiente valor.

Nombre: browser.cache.memory.capacity (nuevo valor de tipo entero)
Descripción: tamaño del caché en memoria, en KB
Valor recomendado: entre 16384 y 50000
Explicación: el caché de memoria es un subconjunto del caché en disco. Si queremos ahorrar memoria, podemos darle un valor de hasta la tercera parte del caché de disco. Salvo casos muy concretos, no mejoraremos el rendimiento haciéndolo más grande que éste. Este valor no viene definido por defecto, con lo que tendremos que crearlo.

Nombre: network.prefetch-next
Descripción: carga de enlaces en segundo plano
Valor recomendado: false (desactivado)
Explicación: esta función hace que Firefox, mientras vemos una página, comience a cargar en segundo plano las páginas a las que apuntan sus enlaces, consumiendo espacio en caché y ancho de banda. En teoría debería acelerar el cambio de página, pero en la práctica, la mejora obtenida es casi imperceptible, y los recursos consumidos considerables.

Nombre: browser.sessionhistory.max_total_viewers
Descripción: páginas almacenadas en el caché de texto analizado
Valor recomendado: 1 a 3 con 512 MB o menos; 5 en otro caso
Explicación: al pasar de una página a otra, Firefox no sólo almacena la página antigua en caché, sino que guarda ciertos datos que le permiten volver a mostrarla rápidamente sin tener que analizar el código HTML. Esto puede acelerar el volver a una página anterior, pero también puede consumir bastante memoria. Esta opción limita el número de páginas que se almacenan en esta forma. La documentación de Mozilla no es clara en ese aspecto, pero parece que es por pestaña en lugar de global. Un valor bajo puede liberar mucha memoria, sobre todo si usamos un gran número de pestañas. Los valores recomendados son orientativos, ya que el efecto en rendimiento dependerá de cuánto usemos el botón Anterior al navegar. Cuando más lo usemos, más nos convendrá aumentar este valor.

Nombre: config.trim_on_minimize (nuevo valor de tipo lógico)
Descripción: volcar a archivo de intercambio al minimizar
Valor recomendado: true cuando el ordenador va extremadamente justo de memoria; false (valor predeterminado) en el resto de los casos
Explicación: poner esta opción a true hace que la memoria de Firefox se vuelque al archivo de intercambio cuando minimizamos la ventana. Esta configuración sólo mejora el rendimiento cuando se ejecutan Firefox y otra aplicación pesada en una máquina con muy poca memoria (menos de 256 MB), pero, sin embargo, puede reducir enormemente el rendimiento, sobre todo si tenemos mucha memoria. Os recomiendo activarla sólo en los casos más extremos.

Después de cambiar cualquiera de estas opciones, deberéis reiniciar Firefox para que entre en efecto. Estas opciones han sido probadas en Firefox 3.0.7 y 3.0.8 para Windows. Hasta donde yo sé, todas ellas se aplican también a Firefox 2, y (todas salvo la última) a otros sistemas operativos, como Linux o Mac OS, pero no he tenido ocasión de comprobarlas en esos escenarios.

Si sabéis de alguna otra técnica para ajustar el consumo de memoria de Firefox, tenéis alguna corrección que hacer o las habéis probado en otra versión de Firefox o en otro sistema, contádmelo en un comentario, y actualizaré el texto del artículo.

Más información: http://blog.skdev.net/2009/02/12/how-to-fix-firefox-memory-leak-problem/ (en inglés)

No hay comentarios: