计算机软件系统中实现任务分解和并行处理控制的方法

文档序号:6437877阅读:597来源:国知局
专利名称:计算机软件系统中实现任务分解和并行处理控制的方法
技术领域
本发明涉及计算机软件系统技术领域,特别涉及计算机软件系统中任务处理方法技术领域,具体是指一种计算机软件系统中实现任务分解和并行处理控制的方法。
背景技术
在仅具有一个单核CPU的计算机系统中,所有任务均以串行方式处理,其处理速度较慢,效率较低。随着,具有双核或多核CPU或具有多个CPU的计算机系统的被广泛应用, 并行处理的任务处理方式也越来越多地被应用于计算机软件系统中。并行处理是指计算机在同一时刻或同一时间间隔内完成两种或两种以上性质相同或不相同的工作。并行处理最显著的优点是提高了运算速度。将η位串行运算与η位并行运算来比较,在元件处理速度相同的情况下,后者运算速度几乎提高为前者的η倍。这是一种资源重复的并行处理方法,它是根据“以数量取胜”的原则大幅度提高运算速度的。但是并行处理还不止于设备的简单重复,它还有更多的含义,如时间重叠和资源共享等。所谓时间重叠是根据流水线处理技术,使多个处理过程在时间上相互错开,轮流使用同一套设备的几个部分。而资源共享则是根据“分时共享”的原则,使多个用户按时间顺序使用同一套设备。在并行任务处理中,对前提要求非常严格,分解任务是首先需要解决的问题。一般情况下,大量使用并行计算不但不会提升性能,反而会适得其反。因为不恰当的任务分解模式和不恰当的资源调度都会导致整体系统的效能反而不如单机单进程单线程系统。在分解任务中,问题(Problem)、场景(context)、条件(Forces)、方案(Solutions)都是要慎重考虑到的。并行任务分解模式之一是任务分解模式(还有数据分解、数据流分解)。目前,在采用任务分解模式时,当子任务的优先级和处理速度发生变化的情况下,需要进行人工干预来调整程序来适应这种变化,而计算机软件系统无法自动进行配置来应对这种变化的发生,从而对并行任务分解模式的应用造成了局限性,使计算机的并行任务处理能力降低。

发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种在采用任务分解模式时,能够配置化应对子任务的各种变化,动态地进行相应的调整,从而无需人工进行干预, 提高了并行任务分解的效率,大幅提升了计算机的并行任务处理能力,且应用方式简便,实现成本低廉,应用范围较为广泛的计算机软件系统中实现任务分解和并行处理控制的方法。为了实现上述的目的,在本发明的计算机软件系统中实现任务分解和并行处理控制的方法中,所述的计算机软件系统中具有连接于任务接收端和处理单元之间的任务调度单元,所述的方法包括以下步骤(1)所述的任务调度单元从所述的任务接收端接收到任务;
(2)所述的任务调度单元将一个任务拆分为多个可独立执行的子任务;(3)所述的任务调度单元确定所述的各子任务间的依赖关系;(4)所述的任务调度单元将所述的各子任务间的依赖关系存储为矩阵结构数据;(5)所述的任务调度单元根据所述的矩阵结构数据确定可并行执行的子任务序列;(6)所述的任务调度单元根据所述的子任务序列将所述的任务发送至所述的处理单元并行执行。该计算机软件系统中实现任务分解和并行处理控制的方法中,所述的任务调度单元将一个任务拆分为多个可独立执行的子任务,具体为所述的任务调度单元将一个任务根据其所需运行的函数拆分为多个具有单独函数的子任务。该计算机软件系统中实现任务分解和并行处理控制的方法中,所述的各子任务间的依赖关系,具体为如果具有一个单独函数的第一子任务以另一个具有一个单独函数的第二子任务的结果为条件,则存在第一子任务依赖于第二子任务的关系。该计算机软件系统中实现任务分解和并行处理控制的方法中,在所述的矩阵结构数据中横轴和纵轴均为顺序排列的子任务,所述的矩阵结构数据中某一横轴坐标与纵轴坐标交叉位置的数据表示该位置对应的横轴子任务对于该位置对应的纵轴子任务的依赖关系。该计算机软件系统中实现任务分解和并行处理控制的方法中,所述的横轴坐标与纵轴坐标交叉位置的数据以二进制数据表示,“ 1”表示该位置对应的横轴子任务对于该位置对应的纵轴子任务有依赖关系,“0”表示该位置对应的横轴子任务对于该位置对应的纵轴子任务没有依赖关系。该计算机软件系统中实现任务分解和并行处理控制的方法中,所述的纵轴子任务对应的各矩阵结构的交叉位置上的二进制数据中有数据“ 1 ”的为被依赖的子任务,所述的纵轴子任务对应的各矩阵结构的交叉位置上的二进制数据均为“0”的为不被依赖的子任务。该计算机软件系统中实现任务分解和并行处理控制的方法中,所述的步骤具体为所述的任务调度单元以所述的不被依赖的子任务个数作为子任务序列的个数,并确定可并行执行的子任务序列。采用了该发明的计算机软件系统中实现任务分解和并行处理控制的方法,其在任务调度单元中,将各子任务间的依赖关系存储为矩阵结构数据,再根据所述的矩阵结构数据确定可并行执行的子任务序列,进而由处理器并行执行。从而能够配置化应对子任务的各种变化,动态地进行相应的调整,自动实现任务的分解,无需人工进行干预,提高了并行任务分解的效率,大幅提升了计算机的并行任务处理能力,且本发明的计算机软件系统中实现任务分解和并行处理控制的方法应用方式简便,实现成本低廉,应用范围较为广泛。


图1为本发明的计算机软件系统中实现任务分解和并行处理控制的方法的流程图。图2为现有技术中以一个单进程处理的网管处理trap告警程序的流程示意图。
图3为现有技术中以一个单进程处理的网管处理trap告警程序的4个函数所需 CPU时间单位示意图。图4为网管处理trap告警程序的4个函数的依赖关系示意图。图5为利用本发明的计算机软件系统中实现任务分解和并行处理控制的方法将网管处理trap告警程序的4个函数的依赖关系以矩阵结构数据表示的示意图。图6为采用本发明的计算机软件系统中实现任务分解和并行处理控制的方法处理的网管处理trap告警程序所需CPU时间单位示意图。图7为采用本发明的计算机软件系统中实现任务分解和并行处理控制的方法在四个CPU上进行开启四个线程处理两个trap告警程序所需CPU时间单位示意图。图8为现有技术中在两个CPU上利用单线程处理两个trap告警程序所需CPU时间单位示意图。图9为现有的计算机的基本组成示意图。图10为实际应用中利用本发明的计算机软件系统中实现任务分解和并行处理控制的方法进行EMS程序的内部数据消息处理流程图。
具体实施例方式为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。请参阅图1所示,为本发明的计算机软件系统中实现任务分解和并行处理控制的方法的流程图。在一种实施方式中,所述的计算机软件系统中具有连接于任务接收端和处理单元之间的任务调度单元,所述的方法包括以下步骤(1)所述的任务调度单元从所述的任务接收端接收到任务;(2)所述的任务调度单元将一个任务拆分为多个可独立执行的子任务;(3)所述的任务调度单元确定所述的各子任务间的依赖关系;(4)所述的任务调度单元将所述的各子任务间的依赖关系存储为矩阵结构数据;(5)所述的任务调度单元根据所述的矩阵结构数据确定可并行执行的子任务序列;(6)所述的任务调度单元根据所述的子任务序列将所述的任务发送至所述的处理单元并行执行。在一种较优选的实施方式中,所述的任务调度单元将一个任务拆分为多个可独立执行的子任务,具体为所述的任务调度单元将一个任务根据其所需运行的函数拆分为多个具有单独函数的子任务。则所述的各子任务间的依赖关系具体为如果具有一个单独函数的第一子任务以另一个具有一个单独函数的第二子任务的结果为条件,则存在第一子任务依赖于第二子任务的关系。在进一步优选的实施方式中,所述的矩阵结构数据中横轴和纵轴均为顺序排列的子任务,所述的矩阵结构数据中某一横轴坐标与纵轴坐标交叉位置的数据表示该位置对应的横轴子任务对于该位置对应的纵轴子任务的依赖关系。其中,所述的横轴坐标与纵轴坐标交叉位置的数据以二进制数据表示,“ 1”表示该位置对应的横轴子任务对于该位置对应的纵轴子任务有依赖关系,“0”表示该位置对应的横轴子任务对于该位置对应的纵轴子任务没有依赖关系。所述的纵轴子任务对应的各矩阵结构的交叉位置上的二进制数据中有数据“ 1 ”的为被依赖的子任务,所述的纵轴子任务对应的各矩阵结构的交叉位置上的二进制数据均为“0”的为不被依赖的子任务。在更优选的实施方式中,所述的步骤(5)中根据所述的矩阵结构数据确定可并行执行的子任务序列,具体为所述的任务调度单元以所述的不被依赖的子任务个数作为子任务序列的个数,并确定可并行执行的子任务序列。在实际应用中,在搭建能够自动、高度可配置子任务执行序列和子任务占用CPU 时序的分布式系统时,数据分解和数据流分解的模式都必须依赖固定的数据格式,也就是说此类系统的需求和功能将被限制,而基于任务分解模式的并行任务处理系统,能够对系统的功能定义高度抽象化,对硬件(CPU内核数、网络速率、硬盘I/O速率等)资源调度也做到抽象化。采用矩阵分解方法来定义并行子任务,能够做到整体系统运算序列调整的可配置化,对系统输入条件变更的自动识别来自动调整系统效能,对系统依赖硬件、网络环境的变更可灵活调整,使的并行任务处理的整体效率始终最优。因此,本发明基本的技术方案是在已有的并行任务处理系统中(包括分布式和单机部署),检索各个可被分解的子任务,识别其依赖关系及运算深度,并以文件形式记录。同时,新增一个任务调度单元,内部以矩阵方式加载子任务信息,并按矩阵内信息生成子任务加载序列。以下以网管处理trap告警程序为例,进行具体说明。如图2所示,在以一个单进程处理的网管处理trap告警程序中,多个trap告警串行被程序中监听162端口的socket接收。其上会有1到η个线程来处理,每个线程中会依次运行 analyO、insertDB()、notifyA()和 notifyB ()这 4 个函数来处理 trap 告警。如图3所示,上述的四个函数,分别耗时50、200、200、300个CPU时钟周期。则在 CPU上时钟周期调度没有明显瓶颈的前提下,一个trap告警程序被完整处理完需要750个时间单位χ。采用本发明的任务分解和并行处理控制的方法,其首先需要确定各函数间的依赖关系。上述4个函数的依赖关系,如图4所示,具体为函数A、analy ()无依赖;函数 B、insertDBO 依赖 analy ();函数C、notifyA()依赖 analy ();函数 D、notifyB ()依赖 insertDB ()以及 analy ()。然后,将上述的依赖关系用如图5所示的矩阵格式数据进行表述。其中,从横轴上看,函数C和函数D下全为0,表示其为可以被拆分的单独子任务;纵轴上看,函数B、函数C 和函数D都对函数A有依赖,函数D对函数B有依赖。在本例中,可以方便地由图4的程序子任务实际依赖关系建立图5的矩阵格式数据。而在复杂的工业生产中,可以在被处理的消息数据包中记录消息数据包的处理流程信息,由程序自动来创建一个事务内各个子任务的依赖关系矩阵X,当然如果存在子任务嵌套(例如函数A内部也许存在函数Al和A2),也可以相应地创建对应的子矩阵X-A。从图5可以看出,函数C、D没有被任何其他函数依赖(纵轴上C、D两项全为0),可以被拆成两个独立的消息处理子任务,而从横轴上看,函数C依赖了函数A,函数D依赖了函数A和B,则可以得到拆分后的两个子任务如图6。根据上述的矩阵格式数据将该任务拆分为如图6所示的两个子任务序列后,在该并行任务中,一个trap告警任务利用2个线程来处理,共耗时550个时间单位x,比之前所述的单线程处理所需的750个时间单位χ节省了 200个时间单位X,从而大幅缩短了任务处理时间,提升了处理效率。图7所示为在四个CPU上进行开启线程,以550个时间单位χ处理完2个trap告警程序。将其与图8所示的在两个CPU上以750个时间单位χ处理完2个trap告警程序的图示相比较,能够明显看出两者的差距。另外,由于当前计算机的基本组成,如图9所示,连接北桥控制芯片的总线运行速度明显快于连接南桥控制芯片的总线运行速度,造成了上述的4个函数内部运行的时间不等,对CPU的计算能力利用效率不等。其中,AnalyO函数运行最快,其为纯粹的CPU和内存间的运算,速度最快,CPU利用效率最高。insertDBO函数内部有网络调度和硬盘I/O操作,耗时最长,内部有阻塞,CPU利用效率最低。notifyAO和notifyBO有网络传输,需要等待驱动层缓冲区消息通知,也有阻塞,相对耗时较长。因此,除了上述所记载的依据函数间的依赖关系进行简单的矩阵分解外,类似的,还可以采用记录函数对CPU占用率的矩阵和记录函数1/0阻塞率的矩阵等等。这些矩阵也可以应用于本发明所述的方法中,并依据已有数学规则进行运算。图10为实际应用中利用本发明的计算机软件系统中实现任务分解和并行处理控制的方法进行EMS程序的内部数据消息处理流程图。其中,左侧方框为ACCESS组件进程, 中间方框为CONFIG组件进程,右侧方框为ALARM组件进程,各独立的进程之间通过SOCKET 方式通讯,内部有一到多个线程单元来处理消息数据(handler和task),由于进程间的独立和线程处理单元的相对独立,可以对流程进行变更和配置管理,来提高事务的整体处理效率。本专利申请文件中,仅以“EMS网络管理程序”图1到图10举例简单说明以矩阵方式存储、计算、管理以消息处理为基本模式的并行任务的原理,实际的工程开发中,不仅用矩阵来记录子任务的依赖关系,也可以用矩阵来记录子任务的运行状态和负载等等信息, 通过预先配置的矩阵模板和矩阵运算公式,来实时计算、分析子任务的运算瓶颈,由程序自动化或人工来调整子任务的计算序列。从而提升系统整体的事务处理能力。通过矩阵分解子任务,系统的整体性能提高。以往调整系统,需要修改程序、重新开发、部署才能改善。如果通过矩阵分解的方法来分析任务和分解任务,就可以配置化系统的子任务执行序列,大大节省开发成本和部署效率,使得在分布式的、多处理器、多进程多线程的大型集群解决方案下,商业化应用推广成本降低。采用了该发明的计算机软件系统中实现任务分解和并行处理控制的方法,其在任务调度单元中,将各子任务间的依赖关系存储为矩阵结构数据,再根据所述的矩阵结构数据确定可并行执行的子任务序列,进而由处理器并行执行。从而能够配置化应对子任务的各种变化,动态地进行相应的调整,自动实现任务的分解,无需人工进行干预,提高了并行任务分解的效率,大幅提升了计算机的并行任务处理能力,且本发明的计算机软件系统中实现任务分解和并行处理控制的方法应用方式简便,实现成本低廉,应用范围较为广泛。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
权利要求
1.一种计算机软件系统中实现任务分解和并行处理控制的方法,其特征在于,所述的计算机软件系统中具有连接于任务接收端和处理单元之间的任务调度单元,所述的方法包括以下步骤(1)所述的任务调度单元从所述的任务接收端接收到任务;(2)所述的任务调度单元将一个任务拆分为多个可独立执行的子任务;(3)所述的任务调度单元确定所述的各子任务间的依赖关系;(4)所述的任务调度单元将所述的各子任务间的依赖关系存储为矩阵结构数据;(5)所述的任务调度单元根据所述的矩阵结构数据确定可并行执行的子任务序列;(6)所述的任务调度单元根据所述的子任务序列将所述的任务发送至所述的处理单元并行执行。
2.根据权利要求1所述的计算机软件系统中实现任务分解和并行处理控制的方法,其特征在于,所述的任务调度单元将一个任务拆分为多个可独立执行的子任务,具体为所述的任务调度单元将一个任务根据其所需运行的函数拆分为多个具有单独函数的子任务。
3.根据权利要求2所述的计算机软件系统中实现任务分解和并行处理控制的方法,其特征在于,所述的各子任务间的依赖关系,具体为如果具有一个单独函数的第一子任务以另一个具有一个单独函数的第二子任务的结果为条件,则存在第一子任务依赖于第二子任务的关系。
4.根据权利要求1至3中任一项所述的计算机软件系统中实现任务分解和并行处理控制的方法,其特征在于,在所述的矩阵结构数据中横轴和纵轴均为顺序排列的子任务,所述的矩阵结构数据中某一横轴坐标与纵轴坐标交叉位置的数据表示该位置对应的横轴子任务对于该位置对应的纵轴子任务的依赖关系。
5.根据权利要求4所述的计算机软件系统中实现任务分解和并行处理控制的方法,其特征在于,所述的横轴坐标与纵轴坐标交叉位置的数据以二进制数据表示,“ 1”表示该位置对应的横轴子任务对于该位置对应的纵轴子任务有依赖关系,“0”表示该位置对应的横轴子任务对于该位置对应的纵轴子任务没有依赖关系。
6.根据权利要求5所述的计算机软件系统中实现任务分解和并行处理控制的方法,其特征在于,所述的纵轴子任务对应的各矩阵结构的交叉位置上的二进制数据中有数据“1” 的为被依赖的子任务,所述的纵轴子任务对应的各矩阵结构的交叉位置上的二进制数据均为“0”的为不被依赖的子任务。
7.根据权利要求6所述的计算机软件系统中实现任务分解和并行处理控制的方法,其特征在于,所述的步骤(5)具体为所述的任务调度单元以所述的不被依赖的子任务个数作为子任务序列的个数,并确定可并行执行的子任务序列。
全文摘要
本发明涉及一种计算机软件系统中实现任务分解和并行处理控制的方法,该计算机软件系统中具有连接于任务接收端和处理单元之间的任务调度单元,在该方法中,任务调度单元将任务分解为各子任务,并将各子任务间的依赖关系存储为矩阵结构数据,再根据所述的矩阵结构数据确定可并行执行的子任务序列,进而由处理器并行执行。利用本发明所提供的方法能够配置化应对子任务的各种变化,动态地进行相应的调整,自动实现任务的分解,无需人工进行干预,提高了并行任务分解的效率,大幅提升了计算机的并行任务处理能力,且本发明的计算机软件系统中实现任务分解和并行处理控制的方法应用方式简便,实现成本低廉,应用范围较为广泛。
文档编号G06F9/50GK102508704SQ20111035457
公开日2012年6月20日 申请日期2011年11月10日 优先权日2011年11月10日
发明者杨昆 申请人:上海市共进通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1