[发明专利]一种面向多核架构的任务监测、跟踪及识别方法有效
申请号: | 201810421646.5 | 申请日: | 2018-05-04 |
公开(公告)号: | CN108647134B | 公开(公告)日: | 2019-04-12 |
发明(设计)人: | 丁毅;周丽;唐恒亮 | 申请(专利权)人: | 北京物资学院 |
主分类号: | G06F11/34 | 分类号: | G06F11/34 |
代理公司: | 北京华仲龙腾专利代理事务所(普通合伙) 11548 | 代理人: | 李静 |
地址: | 101149*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供了面向多核架构的任务监测、跟踪及识别方法,包括如下步骤:(1)建立任务监测模型Task Monitoring Model,TMM,TMM模型包括:(1‑1)面向任务模式的运行时模型;(1‑2)任务监测机制;以及(1‑3)采用关系描述图的方式将任务运行及关联信息进行展示,从而自动识别;(2)将任务监测模型应用于多核编程模型中,实现基于包装库技术的监测跟踪方法,包括:分析GCC OpenMP运行时库的任务执行机制;基于模拟调度的OpenMP任务监测机制;以及基于附加信息的OpenMP任务监测机制。此方法使性能工具可以监测新增加的执行维度,即任务,为性能分析人员提供必要的性能信息从而识别程序行为,发现性能瓶颈,进而优化程序,提高运行效率。 | ||
搜索关键词: | 监测机制 监测 多核架构 监测模型 跟踪 编程模型 程序行为 附加信息 关联信息 关系描述 任务模式 任务运行 任务执行 性能分析 性能瓶颈 性能信息 优化程序 运行时库 运行效率 自动识别 运行时 多核 维度 调度 应用 展示 分析 发现 | ||
【主权项】:
1.一种面向多核架构的任务监测、跟踪及识别方法,其特征在于包括如下步骤:(1)建立任务监测模型Task Monitoring Model,TMM;(2)将任务监测模型应用于多核编程模型中,实现基于包装库技术的监测跟踪方法;所述步骤(1)中TMM模型包括:(1‑1)面向任务模式的运行时模型;(1‑2)任务监测机制;以及 (1‑3)采用关系描述图的方式将任务运行及关联信息进行展示,从而自动识别;所述面向任务模式的运行时模型(1‑1)包括六个组件,分别为:任务实例,表示为taskIns,是程序运行中的基本执行单元,任务实例拥有静态属性和操作行为,其中静态属性描述taskIns内在固有属性,表示任务实例的固有特性,形式化表达为taskIns.ID=XXX;操作行为包括执行行为和行为状态,所述执行行为描述taskIns在其生命周期内的执行行为,形式化表达为taskIns.execute();所述行为状态本质是一项静态属性,描述taskIns执行过程中各个阶段所处的状态,形式化表达为taskIns.state=XXX;任务池,以一定组织形式放置产生的taskIns,并囊括了其相关信息,包括数据环境和必要的静态属性,所述任务池在系统内存开辟部分空间存放所述相关信息,以链表的形式维持taskIns之间的关系;线程池:任务调度的过程在线程池中寻找空闲线程,根据调度规则完成任务与执行线程的匹配,所述线程为任务的执行载体,是程序的实际执行单元,线程可以是操作系统概念中的用户级线程或系统线程中的一个或多个;调度引擎:任务模式运行时系统的调度控制中心,其中调度单元就是任务实例taskIns,所述调度引擎实时关注任务池和线程池的情况,根据调度策略、上下文环境以及限制条件来调度匹配任务实例taskIns和线程,使两者结合执行,所述调度策略依赖编译器和运行时系统的实现机制;任务控制引擎:负责任务实例taskIns预处理操作,进行数据环境的处理,并将任务实例放入任务池等待调度执行;执行池:用来执行任务实例,一旦有任务实例进入执行池,此任务实例的计算操作就会被立即执行;所述步骤(2)将任务监测模型应用于多核编程模型中,实现基于包装库技术的监测跟踪方法包括:分析GCC OpenMP运行时库的任务执行机制;基于模拟调度的OpenMP任务监测机制;以及基于附加信息的OpenMP任务监测机制,其中所述GCC OpenMP运行时库的任务执行机制包括:任务调度层和执行层包含于OpenMP运行时库,在GNU实现中,任务队列是由两个双向链表来维护的,分别是队列和树形链表,同时同步原语、if语句都将被调度引擎读取,所述调度引擎实时监测线程池,可调度的任务、可用的线程以及调度策略共同决定了任务实例的执行顺序,一旦一个任务实例被调度,其执行实体将被放入执行池中运行;所述基于模拟调度的OpenMP任务监测机制包括:在监测库中仿照运行时系统中的调度引擎研制一个模拟调度引擎,并维持一个任务队列组成模拟任务池,模拟任务池的组织方式由两个双向链表组成,分别以任务队列和树形父子关系的方式来加以组织,其中每个任务实例都附加相关性能信息,所述任务监测的流程为:当显式任务实例被创建后,监测系统除记录创建信息并生成任务ID之外,就使用模拟任务控制引擎将产生的任务实例放入模拟任务池中,同时放入模拟任务池的还有塑封在任务实例之中属性信息,属性信息包括任务ID、创建线程ID以及父任务实例ID;然后将此任务实例放入OpenMP运行时库中的任务控制引擎,进而进入任务池开始正常的执行流程,在这个过程中,实际执行的函数体指针也被监测库包装,在程序执行中,当任务实例被调度引擎调度运行,其实际执行函数被调用时,执行指针指向监测库的包装函数,包装函数实际启动的是监测包装库中的模拟调度引擎,依据调度策略、限制条件和上下文环境来调度模拟任务池中保存的任务实例,调度策略即先来先服务和宽度优先的树状调度策略,由于调度条件一致,模拟调度引擎与运行时系统中的调度结果一致,模拟调度引擎所附加的静态属性信息就会被监测系统记录,匹配此任务实例的执行行为,最后调用任务实例的真正执行函数,运行于执行层,与此同时,记录执行函数的入口和出口信息,并将附加的属性信息记录以区别任务实例,对于挂起操作的任务行为,GCC是使用栈的方式调度的,运行时系统运行完新调度的任务之后将会自动返回当前任务的执行状态;所述基于附加信息的OpenMP任务监测机制包括:在显式任务实例被创建之后,监测库中同名的包装库函数将其截取,进行预处理操作,流程包括:通过函数参数解析和处理原始数据,对数据的处理操作是与运行时系统相一致的;监测系统根据预定义的规则产生任务标识;监测系统使用一个命名为TaskData的自定义的结构体类型,结构体类型包括数据指针、函数指针、任务标识和父任务标识,监测系统将前面处理完毕的原始数据放入这个结构体中,并调用系统动态库中的函数,将其中的数据参数改为结构体TaskData,并将与数据处理相关的参数置空,使附加识别信息的任务实例参与到运行时系统的正常流程。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京物资学院,未经北京物资学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201810421646.5/,转载请声明来源钻瓜专利网。