耦合分布式系统多线程任务管理算法

2012-01-10 03:34:50黄海于
关键词:计算资源线程分布式

张 宇,黄海于

(西南交通大学信息科学与技术学院,四川成都 610031)

0 引 言

高速列车数字化仿真平台是在高速列车动力学仿真的基础上,提供包括高速列车应用性能仿真在内的全系统仿真[1].由于仿真高速列车行驶过程中的状况必然要进行大量的动力学计算,因此单台计算机的计算能力已无法满足系统仿真的要求,同时随着仿真规模的不断扩大,系统的仿真性能将进一步降低.为解决更大规模的系统仿真问题,以分布式仿真系统为基础的系统仿真平台就成为必然[2].分布式仿真系统由分布在不同地点的仿真设备和软件组成,通过硬件的互联和软件的相互进行控制[3],从而完成大型复杂系统的仿真任务.一般而言,分布式仿真以分布式并行调度算法为基础,该算法与传统单机仿真系统的串行算法相比具有本质的区别.在进行多机并行分布式仿真过程中,如果将每个计算任务调度到不同的计算资源,则会出现计算资源利用率较低的情况.为了合理地利用计算资源,提高资源的利用率,在计算资源可利用的情况下,需要将多个任务调度到一台计算机上.多线程是Windows操作系统的一个重要特征[4],利用多线程技术,可在1个进程内创建多个线程,CPU分时间片轮流执行多个线程[5],允许同一时间内运行多个应用程序.因此,在耦合分布式系统中,同一个计算资源上的计算任务以多线程的方式运行,而如何对这些线程进行有效的管理是系统正常运行的关键.基于此,本研究提出了基于耦合分布式的多线程任务管理算法,该算法能有效管理运行在同一台计算机上的多个计算线程中,使各计算任务能协同配合完成系统的正常仿真,同时提高系统的仿真效率.

1 系统基本结构

耦合分布式系统仿真结构如图1所示.在该耦合分布式系统仿真的3层体系框架中,包括作业调度器、耦合器、计算资源和客户机.

图1 耦合分布式系统仿真拓扑图

作业调度器主要提供和计算机的接口,接收耦合器、计算资源和客户机的注册信息,接收由普通用户提交的工况信息,并通过工况分析引擎进行工况处理,并进行多耦合器的管理及负载均衡.

耦合器是系统的核心,当作业调度器完成工况的调度后,将计算资源的工况提交到耦合器,由耦合器负责耦合分布式仿真的时序控制和工况仿真模块的数据收发.本3层体系框架能运行多个耦合器,一个耦合器能管理多个工况,而且耦合器的个数可根据需求进行扩展,从而增加了系统的可靠性和稳定性.

计算资源是与作业调度器、耦合器处在同一个网络上的主机,可为大规模的科学计算提供自己空闲的资源.

客户机是仿真系统与用户进行交互的接口,它需要在管理主机上注册,并经管理主机许可后,才可以把一个装配描述符发送给管理主机.此时,作业调度器根据这些信息,再综合考虑各个耦合器和计算资源当前的负载情况,然后确定如何以最合理的方式分发计算任务.

2 多线程任务管理算法描述

2.1 多线程情况下各计算任务的启动

使用多线程仿真运行模块能减少等待时间,提高仿真系统的并行处理能力.多线程情况下各计算任务的启动流程如图2所示.

图2 多线程情况下各计算任务的启动流程图

2.2 计算线程输入数据的接收

在多线程情况下,计算任务接收到仿真所需的下一步数据才能进行下一步的仿真.多线程情况下的各计算任务所需输入数据的接收流程如图3所示.

图3 多线程情况下各计算任务所需输入数据的接收流程图

从图3可以看出,通过采用全局变量的方式,可以将耦合器发送的数据准确地传递给相应的计算任务线程,确保系统的正常仿真.

2.3 多线程情况下各计算任务输出数据的耦合器发送

在多个任务多个线程并行计算时,多个仿真线程要共用一个端口将仿真完成的数据发送到耦合器中.当两个线程同时使用共用端口时会使发送的数据混淆,从而使发送的数据出现错误.对此,多线程情况下各计算任务输出数据的耦合器发送流程如图4所示.

图4 多线程情况下各计算任务输出数据的耦合器发送流程图

从图4可以看出,通过计算线程互斥调用发送仿真数据的处理方法可有效地解决多线程发送数据时相互干扰的问题.

3 实验结果与分析

3.1 实验环境

为了验证耦合分布式系统多线程任务管理算法的有效性,本研究构建了如下的仿真环境:仿真使用6台计算机,一台用于运行客户端软件,一台用于运行作业调度器软件,一台用于运行耦合器,3台用作计算资源,所有的计算机运行在百兆的局域网内.各计算机的使用情况如表1.

表1 计算资源分配情况表

此外,测试使用的工况包含3个子模块.

3.2 实验结果与分析

首先,使用单线程的任务管理算法,此时仿真系统只能运行一个工况,每个执行机运行一个工况子模块.然后,使用多工况管理算法,仿真系统将一个工况的3个子模块调度到一台计算机上运行,采用工况运行时间和占用计算资源的个数作为负载分量.表2是使用单线程和多线程任务管理算法计算同一工况使用仿真时间的对比情况.表3为使用单线程和多线程任务管理算法占用的计算资源情况.

表2 单线程与多线程情况下占用仿真时间的对比

表3 单线程和多线程任务管理算法占用的计算资源情况

从表2、3可以看出,使用多线程任务管理算法和使用单线程任务管理算法仿真计算同一工况在花费仿真时间上相差不大.使用单线程的方式占用了3个执行机,而使用多线程只用了一个执行机,较大地提高了分布式系统计算资源的利用率.同时,从测试结果可以看出,多线程多任务的仿真模式已基本实现了所有的功能需求和性能需求,符合算法设计的初衷.

4 结 语

本研究介绍了耦合分布式系统多线程任务管理仿真算法在高速列车数字化仿真平台中的实现.仿真实验表明,该算法在VC++开发环境中实现了多线程任务的启动、计算线程数据的接收、计算线程数据的发送,取得了较好的仿真效果,提高了资源的利用率.下一步将研究多进程多任务的仿真模式,从而解决多线程间相互依赖的问题,进一步解决多任务运行的独立性.

[1]夏丰领,赵育善.飞行器动力学的分布式仿真方法探讨[J].导弹与制导学报,2008,28(1):211-222.

[2]赵斌,郝红旗.网格中间件在分布式仿真系统中的应用[J].计算机仿真,2009,26(12):100-103.

[3]朱建江,楼佩煌,王宁生.基于CORBA的分布式体系结构[J].航空制造技术,2001,44(5):82-85.

[4]Kruglinski.Visual C++技术内幕[M].北京:电子工业出版社,1999.

[5]龙勇,袁静,李胜朝,等.多线程串行通信在武器分布式仿真系统中的应用[J].战术导弹控制技术,2007,56(1):105 -111.

猜你喜欢
计算资源线程分布式
基于模糊规划理论的云计算资源调度研究
改进快速稀疏算法的云计算资源负载均衡
基于Wi-Fi与Web的云计算资源调度算法研究
耦合分布式系统多任务动态调度算法
分布式光伏热钱汹涌
能源(2017年10期)2017-12-20 05:54:07
分布式光伏:爆发还是徘徊
能源(2017年5期)2017-07-06 09:25:54
浅谈linux多线程协作
环球市场(2017年36期)2017-03-09 15:48:21
基于DDS的分布式三维协同仿真研究
雷达与对抗(2015年3期)2015-12-09 02:38:50
西门子 分布式I/O Simatic ET 200AL
Linux线程实现技术研究