hello-boinc

在服务器上安装 BOINC 为科学贡献算力

📌 利用 BOINC 这个平台,把闲置服务器的资源用于科学计算

📦 使用 Docker Compose 安装,自带 Web 图形界面

关于 BOINC

伯克利开放式网络计算平台(英语:Berkeley Open Infrastructure for Network Computing,简称BOINC)是目前主流的分布式计算平台之一,由加州大学伯克利分校电脑学系发展出的分布式计算系统。原本专为SETI@home项目而设计,目前纳入的领域包括数学医学天文学气象学等。BOINC汇集全球各地志愿者的电脑或移动设备,提供运算能力给研究者。截至2017年3月,BOINC在全世界有约815,912台活跃的主机,提供约18.971PetaFLOPS的运算能力。

引用来源:BOINC - 维基百科,自由的百科全书

安装 BOINC 客户端

用 Docker Compose 安装

这里我用 Docker Compose 安装 BOINC,下面是 docker-compose.yml,把文件复制到服务器上,确保没有端口和文件冲突之后执行 docker-compose up -d 就可以启动容器了:

version: "2.1"
services:
  boinc:
    image: ghcr.io/linuxserver/boinc
    container_name: boinc
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - GUAC_USER=boinc	# 登录管理页面的用户名
      - GUAC_PASS=63bb1d581528b32bbf566c9628add02a	# 登录管理页面的密码
    volumes:
      - /home/boinc/data:/config	# 存放配置文件的位置
    ports:
      - 8080:8080
    restart: unless-stopped

需要注意的是,GUAC_PASS 是登录密码的 32 位 md5 值,这个随便上网上找个 md5 加密的网站就能生成,其他的配置项及含义可以查看 Parameters 这个页面。

因为我的机器的配置不好,也没有 GPU,所以直接用这个简单配置就行,如果你想用 GPU 加速之类的,需要根据 GPU Hardware Acceleration 这个文档进行调整。

Nginx 反向代理

上面的 docker-compose.yml 默认端口是 8080,可以自行修改,也可以使用反向代理进行代理。下面是我用的 Nginx 反向代理的配置文件,在 docker-compose.yml 里我用的是 11000 端口,也就是把 11000 端口反向代理到 /boinc/ 这个子目录下。

 location /boinc/ {
    proxy_set_header Host  $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $real_scheme;
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";
    proxy_pass http://127.0.0.1:11000/;
}

运行计算项目

下面主要介绍怎么运行项目,BOINC 中其他的功能比如统计等部分可以自己探索。

打开管理界面

打开 8080 端口对应的 Web 页面(或者你自己设的端口,或者反向代理后的地址),不出意外会打开一个需要输入用户名和密码的页面,输入在 docker-compose.yml 中设定的用户名和密码(密码是原密码,不是 md5),就能进入主界面了。

下面我已经运行了几个项目,所以和刚开始可能不太一样。

进入主页

建议在 View 菜单中设置成 Advanced View,这样看起来比较方便。

高级视图

选择想要贡献的项目

选择工具栏 Tools → Add projects... 添加项目。

添加项目窗口

点击查看部分项目的描述

生物学、医学

气象学、地球科学

物理、化学、天文学

数学

电脑、信息技术

我选择的是 Rosetta@Home 这个项目,本来是要选 World Community Grid,但是在下载项目的时候有一个 100MB+ 的文件下载不下来,所以只能放弃。

选好项目之后,让登录账号,如果没有就注册一个,然后一直下一步就行了。最后点 finish,BOINC 会自动下载所需要的资源,然后运行项目。如果你的服务器在国内,可能需要很长时间才能把项目下载下来,不过反正是闲置的服务器,不用太在乎花的时间,有贡献就行。

调整计算选项

在 Options → Computing preferences... 中可以调整 BOINC 资源占用的限制。

资源占用选项

除了上面的 CPU 的限制,后面的选项卡中还有内存和磁盘的限制,可以根据自己的需求进行调整。

解决问题

运行项目一段时间后服务器卡死

主要表现为 CPU 一直是 100%,内存接近 100%,磁盘一直在读取,并且无法通过 SSH 连接到服务器,服务器上的其他服务也处于无响应的状态,但是服务器可以被 ping 通。

这是因为机器的内存不足,用到了虚拟内存,所以很慢,尤其是 Rosetta@Home 这个项目,要占用很多内存资源。解决方法就是,把 BOINC 的计算占用调低一点,或者换个项目。

参考资料

Utterances 加载中 ...

Utterances 加载失败,请检查网络