三种GNSS数据下载方法对比分析

2022-09-04 06:47吴汤婷梁乔陈本富卢立果
全球定位系统 2022年3期
关键词:量级线程服务器

吴汤婷,梁乔,陈本富,卢立果

( 1. 东华理工大学 资源与环境经济研究中心, 南昌 330013;2. 东华理工大学 测绘工程学院, 南昌 330013;3. 桂林理工大学 广西空间信息与测绘重点实验室, 广西 桂林 541006 )

0 引 言

高精度全球卫星导航系统(GNSS)数据是定位、导航和授时(PNT)服务的前提和基础,对最终服务精度的好坏起决定性作用. 在PNT智能化服务大背景下[1],伴随高精度数据解算工作的深入,GNSS数据的重要性愈加突显. 一方面,GNSS的服务范围不断拓宽,已是部分传统技术手段的重要替代技术[2],相关数据解算成为业内人员的日常工作;另一方面,GNSS自身的发展和完善,促进GNSS数据在种类和数量上迅速增长,被广泛应用于电离层、对流层、参考框架、地球自转和地壳运动等研究[3-7]. 高精度GNSS数据主要来源于国际GNSS服务(IGS)和连续运行参考站(CORS),供用户下载使用.

伴随用户对GNSS数据的需求急剧增长,如何高效获取大批量GNSS数据成为高精度PNT服务的首要考虑问题. 物理层面上,可通过提升信道带宽来加快文件下载速率,但这无疑为用户带来更高的成本;技术层面上,操控多台计算机共同执行相同下载任务能有效缩短耗时,不足在于占用大量计算机资源. 因此已有众多学者对如何高效下载GNSS数据进行研究,主要集中在基于单线程下载的软件研发,对多线程和多协程下载方法涉及较少[8-11]. 因此,本文以自研软件为平台,对单线程、多线程和多协程三种下载方法的性能进行比较分析,为相关GNSS数据下载软件开发提供参考和借鉴.

1 GNSS数据下载方法

GNSS数据主要存储于目标IGS数据中心和CORS对应的服务器内,用户可通过网络请求的方式获取. 在数据下载过程中采用单线程、多线程和多协程等方法,可以实现数据的有效下载. 其中,线程是操作系统能够进行运算调度的基本单位,是程序实际执行单元;协程则是一种用户态的轻量级线程,它是比线程占用更少资源的执行单元[12-14]. 下面依次对单线程、多线程和多协程下载方法做简要介绍.

1.1 单线程下载

单线程下载是基于单个线程的控制流逐个下载目标数据. 主要流程是先向服务器发送下载请求,建立计算机与服务器间的数据传输通道;然后CPU将web端数据缓存到电脑主存储器(内存)中,存储完毕后CPU被释放;最后,存储器直接存取(DMA)负责把内存里的缓存数据写入磁盘. 详细步骤如图1所示.

图 1 单线程下载流程图

1.2 多线程下载

多线程下载是同时开启多个线程,每个线程用于执行不同的下载任务. 多线程下载首先以计算机和服务器间的数据传输通道为基础,借助计算机内核的调度交替获得CPU的处理资源,将每个线程任务对应的web数据分别缓存至内存,最后由DMA将其写入磁盘,完成多任务并发下载[15],如图2所示.

图 2 多线程下载流程图

1.3 多协程下载

多协程下载是同时创建多个协程,每个协程负责一个下载任务. 它是以计算机和服务器间的数据传输通道为基础,将单个协程和线程进行对接,完成CPU缓存web数据的作业步骤;当协程遇到I/O(硬盘/内存)读写操作时,协程和线程会分离,其中协程独自等待DMA将缓存数据写入磁盘,线程则准备与下一个协程进行对接,循环上述流程,如图3所示.

图 3 多协程下载流程图

图 4 单线程下载不同量级文件

2 数据下载与分析

为比较分析单线程、多线程和多协程三种下载方法的性能,选取武汉大学IGS数据中心2020年001天至2021年234天(共计600天)的数据,统计三种方法分别下载100、200、···、600天不同量级数据的耗时情况(取5次测试结果的平均值). 其中,下载测试的文件根据GNSS数据整体大小分为小、中、大三个量级,小文件是指单个文件大小小于1 MB/天的GNSS数据,主要有广播星历、精密星历、地球自转参数、电离层延迟和对流程延迟等,测试选取的是最常用的GPS广播星历文件;中文件是指单个文件大小介于1~4 MB/天的数据,该类文件包括大部分的观测数据,测试选取BJFS站RINEX 2.xx观测数据;大文件是单个文件大小超过4 MB/天的数据,它在GNSS数据中占极少部分,主要有天线相位中心改正和部分观测文件等,测试选取WUH2站RINEX 3.xx观测数据. 不同时间跨度下的小、中、大三类文件总大小如表1所示,三种下载方法的耗时结果如表2所示.

表 1 不同时间跨度的文件大小统计 MB

表 2 不同时间跨度的三种下载方法耗时统计 s

文中三种方法下载耗时采用课题组研发的“GNSS数据下载软件(GDDS v1.0)”进行统计,该软件采用Python设计开发,支持IGS和区域CORS数据的下载[16]. 测试所用PC机软硬件配置为:Intel Core i5-7200 CPU,2.50 GHz主频,8 GB内存,Win10操作系统(64位);平均网速为:12.5 MB/s.

2.1 单线程下载结果分析

图4为单线程下载不同量级文件. 由图4可知,单线程在下载单个文件量级相同的任意时间跨度的数据时,速度几乎保持不变;随着下载任务中单个文件量级逐渐增大,单线程的下载速度也有提升.

图 5 多线程下载不同量级文件

文件下载的耗时主要来源于服务器响应、CPU缓存和DMA拷贝三个等待过程,其中服务器响应由其自身硬件配置决定,与请求下载的文件大小无关;CPU缓存和DMA拷贝受文件大小和相关操作速度的双重影响. 在单线程下载过程中,一直循环执行着等待服务器响应下载请求、CPU缓存web数据和DMA将数据拷贝至磁盘等耗时操作. 当下载任务中的各文件大小基本一致时,上述三个等待过程的耗时大致相同,因此单线程下载任意时间跨度的相同量级文件的速度保持不变;随着下载任务中单个文件量级增大,CPU缓存和DMA拷贝的耗时均线性增长,但等待服务器响应的耗时维持不变,因此总耗时的增长率低于文件量级的增长,即表现出单线程下载大文件的速度优于中小文件.

2.2 多线程下载结果分析

图5是多线程下载不同量级文件的详情. 由图5可知,多线程在下载小文件时,随着时间跨度的增大,下载速度先急剧增大,300天小文件对应的下载速度达到峰值,然后下载速度有一定的回落;在下载中、大文件时,随着时间跨度的增大,下载速度逐渐加快.

多线程是通过快速切换CPU资源达到CPU缓存和DMA拷贝同时进行的效果,因此在下载小文件过程中,多线程能短时间完成大批量数据下载工作,显著提高整体下载速度;当下载速度达到服务器允许此类型文件的最快传输值时,出于安全考虑服务器会主动限制该IP地址的后续数据传输速度,导致长时间跨度的下载任务速度降低. 在下载中、大文件时,多线程下载速度难于达到服务器此类型数据的报警值,所以下载速度会随时间跨度的增大而加快.

2.3 多协程下载结果分析

图6是多协程下载不同量级文件的详情. 由图6可知,多协程的下载速度先随时间跨度的增大而加快,当时间跨度达到一定程度后,下载速度便稳定下来. 多协程的这种速度变化趋势随着下载任务中单个文件量级的增大愈加显著.

图 6 多协程下载不同量级文件

图 7 三种方法下载速度对比

多协程下载是充分利用阻塞的时间实现多任务的分段式下载,即在执行下载任务中,多协程遇到I/O等待便会挂起当前任务,切换至下一个任务执行;当I/O处理完毕后,又切换回该任务继续运行. 多协程在下载过程中充分利用了CPU资源,因此其下载的文件数量越多,理论下载速度就越快. 但在实际下载过程中,多协程的下载速度并不会随下载的文件数量增多而无限加快,它会受到一些其他因素的制约,如信道带宽、计算机性能等,导致下载速度到达一定程度后增长缓慢.

2.4 三种方法综合分析

图7是三种方法在小、中、大三类GNSS数据下载中的速度对比. 由图7可知,在下载中小文件时,下载速度最快的是多线程,其次是多协程,最后是单线程;下载大文件时,多线程和多协程的下载效果相近,均优于单线程下载,其中多协程的速度略高于多线程.

单线程下载是基于下载步骤有序运行,整个下载过程CPU大部分时间都处于空闲状态;多线程是通过内核调度完成CPU的支配,让CPU保持连续运行的状态;多协程是根据用户需求让CPU处理不同的任务片段,使其一直处于工作状态. 由此可知单线程的CPU利用率明显低于多线程和多协程,需花费更多时间完成相同的web数据缓存工作,导致单线程下载不同量级文件的速度都慢于多线程和多协程.

多线程利用的是CPU多个核参与下载,缺点在于线程的切换是基于内核的调度完成,所以其切换的开销较大. 多协程在下载过程中利用的是单核CPU,优点在于协程间的切换是寄存器上下文和栈的恢复,不占用内核的开销,故协程间的切换速度快于线程.在下载中小文件时,多线程借助调用CPU多核参与下载的特性,其下载速度明显高于多协程;随着下载任务中单个文件量级的增大,CPU多核的性能优势在下载过程中逐渐弱化,出现多线程与多协程下载速度相互靠拢的现象;在下载大文件时,两者都因外部条件限制达到最佳速度,而协程间的切换快于线程,所以多协程下载速度整体略优于多线程.

3 结 语

本文对单线程、多线程和多协程三种GNSS数据下载方法进行了对比分析. 结果表明:下载中小文件时多线程明显优于其他两种方法;下载大文件时多协程略优于多线程,且两者的性能都高于单线程;由于GNSS数据主要以中小型文件为主,所以GNSS数据下载软件宜采用多线程下载方式.

猜你喜欢
量级线程服务器
5G终端模拟系统随机接入过程的设计与实现
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
2018年全球服务器市场将保持温和增长
21连胜
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵
Java的多线程技术探讨