在闲置服务器上安装 BOINC 为科学贡献算力
关于 BOINC
伯克利开放式网络计算平台(英语:Berkeley Open Infrastructure for Network Computing,简称 BOINC )是目前主流的 分布式计算平台 之一,由 加州大学伯克利分校 电脑学系发展出的 分布式计算 系统。原本专为 SETI@home 项目而设计,目前纳入的领域包括 数学、医学、天文学 和 气象学 等。BOINC 汇集全球各地志愿者的电脑或移动设备,提供运算能力给研究者。截至 2017 年 3 月,BOINC 在全世界有约 815,912 台活跃的主机,提供约 18.971 PetaFLOPS 的运算能力。
引用来源: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… 添加项目。
点击查看部分项目的描述
生物学、医学
Docking@Home—研究更深入的蛋白质键结和反应的原子等级构造和细节,并借由其研究结果来研发药物以治疗人类疾病,目前已停止运作。
DrugDiscovery@Home—研发药物以治疗人类疾病,目前已停止运作。
Malaria Control—模拟疟疾的影响及控制,目前已停止运作。
Predictor@home—预测蛋白质的结构,目前已停止运作。
Proteins@home—推论DNA的次序,目前已停止运作。
GPUGRID.net,存于互联网档案馆—研究分子生物动力学相关的研究,主要运行环境为支持CUDA的 NVidia GPU。
Rosetta@home—研究蛋白质的折叠。
SIMAP(Similarity Matrix of Proteins)- 一个蛋白质同源计算序列并可以对这些序列数据提供专业的检索工具的数据库,目前已停止运作。
POEM@HOME—利用能量法来研究蛋白质的结构,目前已停止运作。
MindModeling@Home—研究人类脑部的认知科学。
Superlink@Technion—帮助科学家研究人类基因及其异常所产生的疾病,目前已停止运作。
The Lattice Project—美国马里兰大学的研究生物信息学领域相关的分布式计算平台,目前已停止运作。
DNA@Home—研究有关生物中 DNA 的基因调控作用,目前已停止运作。
FightNeglectedDiseases@Home(FiND@Home)
气象学、地球科学
Climateprediction.net(CPDN)—预测廿一世纪的气候。
地震捕手网络(Quake Catcher Network)—利用分布在全球各地电脑的传感器来侦测和研究地震现象。
物理、化学、天文学
Einstein@Home—搜索脉冲星的引力波。
Cosmology@Home—研究宇宙的模型及其相关的物理天文学信息。
Leiden Classical—模拟在经典物理环境下的各种分子和原子。
NanoHive@Home—模拟和研究奈米分子的结构系统和特性,目前已停止运作。
Orbit@home—计算近地小行星的轨道路径,以预防其碰撞地球而对地球造成损害,曾经由于缺乏资金已暂停运作,已在 2014-15 年恢复运行。
μFluids@Home—模拟微重力和微流体力学问题的两相现象,目前已停止运作。
Milkyway@home—研究银河系的重力波,支持 NVidia CUDA 及ATi的显卡运算。
Spinhenge@home—研究纳米磁性分子的物理特性,目前已停止运作。
BRaTS@home—进行引力波束追踪的相关计算,目前已停止运作。
Hydrogen@Home—研究以氢作为动力的干净能源,目前已停止运作。
SLinCA@Home—研究物理及材料科学领域。
数学
- ABC@Home—尝试解决ABC 猜想。
- Chess960@Home—研究菲舍尔任意制象棋的开局理论并创建巨型的国际象棋棋局数据库。
- NQueens@home—解决国际象棋的N 皇后问题,目前已停止运作。
- PrimeGrid—尝试将巨大的数字进行因式分解,查找人类未知的质数。
- Rectilinear Crossing Number页面存档备份,存于互联网档案馆—研究平面中最少的交叉数问题,目前已停止运作。
- RieselSieve—查找 k*2^n-1 形式的素数,显示 k=509203 是最小的黎瑟尔斯数,目前已并入 PrimeGrid 项目中。
- Collatz Conjecture—研究考拉兹猜想。
- NFS@Home
- Sudoku project—研究数独问题,目前已停止运作。
- Ramsey@Home—研究拉姆西数,目前已停止运作。
- Reversi—研究黑白棋游戏,目前已停止运作。
- WEP-M+2 Project—使用 WEP 算法对 2^p+1 进行因式分解。
- Sudoku@vtaiwan—由台湾的交通大学推出的计划,研究数独问题,目前已停止运作。
- DNETC@HOME
电脑、信息技术
- World Community Grid—由IBM主持,主要目的为利用分布式计算来帮助查找人类疾病的治疗方法,和改善人类生活的相关研究。
- AQUA@home—帮助设计量子电脑,目前已停止运作。
- BURP—处理及创作三维动画。
- DepSpid—互联网搜索器,目前已停止运作。
- EDGeS@Home
- Enigma@Home—尝试破解第二次世界大战时由恩尼格玛密码机发送的原始消息。
- HashClash
- Project Neuron—测试 BOINC 框架,目前已停止运作。
- SHA-1 Collision Search Graz—密码学:查找SHA-1碰撞,目前已停止运作。
- VGTU@Home页面存档备份,存于互联网档案馆—软件测试:提供分布式计算平台,改善 BOINC。
- IBERCIVIS—提供西班牙科学研究的分布式计算平台。
- DistrRTgen—利用 BOINC 的分布式运算产生彩虹表。
- SZTAKI Desktop Grid—搜索广义二进制数系。
- yoyo@home—利用 BOINC 的封装技术将现有的分布式计算项目引入到 BOINC 平台,支持PS3运算。
- Pirates@home—测试 BOINC 项目。
- XtremLab—研究并改善网格计算,包括 BOINC 平台,目前已停止运作。
我选择的是 Rosetta@Home 这个项目,本来是要选 World Community Grid,但是在下载项目的时候有一个 100MB+ 的文件下载不下来,所以只能放弃。
选好项目之后,让登录账号,如果没有就注册一个,然后一直下一步就行了。最后点 finish,BOINC 会自动下载所需要的资源,然后运行项目。如果你的服务器在国内,可能需要很长时间才能把项目下载下来,不过反正是闲置的服务器,不用太在乎花的时间,有贡献就行。
调整计算选项
在 Options → Computing preferences… 中可以调整 BOINC 资源占用的限制。
除了上面的 CPU 的限制,后面的选项卡中还有内存和磁盘的限制,可以根据自己的需求进行调整。
解决问题
运行项目一段时间后服务器卡死
主要表现为 CPU 一直是 100%,内存接近 100%,磁盘一直在读取,并且无法通过 SSH 连接到服务器,服务器上的其他服务也处于无响应的状态,但是服务器可以被 ping 通。
这是因为机器的内存不足,用到了虚拟内存,所以很慢,尤其是 Rosetta@Home 这个项目,要占用很多内存资源。解决方法就是,把 BOINC 的计算占用调低一点,或者换个项目。