Domingo, 15 de Enero de 2006
Evitar cuelgues en las nuevas Palm con NVFS (II)
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.
Posts en esta serie:
- Evitar cuelgues en las nuevas Palm con NVFS (I)
- Evitar cuelgues en las nuevas Palm con NVFS (II)
- Evitar cuelgues en las nuevas Palm con NVFS (y III)
Por: Marcos González Troyas en Trucos Palm
RSS comentarios |
Imprimir este post
Artículos relacionados
Suscríbete para estar al corriente de las novedades en este blog












Buenas!
Lamento revivir a esta altura un tema que data desde hace un tiempo atrás, pero creo que por su importancia lo amerita. Desde hace poco estoy comenzando a tener “Fatal exceptions” inesperados en mi Tungsten E2 con ciertos programas (me ha sucedido con: AeroPlayer, Documents To Go 9 y RepliGo). He leído muchísimo (tanto en inglés como español) sobre DBCacheTool y mis preguntas son las siguientes:
¿Es realmente necesario utilizar DBCacheTool? (me da un poco de miedo instalarlo y manipular algo tan delicado como la memoria DBCache)
¿Funciona bien una E2 los valores comentados en el artículo?
Desde ya, les agradesco la ayuda y el tiempo!
Carlos.
Nunca es tarde para hablar de ningún tema, Carlos.
El DbCacheTool es muy útil porque intenta liberar memoria cuando hace falta, en vez de dejar que se acabe sin avisarnos y que se cuelguen los programas (que es lo que ocurre por defecto en PalmOS). Otra cosa es que consiga liberar suficiente memoria. Cuando quede poca (es decir, cuando DbCacheTool se ejecuta ya muy frecuentemente), lo más fácil es hacer un reset, sobre todo si el programa a abrir es grande, como los que comentas.
Lo he usado mucho tiempo en mi E2 y no ha dado ningún tipo de problema, yo no me preocuparía por usarlo. Lo peor que puede pasar es que se cuelgue la Palm, pero la reseteas y listo.
Los valores comentados son los que mejor funcionan para mi gusto, y uso una E2, así que deberían ser, si no los óptimos, al menos seguros. Habrá quien prefiera apurar más la memoria, con el riesgo de poder acabarla al cargar un programa muy grande.
Espero haberte ayudado un poco Carlos. Saludos.
Quisiera saber si este programa es necesario tambien para la tungsten E2
Yo al menos lo uso en mi Tungsten E2 y me ha servido de mucho.
Hola, ya que se remonto este tema aprovecho para hacer una pregunta… el dbcachetool hace lo mismo que el reset doctor?… es mejor que el reset doctor?.
Saludos
Hola Davide.
Sí, en teoría ambos programas hacen lo mismo. Pero luego en la realidad el PrefDoctor nunca me ha conseguido liberar memoria, mientras que el DbCacheTool siempre me ha funcionado. Mi equipo es una Tungsten E2.
No he probado las últimas versiones del PrefDoctor, quizás ahora funcione.
Hola Marcos
Estoy muy agradecido por tu aporte en la liberacion de DBCaché he tenido problemas con el mensaje Fatal Exception y el reseteo posterior que se ha hecho muy seguido en mi Palm T5, yo sospecho que mi problema radica en los programas de Skyscape que utilizo frecuentemente, deben ocupar mucha memoria caché. Mas comentarios cuando lleve mas tiempo de uso de la solucion del problema con el DBCaché Tool.
Saludos
UN SALUDO MARCOS ESTÁ MUY INTERESANTE TODO LO QUE DICES EN ESTE BLOG.
TENGO UNA PALM TUNGSTEN E2 INSTALÉ EL PROGRAMA DbCacheTool Y LO CONFIGURÉ TAL COMO LO INDICAS EN ESTA PAGINA ENTRO AL PROGRAMA LE PONGO ON Y AL SALIR O AL ABRIR OTRO PROGRAMA DOCS. TO GO ETC. SE QUEDA Y DICE LO SIG. DBCache:cLEAR processing… Y TARDA MUCHO QUE PASA CON ESTE PROSESO TENGO ALGO MAL CONFIGURADO?.
SALUDOS A TODOS.
MADRIGALSON
Hola MADRIGALSON, es normal que tarde tanto en liberar memoria, el programa funciona así.
Si te lo hace muy a menudo entonces estás usando programas que consumen mucha memoria, o tienes alguno en segundo plano muy grande, por ejemplo ZLauncher.
Para reducir el número de veces que se ejecuta el DbCacheTool al mínimo, yo configuro la Palm para que se resetee todas las noches, así todas las mañanas la tengo con el máximo de memoria libre.
Hola
cómo desinstalo AVANGO de mi palm o resetearla por completo es que lo he instalado pero mal y ahora me dice que hay un error grave
gracias