Rosetta@Home – Ajustes de BOINC en Linux

Utilizar el tiempo muerto de CPU de nuestros equipos puede transformarse en algo productivo, sobre todo si colaboras con proyectos de computación distribuida como Rosetta@home

Correr BOINC en nuestros equipos puede generar un uso intenso de CPU, cosa que hace meditar a los administradores de sistema si vale realmente la pena arriesgar el desempeño de los servidores por una causa sin fines de lucro. Por lo anterior, debo aclarar que la idea es no correr la aplicación a tontas y a locas, sino evaluando la potencia real del equipo y limitando la carga para dejar espacio a las aplicaciones y servicios de producción.

Si contamos con máquinas virtualizadas, genial, aqui puedes usar una VM con límites propios y dejar corriendo a BOINC al 100%.

Para ejemplificar un uso distinto, me basaré en una máquina que no tiene gran carga de trabajo, solo unos sitios web y un samba. Es un Servidor con 2 procesadores XEON de 3 Ghz (8 núcleos en total). Como comprenderán, con solo 1 procesador tengo suficiente para operar, por lo tanto, utilizaré el segundo para colaborar con Rosetta.

Asumiendo que tenemos un registro en Rosetta@Home, solo me centraré en los ajustes de hardware con BOINC.

Instalamos el Cliente BOINC en Debian o sus derivados

apt-get install boinc-client

service boinc-client start

Posteriormente, limitaremos el porcentaje de uso de nuestra CPU a solo el 50%. Si nuestra máquina tiene 8 núcleos (2 procesadores de 4), ajustarlo al 50% equivale a usar solo 1 procesador, dejando el otro para las tareas de producción.

Editamos el archivo /etc/boinc-client/global_prefs_override.xml y lo dejamos asi:

<global_preferences>
<max_ncpus_pct>50.000000</max_ncpus_pct>
</global_preferences>

Con esto ya está ajustado a solo el 50% del poder de CPU. Evidentemente, si contáramos con un procesador de 4 nucleos y quisiéramos destinar solo uno de ellos al trabajo, tendríamos que poner el 25%, sin embargo al usar BOINC en máquinas pequeñas. lo que se suele hacer correrlo cuando las aplicaciones están en reposo, pero para asegurar una mejor respuesta al momento de retornar a las tareas normales, es limitar a lo mas al 75% de CPU, salvo que sea una máquina exclusiva para BOINC.

 

Otro parámetro interesante es la suspensión temporal de tareas por demanda, esto quiere decir que si las tareas normales de tu máquina, superan un porcentake definido de CPU, ya sea por una carga extraña o sobre demanda en tus aplicaciones, BOINC debe detectarlo e interrumpir sus tareas para dar paso al trabajo demandado por las demas aplicaciones.

 

Volvemos a ajustar el parámetro de suspensión al 75%. BOINC no tiene como saber si el uso en aumento de CPU llegado a este punto continuará creciendo, por lo tanto es momento de liberar recursos y detener el trabajo.

Volvemos a editar el archivo /etc/boinc-client/global_prefs_override.xml y lo dejamos asi:

<global_preferences>
<max_ncpus_pct>50.000000</max_ncpus_pct>

<suspend_cpu_usage>75.000000</suspend_cpu_usage>
</global_preferences>

Finalmente aplicamos los cambios sin reiniciar:

boinccmd --read_global_prefs_override

 

Una vez ajustada nuestra máquina, lo primero es adherirla a nuestra cuenta, para ello lo primero que necesitamos es el “account key”. Si no lo tenemos y solo recordamos el email y password de registro, lo obtendremos a través de la linea de comandos.

boinccmd --lookup_account http://boinc.bakerlab.org/ [email protected] password

boinccmd --project_attach http://boinc.bakerlab.org/rosetta account_key

Ejemplo:
boinccmd --project_attach http://boinc.bakerlab.org/rosetta bafad4a8e48953417bd15b2b92201ac7

Con esto, BOINC comenzará a descargar tareas y a cooperar con este interesante proyecto.

Para ver que ocurre en el servidor:
boinccmd --get_messages

Para ver que ocurre con mis tareas:
boinccmd --get_tasks

OPCIONAL

BOINC tiene varias modalidades de trabajo, si descarga 4 tareas y termina con 2, dejará en reposo los nucleos que ya terminaron, asi libera recursos, sin embargo si nos interesa que el sistema trabaje mas rápidamente, podríamos ajustar BOINC para que no descanse:

boinccmd --set_run_mode always

Para accelerar la actualización de tareas manualmente contra el servidor de Rosetta@Home, podemos hacerlo con el comando:

boinccmd --project http://boinc.bakerlab.org/rosetta update

Evitar que tareas se interrumpan por actividad en la red

boinccmd --set_network_mode always

Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

1 Comment
Inline Feedbacks
View all comments
mascarlos
mascarlos
9 years ago

Gracias por la esplicacion.

1
0
Would love your thoughts, please comment.x
()
x