El Jueves, 2 de Septiembre de 2004 11:28, Christal escribió: > Hola a todos, > > Estoy teniendo un problema con un proceso que ejecuto y no se como > arreglarlo. > Trabajo con Mandrake 9.1. > Tengo un programa hecho en C que simplemente va revisando sus entradas por > el puerto serie y hace lo que tenga que hacer dependiendo de lo que lea por > el puerto... para hacer esto tengo que estar revisando constantemente el > puerto, asi que en la funcion principal del programa (main) tengo un bucle > que no sale hasta que no pulse "ESC".
No tengo ni idea de como se programa el puerto serie, pero tengo entendido que se abre el dispositivo y a partir de hay es un flujo normal. Si estoy en lo cierto puedes hacerle un select() para vigilar cuando tiene algo para leer. Eso reducira la CPU > Hasta aqui no hay problemas porque el programa hace todo lo que tiene que > hacer. El problema viene cuando, por ejemplo, llevo una semana trabajando > con el, que el programa imprime in "killed" por pantalla y finaliza. > Aqui es donde no se que debo hacer exactamente, pues no se como > controlarlo. He hecho un "top" para mirar el estado de la memoria y muestra > que el programa usa un 62% de CPU y un 40% de MEM. > Lo que estoy intentando es hacer un sync cada hora (lo he puesto en el > cron) para que cada hora se resincronice la swap, a ver si eso afecta en > algo y puede ayudarle a recuperar algo de memoria... Estas algo perdido, sync vuelca las caches de disco a disco. Como comprenderas el concepto de cache de swap es... imposible. Segun que nucleo tengas puedes tocar /proc/sys/vm/swappines. A menor valor, menos va a swap, 0 no va a swap nada, 100 casi cualquier cosa. Pero la solucion es usar menos memoria. Como se ha dicho ya, yo diria que es un fallo en el codigo, y mandar a swap no lo solucionara. > Tambien estoy > intentando iniciar el proceso con el comando "nice" para darle mas o menos > prioridad al proceso, a ver si asi consigo que no consuma tanto... ahora lo > he arrancado como "nice -n -19 ./comunicacion" para ver si dandole la > maxima prioridad consigo que no consuma tanto. Pero no se si asi esta bien > o deberia de darle la menor prioridad... con mas o menos prioridad cogera mas o menos CPU, pero no tiene nada que ver con la memoria, tardara menos en ocuparla, pero lo hara. > La cuestion es que de momento he revisado el top y ahora, que lleva 1h en > marcha, consume 60-63% de CPU y 1.8% de MEM. Pero no se si ira > incrementando o con esto lo podre controlar... > > Alguien sabe de esto? Cual puede ser una solucion? Lo estoy haciendo bien? > Si alguien necesita mas datos o lo que sea, por favor, que me lo pida que > gustosa se lo pasare! > > Muchisimas gracias de antemano! de nada