APP下载

面向高性能计算平台的一站式服务系统

2024-02-21王一超韦建文文敏华林新华

软件导刊 2024年1期
关键词:跨平台高性能客户端

周 婧,王一超,韦建文,文敏华,林新华

(上海交通大学 网络信息中心,上海 200240)

0 引言

高性能计算系统已逐步成为高校科学计算和虚拟仿真类实验教学的主要实践平台,为高校科学研究与人才培养提供了重要支撑。这些平台承载了越来越多的虚拟仿真实验室,参与线上实验教学的师生数量与日俱增,对算力的需求不断攀升,高性能计算集群建设规模日益扩大[1-4]。为提高实验效率,平台除需为用户提供可靠的硬件环境外,还应提供灵活易用的软件环境及工具。上海交通大学自2013 年开始建设校级计算平台“交我算”,经过十年持续建设,已建成多个高性能计算集群,包括国内高校领先的计算平台π2.0、国内高校首个国产ARM 计算平台,以及国内高校一流绿色水冷集群“思源一号”,总聚合算力达到10PFLOPS(每秒千万亿次)。为统一管理校级异构集群(存在多套不同架构的集群)和异地集群(跨区域的集群)[5],“交我算”构建聚合门户,为用户提供统一的计算服务体验[6-7]。

在“交我算”平台构建初期,为使用高性能计算服务,用户需要经历相对繁琐的步骤。首先,用户不得不进行多端协同,即“交我算”网站前端与终端软件的协同。用户需要在“交我算”网站前端查询目标高性能计算集群的信息,如用于登录的域名,并手动输入用户名、密码和集群信息到终端软件中,再用终端软件登录和使用目标集群。在登录与使用过程中,用户可能遇到多种连接错误(包括客户端网络设置错误、账户状态异常、密码错误等),必须人工排查连接错误原因[8]。在调试完连接错误后,用户还需要在终端命令行中手动传输程序与数据文件,进而将目标程序提交到高性能集群的任务调度系统中。对于高性能计算用户,特别是非计算机专业用户,这一系列步骤非常具有挑战性。

为进一步提升 “交我算”高性能计算平台的用户使用体验,本文设计并开发了面向“交我算”高性能计算平台的服务系统(简称“交我算”服务系统),向用户提供集群登录与使用的一站式便捷服务,并能够自动检测连接错误原因,极大地简化了用户使用高性能计算服务的步骤,从而提升其完成高性能计算任务的效率。

1 服务系统需求与架构

当前,已有一系列工作提供了基于网页的一站式高性能计算服务系统,根据不同科学计算应用设计专门的任务提交、管理、查看的网页界面,如中国科学院的HPCP 与科学计算应用平台[9]、中国科技云门户管理系统[10]、于默奥大学的HPC2N[11]等,旨在降低高性能计算的使用门槛,然而,由于不同科学计算应用有不同的特点(如输入参数、输出格式、执行环境等),上述工作需要为不同应用针对性设计任务的提交、管理、查询等页面。

“交我算”平台也提供了类似基于网页的高性能计算平台服务。然而,当前计算机与人工智能快速发展,大量涌现的新应用需求接踵而至,通过定制网页服务已无法及时支持这些目标应用,仍有非常多的师生需要基于终端的方式管理高性能计算任务。因此,本文设计与实现的”交我算“服务系统通过简化终端模拟器的共性使用流程、优化界面与使用方式等提升用户体验。

1.1 服务系统需求

“交我算”服务系统以终端使用为中心提供一站式服务,根据长期服务高性能计算用户的经验,该系统需要满足以下需求:

(1)易用性。首先,客户端应提供终端软件功能,用户只需通过客户端即可完成高性能集群的登录与使用;其次,应尽可能简化用户使用终端的步骤,如提供自动信息补全、图形化用户文件传输等功能;最后,客户端应尽可能提供现代化、可配置的界面,支持用户根据自己的使用习惯自定义主题和快捷键,以支撑不同高性能应用的需要。此外,为了方便使用,当遇到集群连接错误时,客户端应能够自动识别导致连接错误的具体原因并向用户提示。

(2)兼容性。为满足不同用户的计算机和命令行环境使用习惯,客户端应具备跨平台能力,能够在主流的Windows、MacOS 和Linux 操作系统以及X86 或ARM 架构处理器上运行,并提供跨端的一致体验。

(3)高质量服务。服务系统应能向用户提供低时延与高吞吐量的服务。同时,为服务大规模用户,系统还应保证系统在峰值工作负载时的稳定性。

1.2 服务系统架构

“交我算”服务系统架构如图1 所示,主要包括客户端与后端。用户可借助客户端提供的命令行环境,通过SSH(Secure Shell Protocol)协议[12-13]登录并使用目标高性能计算集群。同时,客户端与后端使用HTTP 协议通信,支持用户登录与信息同步。目前,服务系统已集成了用户使用高性能计算所需的必要功能,提供了一站式高性能计算服务。

Fig.1 Architecture of “Counting-On-Me” service system图1 “交我算”服务系统架构

Fig.2 Architecture of “Counting-On-Me” service system client图2 “交我算”服务系统客户端架构

2 客户端设计与实现

“交我算”服务系统的客户端是一个跨平台桌面应用程序,可运行在主流操作系统与处理器架构上,向用户提供可配置的用户界面与快捷键设置,其架构如图 2 所示。一方面,该系统内置终端模拟器,提供终端功能,支持高性能计算集群的登录与使用,提供便捷的文件传输功能,并能够自动诊断连接错误;另一方面,其与后端协同管理用户信息,并能定时同步集群信息,实现信息的自动补全功能。

2.1 跨平台支持

2.1.1 跨平台编程语言技术选型

为提供良好的跨平台能力,该系统选择成熟的跨平台编程语言TypeScript 作为客户端的开发语言,基于以下两点考虑:第一,TypeScript 比Java 和Python 具有更成熟的开源前端生态,根据2023 年StackOverflow[14]统计,全世界使用量排名前5 位的前端框架均支持TypeScript 语言;第二,TypeScript 采用静态类型系统,可使开发者显式定义程序变量类型并在编译时检查,能有效降低代码产生BUG 的可能性,提升程序的可维护性。鉴于“交我算”服务系统客户端会长期作为用户访问“交我算”高性能平台的入口,需要长期维护和添加新功能,可维护性需求高,因此最终采用TypeScript语言。

2.1.2 跨平台桌面应用程序安装包创建

Electron[15]是一个支持TypeScript 的跨平台桌面应用程序框架,能够为桌面应用程序创建跨平台安装包。本文系统使用Electron 为不同处理器架构与操作系统组合创建对应的客户端安装包,提供了良好的跨平台能力。

2.2 终端模拟器技术选型

“交我算”服务系统客户端需要内置终端模拟器,以向用户提供终端软件的功能,因此需要对被集成的终端模拟器进行选型。基于TypeScript 的开源终端模拟器Tabby[16]是一款完善的终端模拟器,可提供现代化用户界面,且支持PowerShell、WSL、Git-Bash 和Cygwin 等多种命令行环境。同时,Tabby 具有高度可配置的特点,允许用户根据自身喜好个性化设置外观主题和快捷键,与“交我算”服务系统高可配置性的目标吻合。因此,本文系统将Tabby 集成进客户端,并复用其成熟的可配置外观主题和快捷键功能。

2.3 可配置功能

由于不同用户会使用不同操作系统的不同命令行环境,“交我算”客户端集成了Tabby 的高可配置特点,允许用户根据自身使用习惯选择界面主题、快捷键和命令行环境等,用户也可以定制具有配色、字体、窗口样式的主题。客户端对上述配置进行扩展,将它们以yaml 文件的形式保存,在客户端启动时会读取该配置文件以渲染页面。当用户通过配置界面修改主题时,修改也会体现在yaml 配置文件中。

图3 为用户yaml 配置文件的示例。可以看出,用户定义了常用快捷键,例如滚动屏幕、新建窗口等。用户还定义了终端样式,包括颜色主题和字体,其中颜色主题采用RGB 值指定了背景颜色。

Fig.3 Example of user yaml configuration file图3 用户yaml配置文件示例

2.4 用户与集群信息管理

“交我算”客户端支持用户登录已认证的高性能计算账户,并能够与后端进行信息同步,从而实现信息的自动补全,简化用户操作。其主要功能包括但不限于:①客户端支持用户SSH 私钥、客户端配置等文件的同步,当用户在不同计算机的客户端使用高性能计算服务时无需手动传输上述文件或重新配置即可直接使用,极大地方便了用户;②当用户需要输入集群信息,例如选择需要登录的高性能计算集群时,客户端会显示下拉菜单,其中包含可供用户选择的集群节点名称,用户只需点选所需登录的集群名称,客户端即可自动补全对应的信息(如集群域名);③登录集群时,客户端同样会显示下拉菜单,用户可以选择本地或在后端同步的SSH 私钥文件,从而实现私钥的一键选取。

2.5 便捷文件传输功能

在传统场景下,用户需要在终端中手动输入scp 命令以完成文件传输,同时需要手动输入源路径与目标路径。为使用户更方便地进行文件传输,“交我算”服务系统客户端支持基于SFTP(SSH File Transfer Protocol)协议的文件传输。SFTP 是一个基于SSH 的文件传输协议[17-18],提供文件存取、传输和管理等功能,并保证了上述功能的安全性。为使用户在使用SFTP 传输文件时快速定位目标路径,客户端支持图形化目录选取界面,用户只需通过鼠标点击即可选取目标路径。需要注意的是,在终端使用SFTP 向Linux 系统传输文件时存在易用性方面的问题,默认目标路径为系统的根目录,而大部分情况下用户希望将文件保存在自己的工作目录下,非Linux 系统用户可能缺乏该认识而难以找到自己的文件。为简化用户操作步骤,在用户登录集群初时,客户端会通过在终端中执行echo-e $(pwd)命令获取当前的工作目录——家目录(Home Directory),即操作系统中给定用户的默认文件存储位置。上述被记录的家目录会被设置为SFTP 目录选取界面的初始目录。

2.6 连接错误诊断

为帮助用户更清楚地了解SSH 连接失败或断开的原因,“交我算”服务系统客户端专门设计了连接错误诊断模块。该模块能够对SSH 连接错误进行分类诊断[19-21],并向用户提供详细报告。该功能涵盖了用户日常面临连接错误的92%。根据诊断时机,可以将连接错误分为以下3类:①连接前错误。指发起SSH 连接前可以被诊断出的错误;②连接失败错误。指发起SSH 连接失败时可被诊断出的错误;③连接断开错误。指SSH 成功连接但最终被断开的错误。SSH 连接错误分类诊断总体流程如图4 所示,按顺序分别检测连接前错误、连接失败错误以及连接断开错误。

Fig.4 SSH connection error classification diagnosis process图4 SSH连接错误分类诊断流程

Fig.5 Architecture of “Counting-On-Me” service system backend图5 “交我算”服务系统后端架构

Fig.6 Throughput test result of “Counting-On-Me” service system图6 “交我算”服务系统吞吐量测试结果

Fig.7 The illustration of user logging in and transferring files using the “Counting-On-Me” client图7 用户使用“交我算”客户端登录集群及传输文件

在用户发起集群登录请求前,客户端会首先检测连接前错误。连接前错误可进一步被细分为网络连接错误、未使用校园网错误和域名解析错误。对于网络连接错误,客户端会访问上海交通大学的若干公开域名,如果失败则认为是客户端网络未连接成功。在确认客户端正常连接网络后,客户端会访问上海交通大学的IP 查询服务,查询校园网IP 地址范围,并检测客户端IP 地址是否在查询的IP地址范围中。如果不在,则报告未使用校园网错误。如果客户端网络可用并且正在使用校园网(仅针对需要通过校园网访问的集群),客户端会尝试解析用户指定的服务器域名。如果无法解析,则报告域名解析错误。

在确保没有检测到连接前错误后,客户端会向服务器发起SSH 连接,并在连接失败的情况下诊断连接失败错误。首先,客户端会预置一个检测连接失败错误的时间阈值。如果用户已经输入密码并且在该时间阈值内仍无响应,则认为当前使用的节点过于繁忙,需向用户报告节点负载过高错误。否则,如果连接失败的原因为SSH 会话发起失败,则根据会话发起失败的异常信息向用户报告失败原因。如果会话发起失败的原因为登录认证失败,则向用户报告密码不匹配错误。如果原因为用户多次登录认证失败,则报告账号暂时封禁错误,用户由于输入密码错误次数过多而被封禁,需1 h 后重试。如果不属于上述任一种情况,则SSH 连接错误信息与网络有关,客户端向后端查询集群当前状态。如果目标集群属于不可用状态,则向用户报告集群停机错误;否则告知用户联系集群管理员,确认具体连接错误原因。成功连接集群后,如果在集群使用过程中连接异常断开,客户端会诊断连接断开错误。首先向后端查询当前用户状态,如果显示用户状态被冻结,则会报告对应错误并提醒用户发送邮件申请解封;否则向用户报告配置文件设置错误,提醒用户联系集群管理员重置出错的终端配置文件或SSH 脚本。

3 后端设计与实现

“交我算”服务系统后端主要由单机部署的HTTP 服务器和MySQL 数据库组成,架构如图 5 所示。HTTP 服务器采用成熟的Java 后端框架Spring Framework[22]、Hibernate[23]和JDBC[24]实现,这些框架能够极大程度地简化后端服务器的开发。数据库采用成熟的关系型数据库MySQL。

“交我算”后端数据库用于维护用户信息与集群信息。用户表的信息主要包括用户名、加密后的登录密码、SSH私钥文件、客户端配置文件、用户状态等;集群信息包括集群名、域名和集群状态等。由于集群状态为动态信息,为了维护当前不同集群的状态,后端会定期检查计算平台集群节点的网络是否能够正常连通,如果发现出现网络故障的集群,便会将对应的集群状态从“可用”修改为“不可用”。

为了同步信息数据,客户端会定时向后端发起查询请求,从而辅助客户端的信息自动补全功能。同时,后端的信息管理能够扩展到其他集群配置信息[25],使客户端支持对此类集群配置信息的查询,以使客户端支持更多功能。

4 性能测试与应用效果

4.1 性能测试

4.1.1 系统部署

将“交我算”服务系统后端部署在上海交通大学网络信息中心机房的单台服务器中。服务器硬件配置为24 核Intel(R)Xeon(R)Gold 5317 CPU,128 GB 内存以及Broadcom BCM5720 千兆网卡,操作系统为Ubuntu 18.04.6 LTS。

4.1.2 端对端时延测试

为验证“交我算”服务系统的性能,首先测试客户端从用户点击到接收请求结果的端对端时延。使用一台Windows 台式机运行客户端,并向后端发送5 000 次“用户/集群信息查询”请求,取平均值作为结果。测试结果显示,单次信息查询请求的平均时延为80.3 ms,验证了“交我算”服务系统能够提供较好的用户使用体验。

4.1.3 吞吐量测试

对“交我算”服务系统进行压力测试,使用HTTP 测试工具wrk[26]模拟并发用户的模拟峰值工作负载,主要测试后端处理并发请求的峰值吞吐量。将wrk 运行在一台与后端服务器相同配置的服务器上,与后端服务器之间的最大网络带宽为1 Gb/s。在测试时,不断增加模拟并发用户数量,直至吞吐量达到峰值。测试结果如图 6 所示,图中的每个性能点为5 次测试的中位数。随着并发用户数的上升,后端服务器最多可以在350 个并发模拟客户端请求下达到每秒7 138 请求的峰值吞吐量。此时,服务器的CPU 资源占用率大于90%,而网络带宽占用仅为609.68 Mb/s(未及最大网络带宽的1 Gb/s),因此后端服务器的CPU 处理能力成为瓶颈。根据测试可知,“交我算”服务系统足以应对目前高性能计算平台的用户规模。

4.2 应用示例

以纳米级电子结构计算和材料建模的科学计算应用Quantum ESPRESSO[27]为案例,介绍使用“交我算”服务系统客户端进行科学计算的流程。“交我算”服务系统支持用户基于终端命令执行管理任务,不同应用间的主要区别在于任务脚本的撰写,整体流程不变。因此,该流程只需替换用户的任务脚本即可适用于其他应用,如生物信息计算(如AlphaFold2[28]、BEDTOOL2[29])、原子分子工程计算(如ABINIT[30]、OpenFOAM[31])等科学计算工具以及基于常用机器学习框架(如Tensorflow[32]、PyTorch[33])的各类人工智能应用。

如图 7(1)(彩图扫OSID 码可见)所示,用户登录客户端后首先进入主页,并通过“配置与连接”按钮创建对集群的SSH 连接。主页会记录用户最近使用的连接配置,如第二行红框所选的“交我算平台:思源一号”表示最近使用的SSH 连接配置。在发起新连接时,用户可以在图 7(2)所示下拉菜单中选择“交我算”客户端缓存的集群信息,指定登录的集群。图 7(3)显示了创建连接时的密码输入界面,支持记录用户输入的密码或记录用于登录的密钥。如果连接失败,则会收到图 7(4)所示的连接错误诊断信息。如图 7(5)所示,用户SSH 连接成功后即可通过终端在集群节点上提交计算任务。如果需要传输文件,则点击SFTP 键,弹出图 7(6)的文件传输界面。“交我算”终端模拟器会检测当前目录位置,并支持用户从当前位置开始查找或传输文件。此外,界面还提供了创建文件夹、上传文件等按钮,帮助用户便捷地上传需要执行的任务脚本。

“交我算”平台使用Slurm 作业调度系统[34]管理高性能计算集群上的任务,用户可使用如图 7(7)所示的sbatch命令提交作业,其中qe_intel.slurm 为用户上传和指定运行的任务脚本。用户还可通过squeue 命令查询当前任务状态。最后,图 7(8)显示了任务结束后的输出文件目录结构,用户可使用命令行命令在终端查看结果,也可便捷地通过客户端的文件传输功能下载输出文件并在本地查看。

4.3 部署效果

“交我算”服务系统上线后,根据工单系统和微信群统计,用户汇报连接错误的频率显著降低,关于连接错误的用户咨询在所有咨询的占比从5%降低到1%,显著提升了用户(尤其是非计算机专业用户)对于高性能集群的使用效率与用户体验。

5 结语

本文针对高性能计算用户使用“交我算”高性能计算平台时遇到的步骤繁琐问题,设计并开发了“交我算”一站式服务系统。该服务系统具有跨平台客户端,通过集成终端模拟器提供集群登录和使用功能,并且具备现代化的用户界面。该系统支持高度可配置的主题配色和快捷键设置,能够自动补全用户所需填写的信息,简化用户向集群传输文件的过程,并能够帮助用户自动分析连接错误。测试结果与实际部署表明,“交我算”服务系统能够提供低时延与高并发的服务,并显著提升了上海交通大学师生使用高性能集群的体验。该系统对其他高校和科研机构的高性能计算机群运营亦具有一定的参考价值。

为进一步提升“交我算”服务系统的易用性,未来将在以下3 个方面进行系统优化与拓展:①增强软件在不同操作系统上的兼容性,并提供更多操作系统版本的支持服务;②添加与超算可视化平台的互联功能,方便用户在“交我算”系统上运行可视化程序;③集成集群的低效作业提醒功能,通过监测低效运行作业并及时通知用户以提高集群计算资源的运行效率。

猜你喜欢

跨平台高性能客户端
跨平台APEX接口组件的设计与实现
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
一款高性能BGO探测器的研发
高性能砼在桥梁中的应用
基于QT的跨平台输电铁塔监控终端软件设计与实现
基于OPC跨平台通信的电机监测与诊断系统
基于B/S的跨平台用户界面可配置算法研究
SATA推出全新高性能喷枪SATAjet 5000 B