APP下载

基于Docker的射电干涉阵软件系统敏捷封装与部署*

2019-01-24余程嵘卫守林

天文研究与技术 2019年1期
关键词:镜像容器处理器

余程嵘,王 威,戴 伟,邓 辉,王 锋,2,卫守林

(1.昆明理工大学云南省计算机技术应用重点实验室,云南昆明 650500;2.中国科学院云南天文台,云南昆明 650011;3.中国科学院国家天文台,北京 100101)

我国天文学家提出的明安图射电频谱日像仪(Mingantu Ultrawide Spectral Radio Heliograph,MUSER),可以实现在厘米-分米波段上同时对太阳进行高空间、高时间和高频率分辨率的观测,能更好地研究太阳的动力学性质[1]。明安图射电频谱日像仪由低频阵(MUSER-I)和高频阵(MUSER-II)两个子阵构成[2-3]。低频阵由40面4.5 m口径的抛物面天线及接收设备组成,在64个频点上成像,工作频率为0.4 GHz~2 GHz;高频阵由60面2 m口径的抛物面天线及接收设备组成,在528个频点上成像,工作频率为 2 GHz~15 GHz。

目前,明安图射电频谱日像仪硬件部分已建设完成并投入观测,为满足观测数据处理的需求,研究人员定制开发了一套软件系统[4]。但在实际部署和使用的过程中面临着以下问题:(1)由于用户的软硬件环境的差异,如Linux操作系统的不同发行版本CentOS,Ubuntu等,以及不同硬件的图形处理器驱动程序、不同版本的CUDA运行环境的搭建等,增加了系统部署安装的复杂性;(2)软件系统需要较多的Python包的支持,Python包之间的依赖关系较为复杂,即使有Python包管理工具pip或者其它工具的支持,对于非专业人员来说,增加了不少的工作量和难度;(3)软件系统在实际运行中还面临着软件版本和支持库的更新等问题,导致运行和维护成本较高。

针对这些越来越复杂的天文软件的部署问题,非计算机专业的科研人员迫切需要有一种更为简单,更容易部署的技术,帮助他们轻松地部署像明安图射电频谱日像仪这样的软件系统,以便快速便捷地开展科学研究工作。

1 相关技术及选型

目前,基于虚拟化技术进行应用的快速部署是比较通用的方法。虚拟化技术所提供的环境隔离与资源共享非常适合于复杂天文软件的应用场景,它通过隔离资源,加以抽象实现多用户共享,可实现资源最大化的利用率[5]。但当前主流的虚拟化系统,如VMware的ESX/ESXi、微软的Hyper-V等,均是价格不菲的商业产品。开源的OpenStack一直面临较难部署和管理的问题,其可用性、稳定性和易用性均有待考察。

通常情况下,虚拟机采用的虚拟化技术都需要提供完整的虚拟硬件环境,以便让一个完整的操作系统安装在虚拟机中。但这种方法存在一定缺陷:(1)多个虚拟机无法共享底层操作系统的功能;(2)在天文数据处理应用仅需某些软件和部分资源来运行的情形下,虚拟完整的操作系统会造成相当程度的资源浪费。因此,虚拟化技术虽然可以在一定程度上解决快速的天文软件部署与应用问题,但整体来看,这样的实现方法效率较低。

新出现的容器技术提供了一种新的轻量级虚拟化技术解决方案,其中Docker是当前应用最广的容器技术之一。Docker[6]是一种基于Linux容器技术的应用容器引擎,由dotCloud开源,让开发者将应用程序、所需依赖的运行库文件打包并移植到一个新的容器中,然后发布到运行着Linux操作系统的机器上使用(目前也支持Windows和Mac操作系统)。一方面,Docker拥有优秀的隔离性和可移植性,可以在保持环境一致性的同时,实现软件的敏捷部署;另一方面,Docker的易操作性可以降低学习曲线以及搭建维护成本。因此,Docker容器的出现可以很好地满足对复杂天文软件的部署搭建需求。

此外,Docker还可支持集群上的容器部署与运行,这就意味着可以通过Docker技术,实现单机软件的集群化部署,实现并行化的管理和运行[7]。本文重点讨论明安图射电频谱日像仪软件系统基于单机模式下的封装与部署的实现。

2 MUSER系统的封装与部署

明安图射电频谱日像仪数据处理系统可用于观测数据的在线实时处理和离线事后处理。系统整体功能结构主要包括核心数据处理、用户交互界面以及数据库。

软件系统有单机和集群两种工作方式,分别用于基于单机的少量数据处理和基于集群的实时大批量数据处理。其中,集群方式采用了OpenCluster框架[8],该框架用于对集群内的节点进行分布式任务调度。软件系统的数据处理程序采用Python语言编写,支持中央处理器和图形处理器两种计算模式。

2.1 软件封装

Docker作为一种特殊的容器化引擎,要实现软件环境的封装,只需在前期工作中按需求构建相应的软件镜像即可。目前支持两种方式构建镜像文件:

(1)按需求配置Dockerfile文件,根据此文件构建新的镜像文件;

(2)基于基础镜像启动容器,并在该容器内完成软件应用环境的部署,然后通过Docker命令将部署的容器提交保存为新的镜像文件。

通过两种方法的构建,可将完成的镜像文件上传至镜像仓库供使用者下载。

2.2 软件部署

软件的部署通过把镜像启动为本地容器实现,软件系统可基于中央处理器或图形处理器不同计算设备环境下运行,下面分别说明中央处理器和图形处理器两种模式下的启动方法。

2.2.1 中央处理器模式下启动镜像

在中央处理器模式下的镜像已被封装为完整的环境,可用如下命令直接启动镜像:其中,docker run表示启动镜像;museros:1.0是镜像名称;-ti表示启动以交互的方式进入某个容器;--rm表示退出时自动删除容器;/bin/bash表示从Shell终端启动。

2.2.2 图形处理器模式下启动镜像

与中央处理器模式不同,对于已经集成了图形处理器运行环境的镜像,要使Docker容器在图形处理器环境下运行,可使用--device命令将主机的图形处理器设备挂载到容器中,并启动容器,具体指令为

通过Docker技术对软件系统封装部署的总体框架如图1。

图1 总体框架Fig.1 The Overall Framework

3 功能与性能测试

通过上述步骤,提出了对明安图射电频谱日像仪软件系统在Docker容器上封装与部署的方法设计。本节讨论方法的敏捷性和可用性,然后设计实验,测试并比较软件系统分别在基于不同平台上的性能表现。

3.1 敏捷性

面对天文数据处理软件不断的更新和升级,当新的需求出现而进行软件升级时,其相应的依赖环境也要进行升级。利用Docker,可直接在原始版本的镜像启动的容器中进行软件更新和环境升级操作,再将测试好的容器提交为新版本镜像发布,从而实现对软件版本的敏捷化管理。

3.2 可用性

在主机负载不高的情况下,镜像文件可以在数秒内完成启动。主机可以通过容器默认开放TCP的22号端口与容器进行通讯,用户也可根据需求指定为其他的端口。Docker启动时在主机默认生成docker0网卡,所有的容器经docker0网卡发出数据,保证其网络可用性。Docker启动状态、容器状态以及docker0网卡信息如图2。

图2 Docker容器及网卡的状态Fig.2 The status of Docker container and network card

3.3 性能测试

在不同平台下对明安图射电频谱日像仪软件系统分别进行性能测试,并进行比较。软件系统可对观测到的可见度数据进行预处理,导出UVFITS数据文件,并通过洁化算法进行洁化,生成脏图和洁图,其中洁化处理运算量较大,对系统性能的要求较高,因此本实验选择比较洁化处理的时间。考虑到Docker本身是一种虚拟化技术,以及公有云在虚拟机中使用Docker的用法现状,因此除物理主机外,我们将加入虚拟机和基于虚拟机上的Docker容器作为实验平台,分别与物理主机上的Docker容器进行性能对比。

基于以上讨论,实验中把软件系统分别搭建于物理机、Docker容器、虚拟机以及虚拟机上的Docker 4种平台上,然后分别进行洁化处理并记录各自执行时间,最后进行比较。目前洁化算法已经分别在CUDA和OpenCL环境下实现[9-10],实验在两种计算模式下分别进行。

实验中使用KVM虚拟机,它是基于Linux内核(Kernel-based)的虚拟机。KVM支持通过透传(passthrough)方式在虚拟机内使用物理图形处理器设备,且相较其他虚拟机,KVM通过透传方式使用图形处理器设备的性能表现更好[11]。

a)实验环境:

实验环境如表1。实验采用日像仪在2015年11月1日12时8分49秒354毫秒的观测数据,原始数据经过处理保存为FITS标准天文格式文件,文件名为120849_354161240.uvfits。

b)实验方案:

(1)首先实验按软件系统的计算模式分为两组,第1组为基于OpenCL+CPU的洁化处理,第2组为基于CUDA+GPU的洁化处理;

(2)在每个计算模式组中再按主机平台分为两个组,分别为物理主机组和虚拟主机组。物理主机组使用物理主机和Docker容器作为实验平台,虚拟主机组使用虚拟主机和虚拟机上的Docker容器作为实验平台;

(3)在两个平台组中分别进行基于洁化算法生成512×512像素和1 024×1 024像素的洁图的实验,并分别记录执行10次的时间;

(4)相同计算模式下,首先比较各平台组内基于Docker容器和裸机下生成相同像素洁图的平均时间,然后比较物理主机组和虚拟主机组生成相同像素洁图的平均时间。

表1 实验环境Table 1 The lab environment

实验结果如图3和图4。

图3 OpenCL+CPU下不同主机的洁化时间对比Fig.3 Time performance comparison between different hosts based on OpenCL+CPU

图4 基于CUDA+GPU在不同主机上洁化处理的时间Fig.4 Time performance comparison between different hosts based on CUDA+GPU

以上实验结果可归纳为表2。

表2 实验结果表Table 2 Table of experiment results

(1)如表2,在基于OpenCL+CPU计算模式中,物理主机组中物理主机和Docker生成两种像素洁图的平均时间十分接近,各约为0.29 s和0.72 s;虚拟主机组的KVM虚拟机以及KVM+Docker生成两种像素洁图的平均时间也十分接近,各约为2.16 s和3.20 s。相比两个平台组在相同像素下的平均时间,虚拟主机组皆高于物理主机组2~3 s左右;

(2)在基于CUDA+GPU的计算模式中,物理主机组的物理主机和Docker生成两种像素洁图的平均时间十分接近,各约为0.18 s和0.37 s,虚拟主机组的KVM虚拟机以及KVM+Docker的平均时间也十分接近,各约为1.40 s和1.66 s。相比两组相同像素下的平均时间,虚拟主机组皆高于物理主机组1~2 s左右。

综上可知,无论哪种计算模式,虚拟主机组的处理时间均高于物理主机的Docker容器约1~2 s,可见Docker容器相较于虚拟机有较明显的性能优势;而物理主机上的Docker容器与物理主机之间处理时间相差几乎在毫秒级别,虚拟主机上的Docker容器与虚拟主机之间处理时间也十分接近,可见Docker容器可获得与当前主机几乎一致的处理性能。相较于虚拟主机而言,Docker容器可在物理主机上取得更好的性能,且与物理主机几乎一致。

4 结 论

明安图频谱射电日像仪已经使用国内自主研发的数据处理系统进行观测数据的处理。数据处理系统作为一个开源的天文数据处理软件,支持在不同的环境下安装部署,支持在高性能服务器集群以及单机环境下离线的数据处理,其功能正在不断地升级和完善。本文针对科研工作人员在安装和使用数据处理系统过程中面临的实际困难,以Docker容器技术为基础,实现了对系统的敏捷化构建和部署,并进行了相应的功能和性能测试。利用容器封装MUSER系统,可以提高开发和部署环境可重用性、可维护性以及快速持续集成的能力,改进软件开发者和使用者之间的协作,加快软件的调试升级过程。

在中央处理器和图形处理器计算模式下分别在容器、物理主机、虚拟机和虚拟机的容器上进行洁化的性能测试表明,运行在容器内的系统与在硬件虚拟机内相比具有较低的开销和更好的性能优势,和物理主机内运行的性能非常接近。使用容器技术封装软件系统,有效减轻了科研工作者的工作负担,保障了软件系统的开发和推广使用。可以预见,基于Docker容器技术进行封装与部署将是天文软件发展的必然趋势。

致谢:感谢国家天文台-阿里云天文大数据联合研究中心对本文工作的支持。

猜你喜欢

镜像容器处理器
Different Containers不同的容器
镜像
难以置信的事情
镜像
取米
镜像
镜像
Imagination的ClearCallTM VoIP应用现可支持Cavium的OCTEON® Ⅲ多核处理器
ADI推出新一代SigmaDSP处理器
呼噜处理器