参与志愿科学计算:boinc
本文介绍一种最为常用的参与志愿计算的方法——使用boinc,即 伯克利开放式网络计算平台(Berkeley Open Infrastructure for Network Computing) ,来利用自己空闲的计算机/服务器给科学的发展贡献一些微末的力量。愿涓涓细流可汇成江河湖海。
当然也可以用来在必要时让电脑兼职电暖器(bushi)
本文作者仅在Ubuntu和Termux(Android上的终端模拟器)使用过boinc,如读者知晓其他平台上的使用方法和注意事项,欢迎在下方评论区交流。
注册账号
为了参与不同的项目,我们首先需要注册项目的账号。下文以www.worldcommunitygrid.org 和 scienceunited.org 为例,直接上官网注册账号即可。更多的项目可以参考Boinc的官网:https://boinc.berkeley.edu/projects.php
Science United 似乎是 Boinc 官方制作的一个平台(同为 UCB 设立),可以分配多个平台的计算任务,但作者个人使用中感觉任务分发的优先级似乎并不高:World Community Grid 也加入了 Science United,但我几乎没有在 Science United 的账号下被分配到 World Community Grid 中的任务,与此同时另一台机器上的 World Community Grid 账户满负荷运行。
安装
Ubuntu/Debian
直接 sudo apt install boinc-client
。之后 sudo service boinc-client start
即可。
如使用中有报错
Can't get RPC password: /var/lib/boinc-client/gui_rpc_auth.cfg exists but can't be read. See https://boinc.berkeley.edu/gui_rpc.php
,修改权限如下即可:
1 sudo chmod 644 /etc/boinc-client/gui_rpc_auth.cfg
Termux
安装boinc:
apt install boinc
(因为没有service所以只能这样确保后台运行)开一个screen,创建一个单独的文件夹
$boincDir
,之后运行boinc -dir=$boincDir
- 第一次运行可能失败,需要在
$boincDir
下chmod 644 gui_rpc_auth.cfg
- 此后运行
boinccmd
务必到$boincDir
下运行,不然会报错
- 第一次运行可能失败,需要在
Arch Linux
安装boinc:
sudo pacman -S boinc
启动服务:
sudo systemctl enable --now boinc-client.service
在一般情况下默认的
$boincDir=/var/lib/boinc
添加项目到计算机
使用boinccmd添加项目:
www.worldcommunitygrid.org
boinccmd --lookup_account http://www.worldcommunitygrid.org <username> <password>
测试是否能连接到project并获取account keyboinccmd --host localhost --project_attach http://www.worldcommunitygrid.org <Account Key>
添加项目,将自动在后台下载文件、运行。
如果使用的termux,必须在
$boincDir
下执行上述命令,否则报错。
scienceunited.org
- 添加项目需使用
boinccmd --join_acct_mgr https://scienceunited.org <username> <password>
- 本项目需要比较新的bionc,截止2021年10月20日,暂时不能直接用ubuntu上apt安装的bionc运行(7.9.3 x86_64-pc-linux-gnu),但可以用termux上的运行(7.16.16 aarch64-android-linux-gnu)
- 似乎会覆盖上面www.worldcommunitygrid.org的项目,因此在链接这个项目后应当重新链接。
常用查看状态命令
1 | # 查看状态 |
调整设定
根据个人的考虑,可以设置科学计算的运行强度与时间分配,确保不会影响正常占用。
方法一:在项目网站上设置
www.worldcommunitygrid.org
Account>>Profile and settings>>Devices>>Device profiles 可以选择修改默认profile或新建profile。之后到 Account>>Profile and settings>>Devices>>Device management 选择具体的设备来修改配置即可。
scienceunited.org
方法二:修改 boinc 本地设置
通过新建并修改/etc/boinc-client/global_prefs_override.xml
文件(或者$boincDir/global_prefs_override.xml
),可以本地覆盖项目网站设定的选项。这个设定是全局的,不会因为项目的改变而改变。
具体参数参考:https://boinc.berkeley.edu/trac/wiki/Prefs2
以及:https://boinc.berkeley.edu/trac/wiki/ProjectOptions
对于global_prefs_override.xml
的具体描述:https://boinc.berkeley.edu/wiki/Global_prefs_override.xml
另有一个链接的描述比较老旧,不少已经不可用:https://boinc.berkeley.edu/trac/wiki/PrefsOverride
常用的配置如限制cpu使用量、使用核心:
1 | <global_preferences> |
修改完参数后需要重启boinc,或者使用这个命令读取配置文件:
1 | boinccmd --read_global_prefs_override |
修改完配置后亦可进入top/htop/btop中检查一下进程是否正常地开始运行。
性能调校
在VPS上性能调校主要是针对部分厂商的cpu使用量限制来定,比如bandwagon的一些VPS只允许每个小时内使用量不超过1核的25%,不然之后一个小时内会限制到上述水平,之后再恢复;这种情况下,使用上述两个参数限制即可。
对于Termux(Android 平台),我们需要考虑到手机在长期高负荷运行下的稳定性问题:笔者个人使用Pixel 2( Snapdragon 835, 4大核4小核) 在使用3个以上核心时大概只能持续一天左右,必定会遇到未知原因的崩溃(表现为Termux整个被杀掉)。
一阵子之后突然开悟了:崩溃的原因是内存不足。Rosetta项目单个进程能占用150M左右的内存,开八个直接吃掉1.2G,稍有波动即达到内存极限,被杀掉情有可原。
所以后来的处理方式是不参加Rosetta项目(在scienceunited.org上可以勾选排除掉)。
为了确保温度不要过高,使用了如下的配置:
1 | <global_preferences> |
Note: 根据测试,boinc总会优先使用大核