rtorrent funcionando en mi Raspberry Pi

19 junio, 2012

Por fin, después de una larga espera, recibí, hace una semana, mi Raspberry Pi, ese minúsculo ordenador del tamaño de una tarjeta de crédito que se alimenta con un cargador de móvil y con un precio más que asequible. Cuando lo vi anunciado en su día pensé: «podría utilizarlo como cliente rtorrent y apagar mi ordenador de sobremesa y dejar de gastar un montón de electricidad.» Así que, nada más recibirlo, me puse manos a la obra para dejarlo funcionando.

Lo primero que hice fue activarle el servicio ssh.Ha sido la única vez que lo tuve que conectar a una televisión. Una vez funcionando como servidor ssh no he tenido que volver a conectarlo a la televisión, todas las conexiones las he hecho por ssh. También le configuré tightvnc para poder conectarme a él en modo gráfico, aunque rara vez lo he hecho. Y por si acaso le instale Webmin para poder configurarlo vía web.

Una vez hecho todo esto le instalé screen y rtorrent. Screen sirve para poder ejecutar rtorrent en una consola en segundo plano a la que te puedes conectar por ssh desde cualquier otro ordenador. La ventaja que tiene sobre la consola normal es que si cierras la sesión ssh la consola sigue corriendo en segundo plano a la espera de que vuelvas a conectarte. Todo esto lo aprendí en el artículo del, por desgracia, ahora inactivo blog Tuxpepino. Recomiendo su lectura a todo aquel que quiera montar en su Raspberry o en cualquier máquina con linux un sistema similar al que yo he montado.

Después de instalar sin problemas tanto screen como rtorrent vía aptitude, el siguiente paso fue conectarle un disco duro externo. Por supuesto tuve que conectarle un disco externo con su propia fuente de alimentación, ya que los USB de la Raspberry no son capaces de alimentar a un disco duro externo sin alimentación. El cacharrillo no da para tanto.

Una vez conectado el disco y montado arranqué el rtorrent y ¡tachán! parecía que funcionaba. Puse a compartir algunas cosillas y a descargar algunas otras y durante unos minutos todo fue bien, hasta que de repente perdí la conexión por ssh. Volví a intentarlo una y otra vez y continuamente lo mismo: funcionaba unos 5 minutos y el raspberry se quedaba completamente bloqueado. ¡Vaya chasco!

Me puse a buscar en Internet cuál podía ser el problema y por suerte di con la siguiente página (en inglés): http://chri.stophr.be/node/228

Aquí explican cuál es el problema: al parecer el kernel que viene con la distribución por defecto (3.1.9) tiene un bug que hace que no sea capaz de manejar conexiones concurrentes en el bus que gestiona la tarjeta de red y los puertos USB, lo que hace que el sistema se bloquee. La solución la explican en la misma página y pasa por actualizarse a un kernel superior. Seguí los pasos de la página y con más miedo que vergüenza actualicé al kernel 3.2.19. Volví a probar rtorrent y ¡funcionaba! ¡Ya no se bloqueaba a las 5 minutos! ¡Gracias Cristophe por tu solución!

Pero a las pocas horas volví a tener problemas, el rtorrent se cerraba con un mensaje diciendo que había sido killed por el sistema operativo. Volvía a iniciar rtorrent y a las pocas horas volvía a ocurrir lo mismo. Rebuscando en internet vi que era porque el sistema se había quedado sin memoria RAM y para evitar colgarse había matado el proceso del rtorrent. ¡uf, más problemas! En el link anterior también explican como cambiar la configuración oficial de la raspberry para que use el sistema utilice el máximo posible de memoria ram: 224 Mb, dejando el resto para el procesador. Seguí los pasos que son muy sencillos y volví a probar con 224 Mb… y lo mismo. Ni con el máximo posible de memoria a su disposición el Raspberry era capaz de soportar rtorrent durante más de unas horas.

Me puse a buscar páginas que explicaran como optimizar rtorrent para máquinas con pocos recursos y encontré algunas cosas. En primer lugar modifiqué mi fichero .rtorrent.rc para añadirle la siguiente línea:

max_memory_usage = 176160768

Esa línea lo que hace es limitar a 168 Mb (168*1024*1024 = 176160768) la memoria que rtorrent pude utilizar. 168 Mb son el 75% de las 224 MB que el sistema tenía ahora libre, así que me parecía una buena idea configurarlo así, pero nada, a las pocas horas el sistema operativo volvía a matar el proceso de rtorrent. Buscando en varias páginas, la verdad es que han sido tantas que no recuerdo ya cuales, encontré que en máquinas con recursos limitados era recomendable restringir el número de conexiones de subida y de bajada. Asi que además de la línea anterior añadí las siguientes líneas:

max_pers = 10

max_downloads_global = 30

max_uploads = 5

max_downloads_global = 30

max_downloads_global = 30

Reinicié el rtorrent y ¡lleva ya más de 24 horas funcionando sin bloquearse!