Ubuntu Server 安装 BOINC

本文最后更新于:2023年11月19日 下午

前言

muzing的杂货铺 所使用的云服务器于最近到期,以包年付费方式购置了一台新的服务器迁移站点,并借机在新的服务器上做一些新的尝试。根据经验,仅运行 Nginx 静态网页服务,双核服务器的 CPU 占用率长期低于 10%,不如将闲置的算力投入到一些更大的事业中去——BOINC 上的科学项目。

本文详细记录了在一台操作系统为 Ubuntu Server 22.04 的 VPS 上安装运行 BOINC 程序,并通过本地电脑图形化方式远程控制的过程。

BOINC 简介

伯克利开放式网络计算平台(英文 Berkeley Open Infrastructure for Network Computing,简称 BOINC,读作 /bɔɪŋk/)是一个用于志愿计算(一种分布式计算)的开源中间件系统[1]。它最初是专为 SETI@home 项目设计,后来发展成为涉及医学、分子生物学、数学、语言学、气候学、环境科学和天体物理学等诸多领域各种项目的平台。BOINC 将全球各地志愿者提供的电脑或移动设备的算力汇聚,提供给这些项目的研究者使用。

BOINC logo

截至 2021 年 11 月 16 日,BOINC 作为高性能志愿计算平台,在全球范围内汇聚了 34,236 名活跃参与者和 136,341 台活跃计算机,平均每天处理 20.164 PetaFLOPS。若将其视为一台超级计算机,则其处理能力位居世界第 21 位。

服务器端安装与配置

安装

官方 Wiki 文档:Installing BOINC on Ubuntu

云服务器[2]使用的操作系统为 Ubuntu Server 22.04 LTS,可以直接通过 apt 安装 BOINC 运算服务。由于服务器并没有 GPU 和图形界面,所以无需安装 GPU 支持包和 boinc-manager 图形界面管理器。

虽然可以直接在 Ubuntu 官方仓库中找到软件包 boinc-client,但还是建议先手动添加 PPA 源,往往可以安装更新的版本:

1
2
3
4
5
6
7
8
9
10
# 添加 PPA 源
# 注意 jammy 是 Ubuntu 22.04 版本的代号,其他版本需要更换对应的代号
sudo add-apt-repository deb https://ppa.launchpadcontent.net/costamagnagianfranco/boinc/ubuntu jammy main
sudo add-apt-repository deb-src https://ppa.launchpadcontent.net/costamagnagianfranco/boinc/ubuntu jammy main

# 更新软件包列表
sudo apt update

# 安装 BOINC 客户端,会同时注册为服务
sudo install boinc-client

管理服务

安装成功后,BOINC 以名为 boinc-client.service 的服务方式运行,可以通过 systemctl 命令进行管理。常用命令如下:

1
2
3
4
5
6
7
sudo systemctl status boinc-client.service    # 显示状态,按键盘Q键退出
sudo systemctl start boinc-client.service # 启动服务
sudo systemctl restart boinc-client.service # 重新启动服务
sudo systemctl stop boinc-client.service # 停止运行
sudo systemctl reload boinc-client.service # 重新加载配置文件
sudo systemctl enable boinc-client.service # 添加至开机自启动
sudo systemctl disable boinc-client.service # 取消开机自启动

设置远程连接密码

官方 Wiki 文档:Controlling BOINC remotely

boinc-client 的配置文件位于 /etc/boinc-client 目录中,主要包括如下数个文件:

文件名 描述 备注
cc_config.xml BOINC 核心客户端最小配置文件 详情参考Client configuration
global_prefs_override.xml 全局计算参数偏好 该配置优先级大于所有在项目中设置的计算参数;可以通过 BOINC Manager 修改。
config.properties 配置文件 可以在这里修改数据存储路径。
gui_rpc_auth.cfg 图形界面连接密码 在此文件中直接以纯文本形式输入的内容,将作为远程连接时的密码。
remote_hosts.cfg 远程主机列表 在该文件中列出的 IP 地址被视为信赖地址,允许这些远程主机通过图形界面控制本机的 BOINC 客户端。

BOINC Client 的远程图形界面管理默认以白名单方式运行,也就是只有在 remote_hosts.cfg 文件中列出 IP 地址/域名的主机才有资格控制当前机器。这种默认行为适合在局域网环境内由一台装有 Manager 的机器控制多台运行有客户端的机器、所有机器都有固定局域网 IP 的场景,但不适用于用本地电脑通过公网远程连接控制云服务器的场景。

为允许来自任何机器的远程控制,需要编辑 /etc/boinc-client/cc_config.xml 配置文件,添加 allow_remote_gui_rpc 配置项:

1
2
3
4
5
6
7
8
9
<cc_config>  
<options>
<allow_remote_gui_rpc>1</allow_remote_gui_rpc>
<!-- 其他配置项... -->
</options>
<log_flags>
<!-- 日志配置项... -->
</log_flags>
</cc_config>

安全起见,还应设置远程控制密码。直接以纯文本格式编辑 /etc/boinc-client/gui_rpc_auth.cfg,将密码写入并保存即可。

1
sudo vim /etc/boinc-client/gui_rpc_auth.cfg  # 编辑远程控制密码

注意阿里云等服务商一般都为云服务器设置了防火墙,还需要在防火墙配置中打开方向的 31416 端口。

本地图形界面管理

安装 BOINC Manager

由于服务器没有图形界面,所以需要在本地具有图形界面的电脑上安装 BOINC Manager 并远程连接,来对 BOINC 进行管理操作。

前往 BOINC 软件下载页面,下载安装适合本地电脑的客户端软件。

BOINC 下载页

对于各 Linux 发行版,亦可通过包管理器安装:

1
2
3
4
5
# Arch Manjaro
sudo pacman -S boinc

# Ubutu Desktop
sudo apt install boinc-manager

完成安装后,启动 BOINC Manager 应用程序。在菜单栏的「视图」菜单中找到「高级视图…」选项,将 BOINC Manager 切换至高级视图模式。

BOINC Manager 默认视图模式

BOINC Manager 高级视图模式

远程连接

在「文件」菜单中点击「选择计算机」,输入服务器的公网 IP 地址以及刚才设置的密码,进行连接。

选择计算机

连接成功后可以在右下角状态栏中看到主机名称(IP 地址)及 BOINC Client 版本号。首次连接时会弹出选择项目的对话框,而成功加入项目并开始计算任务后的界面如下所示。

连接成功后的界面

加入项目

一切都准备就绪,是时候加入一个激动人心的项目,并开始做出自己的点滴贡献了!首次启动和未加入任何项目时会自动弹出添加项目的对话框,也可以在「工具」菜单中找到该选项。

添加项目

在「添加项目」页面可以按分类查看目前 BIONC 上所有支持当前系统(Linux)的项目,涉及领域非常广泛,组织方有高校、研究机构、独立组织等。可以复制项目网址到浏览器中查看对应项目的详情。选择好感兴趣的项目后,点击下一步,依提示使用邮箱地址完成账号注册[3],自动打开对应的项目网站进行进一步设置。

为项目注册账户

在项目网站中进一步配置账户

对于同时在多个设备上参与多个项目等复杂需求,还可以通过选择「使用账户管理器」来实现。

账户管理器

配置计算参数

可以在两个位置配置计算参数。其一是在项目网站的个人页中设置。其二是优先级更高的本地设置,可以在 Manager 的「选项」菜单中找到「计算参数设置」。在此界面的修改,将会保存到配置文件 /etc/boinc-client/global_prefs_override.xml 中。

本地计算参数设置

例如,此机器为双核 CPU,限制 BOINC 最多使用 50% 的 CPU 数量和 100% 的 CPU 时间,也就是让一个核心一直保持计算,另一个核心空闲而可以处理其他服务。而当其他任务增加、占用 CPU 超过 15% 时就暂停 BOINC 计算任务,优先处理,确保不会影响服务器的突发性能。

注意并非所有选项都可以直接在 BOINC Manager 中设置,可能还需要到项目网站中调整个人账户的设置。比如 PrimeGrid 项目下有多个子项目,需要在项目网页的「个人账户」页面找到 PrimeGrid参数设置,然后在其中调整期望参与哪些子项目,使用 CPU、GPU 硬件设备情况等项目参数。

脚注

  1. 简介来自 Wikipedia条目 BOINC
  2. 本文中的「服务器」是指由阿里云、腾讯云等服务商提供的云服务器 VPS。从 BOINC 项目的角度,云服务器上运行的 boinc-client 是一个客户端进程,与项目的服务端通信,接收分配的任务、返回计算结果等。
  3. 注册账号是和具体项目绑定的,如果想参加多个项目,则需要前往每个项目的网站分别注册账号。

Ubuntu Server 安装 BOINC
https://muzing.top/posts/3f34d8a6/
作者
Muzing
发布于
2023年11月18日
更新于
2023年11月19日
许可协议