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.
Por: Marcos González Troyas en Trucos
RSS comentarios |
Imprimir este post
Artículos relacionados
Suscríbete para estar al corriente de las novedades en este blog










Un poquillo de humor, je je. Si no sabemos japonés para saber ver la documentación oficial del autor, siempre nos podemos leer tu artículo Usando la Palm para estudiar japonés, je je.
Sí, ya tenemos una razón más en la lista
Por fin estoy probando esto… mas noticias a las 10:00 :p
Amigo Marcos, tras instalar AvantGo, y alternar con VersaMail, había comenzado a sufrir soft resets, así que decidí cargar DBcache Tool, y en verdad que funciona. Lo pongo ON solamente para leer correos y noticias y se arranca cuando es necesario, limpiando la DBcache x completo al salir de estas aplicaciones. Lo que tengo para decirte es que en mi T|X demora algo más de 15 seg., aprox. 25 seg., pero sí que funciona.
Pregunta: Lo he dejado tal cual tu captura; el Ask at softreset, lo tienes destildado igual que en la captura?
Has modificado algo en este tiempo de utilizarlo?
Saludos y gracias.
PD: Aún no me le atrevo al UNcache de D.G
El “Ask at sofreset” no lo he activado, sin embargo si que lo he hecho con el “Clear at sofreset”, combinado con que todas las noches tengo programado un softreset a las 4.00, después de hacer una copia de seguridad con NVBackup. Así todas las mañanas tengo la DbCache defragmentada y lista para usar.
La verdad es que hace semanas que no llega a ejecutarse el DbCacheTool, ya que si no uso programas que consuman tanta RAM como el LJP o que tengan mal comportamiento, suele liberarse la DbCache usada al salir de la aplicación. Por eso te recomendaría sustituor Avantgo por Sunrise.
Al final lo más importante es utilizar programas ligeros, que es para lo que está pensada una Palm, y evitar monstruos de varios megas. Cuando hace falta ejecutar uno de esos que necesita toda la DbCache, hacemos un soft reset primero y arreglado.
Por Uncache no te preocupes. Lo peor que puede pasar es que algún programa quede sin activar las alarmas (preocúpate de añadir a la lista al menos los cuatro PIM principales y el reloj). En caso de que no te convenza, lo desactivas y todo vuelve a cargarse al inicio, como antes. Es imposible producir algún desperfecto irreversible.
He decidido probar la aplicación, y han pasado creo que 22 horas desde que la probé, y ya me ha causado varios soft-resets, en los cuales me restablece al launcher normal (parece que no se lleva muy bien con el Zlauncher), pienso amanecer haciendo pruebas para ver si logro que no me soft-resetee la Lifedrive, por lo mientras me estoy preparando para hacerle hard reset a mi palm, e ir probando aplicación por aplicación de las que tenía… :S
Saludos
El Zlauncher es un devorador de recursos. Si te fijas, al resetear la PDA quedan unos Mb menos de DbCache libres que usando el launcher normal.
Otra cosa que ayuda es programar un softreset diario por la noche. Así cada mañana te encuentras la PDA al máximo de memoria.
Buenas,
Muchas gracias en primer lugar por todo lo que me ha ayudado tu pagina.
Tengo una preugnta,
He instalado el Db Chache y…en teoria el Max alloc deberia ser muy grande no?? el mio es, aora, de 3703960 y free: 3716664
cuando en el db pongo on significa q ya lo hace automatico no?
tengo el nvback up con el reset automatico aunke realemten no se para q sirve muy bien. tengo q acer algo mas o tener algun programa mas para intentar evitar esos resets y esos cualgues…??
Muchas gracias.
Si lo tienes en ON, cuando los valores de Free o Max llegan a ser menores que los que configuras abajo, el programa se activa automáticamente.
Los resets hacen que la Palm se reinicie, arrancando con toda la DbCache libre, que luego los programas van ocupando otra vez poco a poco.