Oct 31, 2016

SETI@home в Docker

BOINC - платформа, которая позволяет выполнять добровольные вычисления для различных проектов. Изначально создавался для проекта SETI@home.

Идея заключается в том, что можно задействовать часть ресурсов своей машины для распределенных вычислений некого проекта, например SETI@home обрабатывает сигналы с радиотелескопа (Аресибо) в поисках внеземной цивилизации, Rosetta@home вычисляет структуру белков и таких проектов огромное множество в самых разных областях. Обычно домашний/рабочий компьютер не загружен на 100% и какую то часть, к примеру 20% одного ядра можно спокойно отвести на эту задачу.

Что-бы не захламлять систему я ставлю boinc в виде Docker контейнеров. Вначале установим клиента-демона, который умеет принимать внешние команды:

Примечание

При помощи флагов Docker можно ограничить контейнер на использование только одного ядра на 50% загрузки --cpu-period=50000, --cpu-quota=25000, --cpuset-cpus="0,1". По умолчанию Boinc забирает все ресурсы.

$ docker run                \
       --name boinc         \
       -d                   \
       --cpu-period=50000   \
       --cpu-quota=25000    \
       --cpuset-cpus="0,1"  \
       laurentmalvert/docker-boinc --allow_remote_gui_rpc

После этого можно останавливать/запускать Boinc, как обычный Docker контейнер по его имени:

$ docker stop boinc
$ docker start boinc

Теперь нужно подключиться к проекту указав свой ключ, в моем случае это 13e79a77503e10517358c18698717413:

$ docker run --rm --link boinc:boinc laurentmalvert/docker-boinccmd \
    --host boinc \
    --project_attach http://setiathome.berkeley.edu/ \
    13e79a77503e10517358c18698717413

Что бы получить ключ, нужно сначала зарегистрироваться на сайте проекта http://setiathome.berkeley.edu, а затем выполнить команду:

$ docker run --rm --link boinc:boinc laurentmalvert/docker-boinccmd \
    --host boinc --lookup_account http://setiathome.berkeley.edu \
    <email-address> <password>

Отключиться от проекта можно командой detach:

$ docker run --rm --link boinc:boinc laurentmalvert/docker-boinccmd \
    --host boinc --project http://setiathome.berkeley.edu/ detach

Посмотреть статус вашего профиля:

$ docker run --rm --link boinc:boinc laurentmalvert/docker-boinccmd \
    --host boinc \
    --get_project_status

Comments

comments powered by Disqus