中国科技核心期刊      中国指挥与控制学会会刊     军事装备类重点期刊
Modeling & Simulation

Research on Micro-kernel simulation service engine supporting the distributed driving of scenario forces

  • SUN Zhi-ming ,
  • CHANG Qing ,
  • WANG Yan
Expand
  • Air Force Command College, Beijing 100097, China

Received date: 2022-08-08

  Revised date: 2022-09-27

  Online published: 2023-04-17

Abstract

The existing single engine simulation system is difficult to support force entity operations in large-scale scenario simulation efficiently. The idea of group extraction and parallel driving by multiple simulation engines is proposed. Firstly, the realization elements of the distributed driving mechanism of the scenario forces are analyzed. Secondly, a kind of micro-kernel simulation service engine is designed and constructed, and the implementation process of distributed driving mechanism based on the group extraction strategy of scenario forces is described. Finally, through the experiment, the simulation efficiency of the single-node centralized mode and multi-node distributed mode is compared and analyzed, which verifies the effectiveness and feasibility of the implementation mechanism of the distributed driving of scenario forces.

Cite this article

SUN Zhi-ming , CHANG Qing , WANG Yan . Research on Micro-kernel simulation service engine supporting the distributed driving of scenario forces[J]. Command Control and Simulation, 2023 , 45(2) : 137 -143 . DOI: 10.3969/j.issn.1673-3819.2023.02.022

仿真引擎是仿真系统的核心部件,通过加载和驱动仿真想定实现兵力实体模型的解算以及作战行动的模拟[1]。大规模作战场景下,作战单元及武器装备实体数量庞大,模型计算逻辑复杂,容易导致系统资源占用过高,从而难以高效驱动海量实体作战行动仿真。针对这一问题,业内学者充分挖掘多核处理器潜力,采用并行化仿真算法[2-4],有效提升了系统运行效率。但是,在想定规模不断扩大而硬件性能提升有限的情况下,传统单引擎架构仿真训练系统仍然面临效能瓶颈的问题,难以满足大规模作战场景下的高强度对抗训练需要。近年来,微服务和面向服务的建模仿真技术研究不断深入[5-8],为解决上述问题提供了方向和参考。鉴于此,本文设计了一种能够分布式运行的微内核仿真服务引擎,将所有兵力实体的仿真任务分配给多个引擎来执行,通过引擎之间的协同工作来实现大规模想定兵力的高效驱动。

1 想定兵力分布式驱动要素分析

仿真想定是仿真系统的基本输入,也是影响仿真运行效率的重要因素。仿真想定规模越大,涉及的战场空间范围越广,其包含的作战单位、目标以及武器装备的数量也必然越多,对仿真引擎的资源调度和模型解算都会产生直接影响。想定兵力分布式驱动是一种基于分组抽取策略来实现各组兵力实体仿真的机制。每一组实体的仿真任务都交由一个仿真服务引擎来执行,各引擎之间通过基于主题的发布/订阅机制进行协同和数据交互,共同完成想定中所有兵力实体模型的仿真解算。因此,实现想定兵力分布式驱动过程,需要从想定兵力分组抽取策略、仿真引擎以及分布式驱动支撑模式等要素进行分析。

1.1 想定兵力分组抽取策略

想定兵力分组抽取策略是以分解想定中兵力实体的仿真任务为目标,根据兵力的规模或武器平台实体的模型特征而制定的仿真资源配置方案。若按照兵力规模划分,可配置参演方分组,陆、海、空等作战分域分组,军兵种分组等策略;若按照武器平台实体的特征来分组,要重点考量模型组件相对复杂的实体类型,根据实体组件类型、数量以及资源的占用情况进行分组。例如,战斗舰船平台实体模型一般包括大量不同类型的传感器、干扰器、防空武器以及面面导弹等装备组件,本质上属于一种复合型实体,此类实体如果加入仿真场景,其资源占用相对较高,需将想定中战斗舰船兵力进行多组分配。总之,想定兵力分组抽取策略的目的是实现各节点仿真资源和算力的负载均衡,保证仿真系统各模块稳定高效运行。

1.2 仿真引擎

实现想定兵力的分布式驱动要求仿真引擎具备轻量化、多实例运行以及仿真任务并行处理的能力。想定兵力分组策略配置完成后,任务管理程序会将每组兵力实体的驱动任务交由对应的仿真引擎执行,仿真执行中产生的过程数据通过基于主题域的发布/订阅机制与其他引擎进行交互,通过多个引擎协同工作共同实现一个完整想定的驱动过程。由此,仿真运行过程中单个引擎的仿真解算压力将大幅减少,引擎所在节点的资源占用也会明显减少。

1.3 想定兵力分布式驱动支撑模式

通常,仿真运行可分为集中式运行和分布式运行两种模式。集中式运行是指单个完整想定由一个仿真引擎来驱动执行,该模式适用于想定规模不大且服务器本机性能满足的情况;而分布式运行是指由多个仿真节点分别负责一部分兵力实体作战行动的模拟,多个节点协同驱动一个完整的想定,该模式适用于大规模想定场景下,单机性能无法满足要求,需要部署多个仿真节点共同支撑仿真推演任务的场景。

2 微内核仿真服务引擎设计

为满足想定兵力分布式驱动机制的实现需求,本文设计了一种微内核仿真服务引擎。引擎采用轻量化、微内核、服务化设计思路,引擎内核在统一的服务化框架接口和服务管理器的基础上只提供基础的功能,比如仿真时间推进、事件管理、战场实体管理以及仿真监视等,其他功能则通过服务扩展的方式由内核之外的应用层面提供。此外,仿真服务引擎还具备“即插即用”功能:一方面,引擎内部各模块是松耦合的,可以根据应用需要对引擎的组成部分或功能进行定制或取舍,各模块挂接在服务化框架上并由服务管理器统一管理;另一方面,引擎之间能够协同工作,各引擎挂接在仿真服务总线(物理形态上是一种去中心化的守护模块,部署在引擎所在节点上)上进行交互。

2.1 架构组成

微内核仿真服务引擎主要由仿真引擎内核和扩展服务构成,如图1所示。其中,仿真引擎内核主要包括引擎内核框架、仿真服务化框架接口、服务管理器、时间管理器、事件管理器、战场管理器和仿真监视器等模块;扩展服务包括模型服务、仿真服务、数据采集服务以及其他扩展服务。
图1 微内核仿真服务引擎架构图

Fig.1 Micro-kernel simulation service engine architecture

仿真引擎内核在引擎内核框架的支持下,通过仿真服务化框架接口和服务管理器共同调度事件管理器、时间管理器、战场管理器等核心模块,有序驱动各类模型提交的事件,按照统一的仿真时间进行交互。仿真服务化框架接口以面向服务的软件架构为核心,提供服务化的开发、部署和运维管理,并且在统一的服务化架构驱动下,将仿真模型、仿真控制、数据采集三类功能解耦,以服务作为基本元素,支持在Windows和Linux系统下运用容器、云等虚拟化技术进行部署和管理,降低了模型和系统之间的耦合度,提高了复用性和扩展性。

2.2 运行机制

微内核仿真服务引擎采用基于离散事件的多线程并发引擎设计,将战场仿真实体划分为多个运行分组,每个组内采用离散事件仿真推进机制在一个线程内高速运行,多个分组对应的多个线程可以并行运行,能够充分利用多核CPU的计算处理能力。引擎运行机制主要分为事件处理、时间推进和分布式运行三个核心内容,其运行原理如图2所示。
图2 微内核仿真服务引擎原理图

Fig.2 Schematic diagram of micro-kernel simulation service engine

1)事件处理机制
事件管理器主要用于维护事件队列,向实体提供事件提交接口,当接收到实体提交的待执行事件时,事件管理器综合考虑事件的执行时间、优先级等因素,对队列中的事件进行排序。事件管理器负责向时间管理器发送同步请求,当时间管理器发现所有事件管理器都处于请求同步状态时,批准所有请求,否则,所有请求都处于无限等待状态。当请求批准后,事件管理器从其事件队列顶端取出一个事件(该事件时间最小、优先级最高),向时间管理器发送执行请求,时间管理器综合考虑所有提交事件的执行时间和优先级,选择时间最小、优先级最高的事件,向其事件管理器发送“执行请求”批准信号,得到批准的事件管理器立刻执行该事件处理程序。如果多个事件的时间和优先级完全相同,则并发执行。
2)时间推进机制
仿真时间的推进由事件的执行来推动,时间管理器记录正在执行事件的时间并更新为当前全局时间。事件的执行由时间管理器按照事件优先级来裁决。在仿真运行过程中,每个事件队列需要推进时间时,向时间管理器发出时间推进请求并等待批准,此时,事件队列对应的线程挂起以释放计算资源;时间管理器负责对所有事件队列发出的时间推进请求进行处理,并选择满足条件的请求予以批准,激活对应的事件队列线程恢复运行状态。当前事件处理完毕后,时间管理器更新当前仿真时间,然后遍历所有请求事件,再次进行裁决判断。通过这个过程的反复迭代,不断执行事件队列的事件,通过事件的执行,推动仿真时间前进,直到仿真结束。
3)分布式运行机制
在实现面向多想定样本并行计算方面,微内核引擎采用基于多任务的离散事件并行仿真及时间同步技术,设置多个事件管理器和一个时间管理器。其中,想定中参与仿真的兵力实体被划分为多个组,每个组分配一个事件队列,由一个事件管理器进行管理,即一个事件管理器管理由实体递交的多个事件,每个事件队列对应一个线程,通过多线程的并行运行实现仿真的并行运行。

2.3 模型调度

微内核仿真服务引擎模型调度流程主要分为三个阶段。
一是仿真开始阶段。启动仿真后,首先由本节点仿真服务引擎加载仿真想定并执行初始化操作,同时,读取想定兵力分布式驱动的策略配置信息,加载策略中涉及的本节点兵力实体模型和数据,并初始化相关实体及其模型组件。完成实体和组件的初始化准备后,读取仿真实体的作战任务信息,执行相关解算(如根据飞机实体的任务执行时间解算到达各航线点时刻以及起降时刻),生成初始事件序列并设置优先级,提交至事件管理器。
二是仿真执行阶段。仿真服务引擎按照事件队列中的事件序列依次处理事件信息,基于多事件队列处理机制,调度事件相关的实体及组件模型执行相关解算。在处理过程中,仿真服务引擎基于仿真域的发布/订阅机制,通过消息中间件订阅本节点所需的实体对象信息。完成该仿真循环后,将新的仿真事件提交至事件管理器,完成各相关实体的属性和状态更新,并将本节点相关对象信息发布至通信中间件。本周期所有事件处理完成后,等待服务管理器和时间管理器进行统一协调,推进下一周期的仿真循环。
三是仿真结束阶段。当所有节点的仿真事件都处理完毕或者仿真服务引擎接收到仿真终止命令后,启动仿真结束操作,按照处理流程执行各节点中仿真实体、组件模型、想定数据以及其他内存数据的卸载和清理工作,结束进程及线程中的各项任务。
仿真引擎从开始运行到结束的过程中,模型参与仿真运行流程的过程如图3所示。
图3 微内核仿真服务引擎模型调度流程

Fig.3 Flowchart of scheduling simulation model with micro-kernel simulation service engine

3 微内核仿真服务引擎在想定兵力分布式驱动中的实现

想定兵力分布式驱动过程主要涉及微内核仿真服务引擎初始化、想定兵力分组抽取以及多引擎协同交互三部分工作。

3.1 微内核仿真服务引擎初始化

仿真开始时,由仿真框架执行一系列初始化操作,主要涉及时间管理器、对象管理器、战场管理器以及服务管理器等核心服务模块;然后,加载仿真模型、基础数据、外部注入模块信息以及想定数据文件,并进行序列化操作。初始化和加载工作完成后,由仿真运维管理人员根据推演实际情况(演练场景规模、参演终端席位类型、数量等)制定仿真资源分配策略,配置仿真执行节点和运行簇,完成仿真执行前各模块的加载和初始化。微内核仿真服务引擎工作流程如图4所示。
图4 微内核仿真服务引擎工作流程

Fig.4 Workflow of micro-kernel simulation service engine

3.2 想定兵力分组抽取

仿真框架调用运行管理服务,按照预先设定的想定分组抽取策略规划仿真运行方案,将大规模仿真想定中的兵力进行分组抽取,将不同类型的兵力及装备模型的仿真驱动任务分配到对应的微内核仿真服务引擎节点,每一个引擎节点负责完成本节点的仿真运行解算,同时,将仿真数据同步到分布式支撑环境中。想定分组抽取策略下的分布式驱动流程如图5所示。
图5 想定兵力分布式驱动流程

Fig.5 Distributed driving process of scenario forces

3.3 仿真引擎分布式协同交互

分布式支撑环境核心功能模块包括仿真执行域、分布式时间协调服务和分布式中心服务,与之交互的是挂接在每个仿真引擎运行节点的数据服务代理模块。数据服务代理包括分布式时间协调服务代理和分布式中心服务代理两个组件,分别与分布式支撑环境中对应的分布式时间协调服务和分布式中心服务发生交互,以实现各仿真节点之间的数据同步。分布式时间协调服务代理负责整个分布式运行任务的时间同步与统一;分布式中心服务代理负责仿真引擎的加入和退出;仿真执行域负责数据的存储与同步。微内核仿真服务引擎之间的交互关系如图6所示。
图6 微内核仿真服务引擎之间的交互关系图

Fig.6 Interactive relationship among micro-kernel simulation service engines

分布式时间协调服务代理应用于微内核仿真服务引擎所在节点,通过该代理完成与分布式时间协调服务的交互,从而推进本地计算时间,并通过该代理向时间协调服务发出多种控制请求。工作流程如图7所示。每个仿真节点计算时间的推进都是由分布式时间协调服务统一控制。分布式时间协调服务通过接收各时间推进请求,从中选取一个最近的时间点,使全局时间推进到这个时间点,从而达到全局时间统一的目的。
图7 分布式时间协调服务工作时序图

Fig.7 Working sequence diagram of distributed time coordination service

分布式中心服务主要负责控制节点的加入和离开,其与仿真节点进行交互是通过部署在该节点的分布式中心服务代理完成的。分布式中心服务代理是新节点加入仿真执行域不可或缺的服务之一,它能够代理所在节点向分布式中心服务发出请求,处理中心服务的各项通知消息,是节点与分布式中心服务之间的沟通桥梁。

4 仿真实验

为了对比单节点集中式和多节点分布式两种模式下微内核仿真服务引擎的执行效率,进一步验证通过分布式驱动机制实现仿真引擎负载均衡的有效性,本文利用3台物理机作为测试节点进行了仿真实验,节点硬件环境配置如表1所示。
表1 仿真节点硬件环境

Tab.1 Hardware environment of simulation node

操作系统 Windows7 64
处理器 Intel(R) Core(TM) i7-9700 CPU @3.00 GHz 8核
网卡 Intel(R) Ethernet Connection(2) I219-V
内存 16 G
实验想定中有1 500个实体,类型包括预警机、歼击机、轰炸机、侦察机、直升机、弹道导弹发射单元、雷达站、干扰站、护卫舰、驱逐舰、潜艇等(包含探测、机动、预警、干扰等任务)。测试开始时,有1 158架空中实体在飞行,614部雷达设备开机,342艘舰艇在水面或水下机动。想定兵力分组策略采用均分策略,即每个节点实体数量和类型均衡分配,具体如表2所示。仿真运行模式分别为单节点集中式、2节点分布式和3节点分布式,每台物理机作为一个节点。仿真步长(周期)为3 s,想定运行时间(作战时间)持续1 h的情况下,分别测试三种运行模式的仿真实际用时(天文时间),实验结果如图8所示。
表2 仿真实验设计方案

Tab.2 Design scheme of simulation experiment

运行模式 每个节点分配
实体数量
说明
单节点集中式 1 500 一个仿真服务引擎执行1 500实体的仿真任务
2节点分布式 750 每个节点的仿真服务引擎执行750个实体任务解算
3节点分布式 500 每个节点的仿真服务引擎执行500个实体任务解算
图8 单节点集中式和多节点分布式仿真效能对比

Fig.8 Comparison of simulation efficiency between single-node centralized mode and multi-node distributed mode

图8中可以得出如下结论:
1)该想定场景下,采用多节点分布式比单节点集中式仿真运行用时更少,效率更高;
2)仿真实际用时随着每个节点配置的线程数(CPU核数)增加呈现先降后升趋势。因此,配置节点启用的线程数并非越多越好,应避免选择最大线程数。

5 结束语

近年来,随着互联网技术的飞速发展,面向服务架构、微服务架构以及容器技术逐渐应用于建模仿真领域,并带动了相关领域及技术的研究。大规模、高并发仿真场景下,尤其需要从仿真引擎和仿真架构入手,结合具体的仿真应用场景研究解决当前仿真环境面临的扩展性、灵活性和高效性等瓶颈问题的方法。论文设计了微内核仿真服务引擎,提出了基于该引擎的想定兵力分布式驱动方法,该方法改善了大规模仿真场景下仿真系统运行效率不足的问题,实现了多实例仿真引擎支撑下仿真想定驱动的负载均衡。
[1]
李晨, 柏彦奇, 史宪铭. 军事仿真想定生成问题研究[J]. 指挥控制与仿真, 2017, 39(6): 77-81.

DOI

LI C, BAI Y Q, SHI X M. Overview on military simulation scenario generation[J]. Command Control & Simulation, 2017, 39(6): 77-81.

[2]
唐文杰, 姚益平. 面向多核的并行离散事件仿真服务优化[J]. 软件学报, 2013, 24(6): 1376-1389.

TANG W J, YAO Y P. Multicore-oriented service optimization of parallel discrete event simulation[J]. Journal of Software, 2013, 24(6): 1376-1389.

DOI

[3]
李江涛, 张京涛, 张波, 等. 联合作战仿真实验中仿真引擎运行策略研究[J]. 指挥控制与仿真, 2022, 44(3): 80-87.

DOI

LI J T, ZHANG J T, ZHANG B, et al. Study on running strategy of joint operational simulation experiment simulation engine[J]. Command Control & Simulation, 2022, 44(3): 80-87.

[4]
谭亚新, 罗建华, 范锐, 等. 一种基于作战编成并行仿真方法及其实现[J]. 系统仿真学报, 2019, 31(11): 2350-2355.

DOI

TAN Y X, LUO J H, FAN R, et al. A parallel simulation method for combat organization and implementation[J]. Journal of System Simulation, 2019, 31(11): 2350-2355.

DOI

[5]
郑明钊, 张建强. 基于微服务的大平台系统架构演进探讨[J]. 软件, 2017, 38(12): 165-169.

ZHENG M Z, ZHANG J Q. Discussion on the evolution of big platform system architecture based on microservice[J]. Computer Engineering & Software, 2017, 38(12): 165-169.

[6]
翟岩龙, 孙文心, 包天虹, 等. 基于微服务的边缘侧仿真方法及框架研究[J]. 系统仿真学报, 2018, 30(12): 4536-4545.

DOI

ZHAI Y L, SUN W X, BAO T H, et al. Edge-side simulation method and framework based on micro-services[J]. Journal of System Simulation, 2018, 30(12): 4536-4545.

DOI

[7]
史扬, 董汉权, 陆铭华. 面向服务的可组合可重用仿真技术研究[J]. 系统仿真学报, 2014, 26(7): 1522-1526, 1548.

SHI Y, DONG H Q, LU M H. Research on simulation composability and reusability based on SOA[J]. Journal of System Simulation, 2014, 26(7): 1522-1526, 1548.

[8]
王永洁, 董汉权, 章阳. 面向服务环境下作战仿真并行计算模型研究[J]. 潜艇学术研究, 2018, 36(4):36-41.

WANG Y J, DONG H Q, ZHANG Y. Research on parallel computing model of combat simulation in service oriented environment[J]. Submarine Academic Research, 2018, 36(4):36-41.

Outlines

/