APP下载

基于非易失混合内存的高速气象数据管理系统设计

2023-11-17顾青峰

计算机工程与科学 2023年11期
关键词:元组线程日志

陈 超,顾青峰

(中国气象局气象发展与规划院,北京 100081)

1 引言

气象数据是一种典型的科学大数据,而且基于气象观测数据的天气预报与大众生活息息相关,影响非常广泛。在气象大数据中,最大规模的一类数据是模式数据。模式数据是由气象专用高性能计算机根据最新的天气实况数据,通过物理方程计算产生,其内容包含了我国和地球上各个经纬度、不同海拔上的多种预测的物理量(例如温度、湿度、风向、风速等),而且每个物理量都包括未来不同时间点的预测值(如未来3 h,6 h,9 h和72 h等)。根据国家气象中心(中央气象台)的统计,气象数据中约有70%的数据为模式数据[1]。

气象模式数据规模大,不仅每天高性能计算机会多次将计算模式数据导入气象数据管理系统,而且预报员要频繁地通过模式数据进行各种查询,用于生成正式的数值预报、集合预报等。因此,气象模式数据同时面临海量数据规模、大量写入和大量查询的挑战。传统的气象数据管理系统一般采用关系数据库存储数据的文件存储位置、分布式文件系统存储具体模式数据的形式。用户访问这类系统时,一方面需要经过多个系统访问,访问延迟较大;另一方面文件系统处理复杂数据查询的能力很差,需要提取大量数据到应用系统中,也会造成很大的访问延迟,不利于确保天气预报的实时性。

但是,气象模式数据也存在一个显著的访问特征,即对延迟敏感的天气预报工作需要经常访问最新的模式数据,而大量的历史模式数据主要是气候变化分析等延迟不敏感的应用访问。因此,基于气象模式数据的特征,本文设计了一种基于最新的快速非易失内存NVM(Non-Volatile Memory)[2,3]的混合内存高速气象数据管理系统,充分利用NVM和传统随机访问内存DRAM(Dynamic Random Access Memory)的硬件特征,基于混合内存支持对实时性要求较高的天气预报查询;非最新的模式数据在负载低谷期逐渐导入基于固态硬盘或磁盘的大容量、低成本气象数据管理系统中。实验结果表明,本文设计和研发的基于NVM混合内存的高速气象数据管理系统比基于纯内存的数据管理系统,性能增幅为114.2%,而且相对于内存数据管理系统具有存储密度更高、成本更低的优势,能够很好地满足对容量和访问速度要求都非常高的天气预报业务。

2 非易失内存

传统的高速数据管理系统一般都基于随机访问内存DRAM构建。DRAM访问速度快,但是,不能保证数据的持久化,即断电时数据会丢失。因此内存数据管理系统同时需要部署持久化存储介质(例如基于闪存的固态硬盘或磁盘)来存储写前日志WAL(Write-Ahead Logging),这样即使断电,也可以从持久化设备中恢复原始数据。但是,由于固态硬盘和磁盘等持久化设备的访问速度比DRAM慢几个数量级,因此日志部分往往是内存数据管理系统的性能瓶颈,明显影响了整个数据管理系统的性能。

非易失内存NVM是近年来涌现的一种新型存储介质,最大的特点是具备接近DRAM的访问速度,同时具备持久化存储能力,其访问速度、存储密度、成本都介于内存和外存之间,是一种全新的存储形态,为计算机系统带来很多新的发展机会。2019年4月,Intel正式推出了双列直插式内存DIMM(Dual-Inline-Memory-Modules)接口的NVM产品,即Optane Persistent Memory[4],目前已有很多实际应用。对于数据管理系统来说,NVM一方面可以利用更高的存储密度和更低的成本来大幅扩展DRAM的存储空间;另一方面可以利用其持久化存储的能力替代传统外存的日志存储功能,构建更高速的数据管理系统。

但是,NVM相对于DRAM、磁盘等传统存储介质,同时也具备一些更加复杂的硬件特征,需要软件访问尽可能与硬件特征相匹配,才能充分发挥NVM的硬件优势[5]。NVM的这些硬件特征主要包括:

(1) 读写不平衡,NVM的写性能,尤其是随机写带宽明显小于其他访问模式的,如表1[5]所示;NVM的连续访问模式和随机访问模式之间的性能差距较大,且比DRAM和固态硬盘SSD(Solid State Drive)的要更大。

(2) NVM的访问延迟和带宽相对于DRAM的仍然有明显的差距,因此在系统中用好DRAM缓存仍然对整体性能非常重要。

(3) NVM对小于256 B的访问会将其放大为256 B,从而造成性能下降。

(4) NVM的性能对访问的并行度非常敏感:单条NVM读操作最优并行度一般为4个线程;写操作如果使用ntstore汇编指令,最佳并行度为1,如果使用clwb指令则最优并行度为2。

Table 1 Main performance indicators of DRAM, NVM and SSD表1 DRAM、NVM和SSD的主要性能指标

近几年来关于NVM的研究工作主要包括基于NVM的新型索引技术[6-10]、基于NVM的日志方法[11,12]和基于NVM的存储数据组织[13,14]等,这些都是对模块和方法的研究,还缺少完整的数据管理系统设计。

3 气象数据管理

模式数据是非常重要的一种气象数据。模式数据生成和使用的主要过程如图1所示。首先,气象系统部署了大量的地面、高空、卫星气象传感器,这些传感器一般间隔数秒会采集、记录和发送一次气象状态信息,这些信息通过各种类型的网络汇聚到气象大数据管理系统中。然后,气象高性能计算机根据预设的物理方程和传感器发来的最新天气状态信息进行计算,生成模式数据,一般每天进行2~4次或更多次计算,每次计算都会更新模式数据。目前主流的气象模式有多种,一般高性能计算会根据模式同时生成多种模式数据,并存储在气象模式数据管理系统中。

Figure 1 Schematic diagram of generation, management,and use of model data图1 模式数据的产生、管理和使用示意图

如图2所示,在进行模式数据计算时,首先按照经纬度将空间划分为一些固定大小的网格(例如边长为几十公里),每个网格是一个基本的气象单元,每次模式数据计算一般都会对每个气象网格产生大约1 000个物理量(包括气温、湿度、风向、风速等),每个物理量包括未来不同时间段的预测结果(例如未来3 h,6 h,9 h,24 h和72 h等),一般以3 h为间隔,从当前时刻一直计算到未来240 h或更长时间。每个气象网格的数据量大约在MB级。然后每个典型海拔都需要计算这样一个气象网格平面的模式数据,以供预报员查询和生成最终的天气预报使用。网格越小,天气预报的精度越高,但是对高性能计算和气象数据管理系统的要求就越高。随着技术的进步,天气预报的精度在逐渐提高,目前空间分辨率主要是25 km,预计未来5年可以达到12.5 km。

Figure 2 Schematic diagram of weather model data图2 气象模式数据示意图

对于天气预报业务,预报员会对模式数据进行多种查询,比如多种模式数据的比对(例如我国气象结构产生的模式数据与欧洲气象中心的模式数据的对比)、查询一定经纬度范围的网格平面数据(例如未来几小时内一个省的地面温度)及查询某个网格的时间序列数据(例如一个特定地点未来几个时间段内的温度变化情况)等等。天气预报业务一般主要关注最新的模式数据,因此比较适合部署一个高速的小规模数据管理系统进行管理,以满足最新模式数据的不断写入和实时查询需求。气候变化研究等业务关注的是大规模历史数据查询,一般对实时性的要求远比天气预报的要低,因此比较适合基于固态硬盘或磁盘等大容量、低成本的存储介质来构建大数据管理系统。2个子系统可以配合,最新的模式数据周期性转移到大数据管理系统中。

4 基于NVM混合内存的高速气象数据管理系统设计

NVM的高性能、高存储密度适合于拓展传统内存数据管理系统的存储规模,并提升持久化日志部分的性能,构建高速气象数据管理系统。因此,本文主要聚焦基于NVM的软硬件协同高速气象数据管理系统的设计。

4.1 系统架构

由于NVM的硬件特征比较复杂多样,因此基于NVM的系统设计比传统基于DRAM、磁盘、固态硬盘的设计要复杂很多,必须进行深入的软硬件协同设计,才能充分发挥NVM的性能优势,同时又尽可能规避其缺点。如表2所示,首先针对NVM的几条关键硬件特征,推导出NVM数据管理系统的设计要点。

Table 2 Correspondence between NVM hardware characteristics and system design表2 NVM硬件特征与系统设计的对应关系

基于NVM混合内存的数据管理系统NVMDB(NVM Database)的架构如图3所示。索引、日志缓冲区放置于DRAM中用于性能加速。数据元组(每条记录为一个元组Tuple)放置于DRAM和NVM中,这部分NVM不需要保证数据的持久性(即不需要通过ntstore、clwb等汇编指令从CPU缓存刷出数据到NVM控制器中),相当于DRAM空间的扩展空间,增加了NVMDB可以管理的数据规模。这种情况下,NVM的平均性能比保障持久化的情况性能要更好。同时,保证持久化的NVM中部分用来存储WAL日志,并定期从WAL转到检查点(Checkpoint)中,用于减小WAL的空间。由于检查点中的数据有组织,可以通过索引直接访问,因此,当数据进入检查点后,可以从非持久化的“数据元组”中清理,避免数据重复导致的空间浪费。NVMDB的具体模块设计将在下面几个小节中详细介绍。

Figure 3 Data management system (NVMDB) architecture diagram图3 NVM数据管理系统(NVMDB)架构图

4.2 混合内存空间管理

NVM的存储密度远高于DRAM的,而且未来还有很好的增长空间,因此NVM可以有效扩展DRAM空间。而且在内存数据管理系统中,NVM扩展DRAM空间时不需要进行持久化保障,即不需要在写入操作(如store指令)后立刻调用fence指令来保障指令完成顺序,也不需要调用clflush或clwb指令来强制CPU缓存写回NVM,这样写操作的性能更高。随着后续CPU缓存的数据淘汰,NVM上的数据自然会逐渐达到持久化状态。

目前Intel研发的Optane NVM设备具有memory、app-direct和block-device 3种工作模式。Memory模式下NVM不保证数据的持久化,而且DRAM会被自动配置为NVM的硬件缓存,因此DRAM空间在系统中也“消失”,无法直接操作DRAM了。App-direct模式指用户可以直接细粒度操作NVM空间,例如使用Intel的持久化内存编程库PMDK(Persistent Memory Development Kit)[15],可以进行读、写、持久化等操作。Block-device模式是把NVM当作和固态硬盘一样的块设备,采用标准的块设备接口进行访问,这种模式性能损失较大,本文不做考虑。本文设计的NVMDB采用app-direct模式对NVM空间进行管理,更为灵活高效,也避免了DRAM空间的浪费。

在NVMDB中,由DRAM和NVM构成的混合内存按照图4所示的方式进行管理。DRAM和NVM都映射到虚拟内存空间,用户进程基于PMDK接口进行访问。具体来说,通过固定大小的页面(Page)进行空间的分配和回收,其中DRAM对应的页面为热页HP(Hot Page),NVM空间对应的页面为NVM页NP(NVM Page)。其中HP主要用于放置元组、索引和写缓存;NP主要用于放置元组、检查点数据和WAL数据。

Figure 4 Hybrid memory space management图4 混合内存空间管理

由于DRAM的性能要优于NVM的,除了索引与写缓存固定使用HP外,NVMDB的数据放置策略为优先使用HP放置元组。在4.3节将详细介绍日志清理过程中对DRAM元组的释放,释放出HP空闲空间,用于存储最新写入的元组数据。因此,NVMDB可以充分利用DRAM资源提升性能。NVMDB的垃圾回收策略是以页面为单位,后台优先选择垃圾数据比例高的页面进行回收。

4.3 NVM并行日志

NVMDB中的事务处理采用组提交方式,事务预提交之后,最新的数据在DRAM写缓冲区,等待后台的“日志写”线程写入NVM进行持久化之后,才算提交成功。多个并行的事务处理线程会先把日志数据写到每个线程自己本地的DRAM缓冲区,事务预提交之后集中写入全局DRAM缓冲区,多个“日志写”后台线程会将数据从全局DRAM缓冲区写入到NVM的日志空间中。“日志写”后台线程的数量设置为NVM硬件的最佳写并行度(一般每个CPU配备6个线程)。

为了防止WAL空间过大,NVMDB的后台日志清理进程会定期将WAL中的数据转入检查点。具体转换时先分析每条WAL日志,找到对应的元组数据;如果元组数据在NVM空间,则不用进行额外操作,因为日志清理过程会延迟进行,NVMDB的NVM空间会有周期性的Cache刷回操作以保证数据的持久化,在进行日志清理时,NVM元组空间中的数据已经保证了持久化;如果元组数据在DRAM空间,会写入NVM空间并进行持久化,形成检查点数据。整个过程如图4所示。

4.4 数据恢复

NVMDB的数据恢复主要包括WAL日志处理和索引恢复2个部分:

(1) 在节点崩溃或系统重启时,DRAM中的数据会全部丢失,包括DRAM中存储的元组数据;而NVM中的元组数据由于无法保证能从CPU缓存中刷回到NVM中,因此这部分数据需要与DRAM的进行相同的处理,即全部丢弃。只有保障持久化存储的NVM中的检查点和WAL日志不会丢失。在恢复过程中需要将WAL日志按照标准流程进行处理,包括分析、重做和撤销3个阶段,恢复DRAM和NVM元组数据部分的数据。由于系统会周期性进行日志清理,本文将数据转移到NVM的检查点中,因此WAL日志的数量一般不多,恢复速度较快。在处理WAL恢复元组数据的同时,也恢复了相应数据对应的索引。

(2) 对于索引来说,除了WAL日志中包括的合法数据外,NVM检查点中的数据也需要与索引关联,以便后续查找。因此,恢复索引的过程还需要扫描整个检查点中的数据。为了加快索引恢复速度,对NVM检查的访问采取并行读取的方式。

5 实验与结果分析

本节对本文所设计与研发的基于NVM混合的数据管理系统NVMDB与经典的内存数据管理系统MMDB(Main Memory Database)进行实验比较。MMDB的元组数据都存储于DRAM中,按照持久化日志存储介质的不同,分为MMDB-SSD(采用固态硬盘作为持久化设备)和MMDB-NVM(采用NVM作为持久化设备)2种。其中,MMDB-SSD是目前普遍采用的方案,MMDB-NVM与本文设计的NVMDB采用同样的NVM硬件进行持久化。NVMDB的元组数据也大部分存储于NVM中,数据存储规模远大于MMDB-SSD和MMDB-NVM的。

本文实验采用标准的TPC-C测试基准[16]。TPC-C测试基准是国际事务处理性能委员会TPC(Transaction Processing Council)组织制定的数据库联机事务处理OLTP(Online Transactional Processing)系统性能的权威测试基准,非常具有代表性,受到广泛认可。TPC-C中有5种类型的事务,每种事务有规定的比例。TPC-C采用数据管理系统在单位时间(如每秒钟或每分钟)内能够完成的事务数来反映系统性能。

实验使用的服务器配备了2个Intel®Xeon®Gold 5220 CPU @ 2.20 GHz CPU,每个CPU有18个物理核心,49.5 MB的三级高速缓存,每个CPU上都配置了6条32 GB的DRAM和6条128 GB的Optane DCPMM。实验平台的操作系统内核版本是Linux 5.11.0。

5.1 整体性能实验

图5给出了不同并行线程数的几个系统的每秒平均事务数TPS(Transactions Per Second)对比。从图5可以明显看出,在并行线程数较低时,由于远远没有达到NVM的最佳并行度,NVM相对于SSD性能优势并不明显,3个系统的TPS非常接近;当并行线程数达到16时,NVM的性能相对于SSD的开始逐渐明显,因此MMDB-NVM的性能明显优于MMDB-SSD的,二者此时使用的软件完全相同,只是日志设备不同;NVMDB的性能还略低于MMDB-NVM的,主要的原因是NVMDB采用NVM拓展了DRAM的元组数据存储空间,扩大了数据管理系统的数据规模,NVM存储的性能低于DRAM的,虽然NVMDB的日志部分性能要优于MMDB-NVM的,整体的性能还是略低;最后当并行度达到64以后,由于并行度与NVM的硬件特征更为匹配,虽然NVMDB的数据存储规模大于MMDB的,但其性能也明显优于MMDB-SSD和MMDB-NVM的。

Figure 5 Performance comparison between NVMDB and existing MMDBs图5 NVMDB与已有MMDB方案的性能对比

图6的2条折线分别表示NVMDB相对于MMDB-SSD和MMDB-NVM的性能提升百分比。在线程数为64时,NVMDB的性能增幅分别约为300%和114.2%,加速效果非常显著。

Figure 6 Performance improvement percentage of NVMDB compared with existing MMDBs图6 NVMDB相对于已有MMDB方案的性能提升百分比

5.2 不同NVM扩容方式的性能对比

目前Intel推出的Optane NVM具有多种使用模式,其中易失性的memory模式看起来非常适合存储元组数据,拓展DRAM的存储空间。Memory模式下,为了加速NVM访问,控制器会隐藏DRAM空间,将其作为NVM的缓存来加速。而本文所实现的NVMDB采用了app-direct模式,由软件层来管理DRAM和NVM空间,这样系统中仍然可以使用DRAM空间,空间使用效率更高。

为了评价NVMDB与memory模式的性能差异,本文基于NVMDB构建了一个变种:一部分NVM采用memory模式配置,用于存储元组数据;另一部分NVM仍然采用原方案存储WAL日志和检查点(标记为Volatile NVM)。同时,为了更全面地展示效果,NVMDB同时也与纯DRAM存储元组数据的方案(DRAM-Only)进行比较;且实验中的数据规模在DRAM容量之内。

3个方案的TPS情况如图7所示。在并行线程数较低(例如1~4线程)时,3个方案的性能差异很小;在线程数增加到16~64时,Volatile NVM方案的性能增长不大,远远落后于另外2个方案的,主要原因可能是目前Optane NVM的memory模式还不成熟,还无法充分发挥高并发时NVM的性能优势。当线程数达到16~64时,NVMDB的性能略低于DRAM-Only的,但是性能差距不大,尤其是在高并发(例如64线程)时;考虑到NVMDB相对于DRAM-Only在存储空间和成本方面的优势,NVMDB的性能表现已经不错了。图8展示了NVMDB相对于这2种方案的性能提升百分比。从图8可以更直观地看到上述规律,NVMDB相对于Volatile NVM的性能优势非常明显,而与DRAM-Only的性能差异非常小。

Figure 7 Performance comparison of NVMDB versus memory-mode and pure DRAM图7 NVMDB与memory模式 和纯DRAM元组方案的性能对比

Figure 8 Performance improvement percentage of NVMDB over memory-mode and pure DRAM图8 NVMDB相对于memory模式 和纯DRAM元组方案的性能提升百分比

6 结束语

本文提出了两级气象数据管理系统框架,其中基于NVM混合内存的高速数据管理系统相对于传统内存数据管理系统,具有更好的性能、更大的存储规模和更低的单位数据容量成本,可以更好地满足天气预报和气候变化分析等气象业务与研究的需求。本文设计和研发的高速数据管理系统NVMDB在系统架构、模块和策略设计上充分考虑到DRAM和NVM 2种内存的硬件特征,采用软硬件协同设计方法,在混合内存空间管理、并行日志写入等方面显著拓展存储规模并提升了性能。相对于经典的内存数据库系统,NVMDB具有非常明显的性能、空间和成本优势,具有很好的推广应用价值。

猜你喜欢

元组线程日志
一名老党员的工作日志
Python核心语法
扶贫日志
海量数据上有效的top-kSkyline查询算法*
基于减少检索的负表约束优化算法
游学日志
浅谈linux多线程协作
一种基于粗集和SVM的Web日志挖掘模型
面向数据流处理的元组跟踪方法
基于上下文定界的Fork/Join并行性的并发程序可达性分析*