Evitar cuelgues en las nuevas Palm con NVFS (II)

by

Toda la explicación que se hizo sobre como está organizada la memoria interna de las Palm anteriores, y las que traen el nuevo sistena NVFS, intentaba explicar la existencia de la DbCache.

Resumiendo, la DbCache es la zona de memoria RAM en la que se copian los archivos de una aplicación cada vez que ejecutamos una, ya que los archivos ejecutables no pueden funcionar directamente en la memoria flash que es la utilizada para almacenamiento en las Palm con NVFS. Si no te has enterado de nada, es porque has intentado saltarte la primera parte de este post. La conclusión es que, por mucha memoria que tenga una Palm, los datos que utilice un programa no pueden ocupar más del espacio libre en la DbCache. ¿Un ejemplo? Tienes una Tungsten E2, con 10Mb libres en la memoria de almacenamiento, y 4Mb en el Dynamic Heap, pero tu DbCache sólo tiene 2Mb libres. Cargas un programa que consume 3Mb. Resultado: tu E2 se cuelga. Así de sencillo.

Claro está, nunca se debería llegar a esta situación. Mi E2 nada más hacer un soft reset tiene unos 5Mb de DbCache libres. Ejecuto un programa grande y bajan a 2Mb, pero en cuanto salga de ese programa, PalmOS libera esa memoria y vuelvo a tener 5Mb, para la siguiente aplicación. ¿Pasa esto? No realmente. PalmOS no libera DbCache hasta que no es necesario, para evitar ralentizaciones. Cuál es el problema: que esta limpieza de la DbCache no siempre funciona como debería.

Las Palm más inestables eran las primeras que salieron con el NVFS: el treo 650 y la Tungsten T5. Pero ya hace tiempo que en la página de Palm hay actualizaciones que mejoran estos puntos, por lo que si aún no habéis actualizado vuestros equipos no se a qué esperais. Ahora mismo con el uso normal no suele haber problemas. Pero cuando por ejemplo abrimos un archivo grande, con muchas imágenes, dentro de Plucker, o cargamos un juego grande, por ejemplo los de GameboyColor en el LJP, o el Día del Tentáculo en el ScummVM, si no tenemos 2 o 3Mb libres en la DbCache es seguro que se nos colgará la Palm.

¿Y qué podemos hacer para solucionar esto? Afortunadamente Hiroaki Imazeki creó DbCacheTool. No sé si la página del programa os ayudará mucho, ya que está en japonés, pero he recopilado suficiente información sobre este programa en los meses que llevo investigando el tema. El program podéis bajarlo pinchando en el enlace de abajo del todo de la página. Esta aplicación monitoriza el nivel de DbCache libre que hay en cada momento, y podemos configurarla para que, cuando este nivel baje de un cierto umbral que decidamos, por algún método que desconozco (se supone que puede cargar un programa muy grande poco a poco y luego descargarlo de memoria) libere toda la DbCache que pueda. El proceso tarda unos 15 segundos.


La configuración de DbCacheTool

Una vez instalado este programita, ya podemos ejecutarlo. Consta de una sóla ventana que es donde se configura todo. Paso a explicar qué es cada cosa:

  • Cache Size es el tamaño de la DbCache de nuestra Palm, mientras que Free indica cuanta de esta memoria está libre actualmente. Pero MaxAlloc es el tamaño del bloque contíguo más grande de esta memoria libre. Y es que un programa grande no podrá usar más que esta cantidad, porque no puede cargarse en varios huecos. Así que este valor, que es el más pequeño de los tres, es el que más nos interesa.
  • Clear Type nos da a elegir qué método usará para liberar memoria. Elegiremos entre DB (que es el método que explico aquí) y Sync que la verdad no he conseguido saber que es, aunque se supone que sería liberar la DbCache durante los Hotsync.
  • Auto Clear significa si queremos que el programa haga algo o no. Es el interruptor general.
  • En Apps… podremos definir configuraciones para un solo programa en concreto, por ejemplo para programas que requieren mucha RAM.
  • Y ahora tenemos que decidir cuando chequear la DbCache:
    • App Stop: cuando salgamos de una aplicación.
    • Ctrl Tap: dentro de una aplicación, cada vez que pulsemos un botón.
    • First form Open: cuando abrimos una aplicación. Esta opción sólo está disponible para la configuración de un programa en concreto.
    • Event dequeue: para la configuración de un programa en cocnreto, activa o desactiva que DbCache haga algo o no.
  • Ask at soft reset nos da la opción de que el programa pregunte si se arranca o no al hacer soft reset, para evitar que si da problemas no nos deje arrancar la Palm. Clear at soft reset haría que se ejecute el programa cada vez que hacemos un reset, para así empezar con la DbCache lo más vacía posible.
  • Por último, free significa a partir de que valor (en Mb), si la DbCache tiene menos espacio libre que el indicado, intentará liberar más; max es lo mismo, pero relativo al tamaño del bloque de memoria libre contigua más grande.

Esto es lo que significa cada cosa pero ahora ¿Qué valores dar? Os puedo decir que normalmente con 2Mb de DbCache libre casi todos los programas van a cargar bien. Algo que he comprobado es que, aunque al ejecutarse libera mucha DbCache, lo que no aumenta es el tamaño del hueco libre más grande, que además es el que realmente nos limita. Así que si se hace muy pequeño habrá que resetear la Palm para liberar esta memoria otra vez. El DbCacheTool además del programa en sí, trae un Desktop Assistant (DA) que es una especie de Hack para PalmOS 5. Si os instaláis el DALauncher por ejemplo, podréis cargarle este DA, y en la barra de comandos que sale cuando hacéis un trazo diagonal (típico para copiar, pegar, etc.), os aparecerá la opción de consultar el estado de la DbCache, lo cual es muy cómodo.

Valores que tengo puestos actualmente: después de muchas pruebas, lo he dejado como veis en la captura. 4Mb de total y 0Mb de max. ¿Por què? el max me da igual, porque cuando sea muy pequeño no lo voy a poder aumentar, el progama no lo consigue. Así que me fijo en el free, el valor total, y si baja de 4Mb, el max no bajará de unos 3Mb, porque suelen ir los dos alores a la par. Es difícil explicar como funciona esto, hay que instalarlo y ver como baja la DbCache según los programas, y decidir el valor que más nos conviene. Si ponemos un umbral muy bajo, podemos llenar la DbCache con un programa grande y colgar la Palm. Si ponemos un umbral muy grande, el programa se ejecutará muy a menudo y es una molestia.

Como veis esta solución es de compromiso, pero puede llegar a funcionar muy bien. Necesita un proceso de prueba y error, pero con esto y otro programa que voy a comentar en el próximo post podemos tener una Palm sólida como una roca. Sé que es mucho para digerir, pero os recomiendo que lo leais con calma, porque funciona.

One Response to “Evitar cuelgues en las nuevas Palm con NVFS (II)”

  1. paintball gun Says:

    If you want to build teamwork, you will definitely want to practice together,
    of course. So strap on all your paintball gear and load up those paintball guns!

    Work on offensive and defensive strategies, code words, “what-if” scenarios, and more.
    Study from the opposition along with your own teammates.
    Carefully observe other paintball players to build up new
    and winning strategies for upcoming game titles. Does the opposing group speak over your staff does?
    Do they seem to be far more organized? Paying attention to how
    your opponents interact may help improve your team’s functionality.
    If your team is lacking in that area, take a look at your
    opponents paintball gear and see. This can greatly impact your gameplay

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: