CN103605572A - 一种多线程计算装置 - Google Patents
一种多线程计算装置 Download PDFInfo
- Publication number
- CN103605572A CN103605572A CN201310654713.5A CN201310654713A CN103605572A CN 103605572 A CN103605572 A CN 103605572A CN 201310654713 A CN201310654713 A CN 201310654713A CN 103605572 A CN103605572 A CN 103605572A
- Authority
- CN
- China
- Prior art keywords
- actuator
- manager
- task
- peek
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明适用于办公软件领域,提供了一种多线程计算装置,所述装置包括:管理器、多个执行器和存储器,其中,所述管理器,用于对所述装置的初始化,对所述多个执行器的生命周期管理、对所述多个执行器间的通信调度和对多个执行器分配任务;所述执行器,用于封装线程的实现细节,并依据实现细节执行分配的任务;所述存储器,用于取数阶段结果的存储。本发明提供的技术方案具有系统性能和稳定性的提升的优点。
Description
技术领域
本发明属于办公软件领域,尤其涉及一种多线程计算装置。
背景技术
自从2006年Intel公司推出全球首款双核处理器以来,服务器的硬件水平不断提升,今天,配备4核以上多个CPU以及大容量内存的服务器已经成为主流,但是我们的直观感觉是ERP系统中核心计算的性能并没有得到太多提升。影响应用性能提升的关键原因是目前的程序大多是按照单一线程的思路编写的,对多核及多线程的支持不足。
在大型企业的ERP系统中,随着应用复杂度和数据量的不断增长,核心计算的性能和稳定性问题日益突显。比如成本管理中每个月的结转计算,需要把当期企业中所有产品、物料的数据自下而上进行卷积计算。这类核心计算的显著特点是:
第一,计算过程由读取数据和计算两部分构成;
第二,读取的数据量巨大,计算过程复杂;
第三,无并发执行。
按照传统单一线程编程思路,在读取数据阶段,系统资源的消耗主要集中在IO传输和内存读写上,在数据量巨大的情况下,容易发生内存溢出,并且在取数的大段时间内CPU资源使用严重不足;在计算阶段,系统资源的消耗主要集中在CPU的复杂计算上,由于是整体计算,耗时很长,在整个计算过程中,并没有发挥出多核CPU的硬件优势来有效提升计算性能。
发明内容
本发明实施例的目的在于提供一种多线程计算装置,旨在解决现有技术中单线程计算带来的CPU资源使用不足,计算性能不高的问题。
一方面,提供一种多线程计算装置,所述装置包括:管理器、多个执行器和存储器,其中,
所述管理器,用于对所述装置的初始化,对所述多个执行器的生命周期管理、对所述多个执行器间的通信调度和对多个执行器分配任务;
所述执行器,用于封装线程的实现细节,并依据实现细节执行分配的任务;
所述存储器,用于取数阶段结果的存储。
可选的,所述管理器,还用于配制线程的最大数量。
可选的,所述管理器,具体用于依据取树任务和执行器的数量,随机或按模数将任务分发给所述多个执行器。
可选的,所述多个执行器,具体用于按照分发的任务按照执行队列中先进先出的顺序执行取数操作。
在本发明实施例中,本发明提供的技术方案充分利用硬件资源,提高计算性能,将多线程的实现细节封装起来,极大简化了多线程改造的过程,带来系统性能和稳定性的提升的优点。
附图简要说明
图1是本发明具体实施方式提供的一种多线程计算装置的结构图;
图2是本发明具体实施方式提供的多线程计算装置的原理图。
实施本发明的方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明具体实施方式提供一种多线程计算装置,该装置如图1所示,包括:管理器101、多个执行器102和存储器103,其中,
管理器101:用于所述装置的初始化、线程的生命周期管理和线程间的通信调度。由于服务器硬件水平的不同,对多线程支持的能力也有差别,在装置的初始化阶段,可以通过管理器对线程的最大数量进行设定,避免系统过载。作为整个装置的大脑,管理器控制每个执行器(即线程)创建、运行、阻塞和销毁的完整生命周期,并采用了先进的Map-Reduce机制控制取数线程和计算线程的调度,实现了真正意义上的并行计算。
执行器102:真正进行业务操作的实体组件,实际上就是每一个执行线程。执行器封装了线程的实现细节,并依据实现细节执行;包装了业务操作,受管理器的管理和控制。作为业务活动的执行者,执行器拥有独立的执行队列,多个任务在执行器中按照“先进先出”的顺序执行。当执行器被分配取数任务的时候,它执行取数业务操作,并将结果存入存储区;当执行器被分配计算任务的时候,它从存储区获取数据并执行算法计算。
存储区103:负责取数阶段结果的存储。存储区分为一系列小的区域,每个区域有唯一的地址,用于区分不同任务的查询结果。管理器控制取数阶段的数据写入和计算阶段的数据读取。
可选的,上述管理器101还用于配置线程的最大数量。
可选的,上述管理器101具体用于依据取数任务和执行器102的数量,随机或按模数将任务分发给多个执行器102.
如图2所示,为本发明的原理图。图中将从数据库读取数据的操作简称为“取数”,执行取数任务的执行器称为“取数执行器”;将算法计算的过程简称为“计算”,执行计算任务的执行器称为“计算执行器”。下面按照图中的数字标识详细说明装置的原理和机制。
配置。使用本装置进行多线程计算前需要进行配置,主要包括两个方面的内容:一是针对不同的服务器硬件,对线程的最大数量进行设置,避免系统过载,图中配置了最多4个取数线程,2个计算线程;二是设定任务到执行器的分配策略,比如随机分配或按模数分配等。
组件初始化。根据配置创建执行器和存储区。
输入取数请求。这个过程在装置外进行,取数程序由业务系统提供,按照一定的策略分批从数据库中读取数据。它们以取数任务的形式进入装置。
取数任务分配与执行。管理器根据取数任务和执行器的数量,按照用户设定的分配策略分发任务,图中按照模数进行分发,即用任务序号对取数执行器的总数量取模,得到的值即为执行器的序号,比如第1个和第5个任务由执行器1执行,第2个和第6个任务由执行器2执行。分发后的请求进入对应的执行器的执行队列中。各取数执行器按照执行队列中先进先出的顺序执行取数操作。
存储取数结果。每个取数操作完成后,取数执行器会在存储区分配新的区域存储查询结果,并通过事件机制通知管理器取数过程已完成,以及查询结果在存储区中的地址。
计算任务分配与执行。计算程序由业务系统提供。管理器按照用户设定的分配策略向计算执行器分发计算任务,并给出这次计算需要的数据在存储区的地址。分发后的任务进入对应的执行器的执行队列中。各计算执行器按照执行队列中先进先出的顺序执行计算。计算过程首先会按照管理器给定的地址从存储区中获取数据,然后执行算法,计算完成后,对应的数据会从存储区中删除,以保证内存的稳定性。
输出结果。装置返回计算结果。
装置采用了先进的Map-Reduce机制进行多线程调度,各个执行器之间不存在相互依赖,每个执行器节点会定期向管理器报告状态和完成的工作,如果一个节点保持沉默的时间超过了预设值,管理器会认为该执行器出现异常,并把该执行器没有执行完的任务分配给其他节点继续执行。因此,从设计的角度,装置具有非常好的并行性和健壮性。
实施例
在大型企业成本管理的实际应用中,每个月的成本结转操作是整个流程中最关键的核心算法。成本结转是在企业一个会计期间内,对产品树上的产品的所有生产成本和制造费用自下而上的卷积计算,涉及到数据量巨大的业务单据和非常复杂的计算过程,因此传统的单一线程设计容易发生内存溢出和性能问题。下面以一个具体的例子说明本装置在成本结转中的应用成果。
A工厂生产大型起重机械,产品树深度为15层,某会计期间内平均每层产品节点的业务单据数据量为10000条,每个产品节点平均数据量为500条。按照单一线程的处理方式,计算每层节点平均要先查询出10000条数据,缓存在内存中,再执行结转计算。这样平均每层的执行时间在1分钟左右,并且在某些数据量远大于平均值的产品层级上非常容易发生内存溢出的情况。
设应用服务器包含了4颗4核心的CPU,使用本发明提出的多线程计算装置,设置取数线程最大数量为8,结转计算线程最大数量为6。对于产品树的每一层节点,取数策略为每次取不超过1500条的完整产品数据,这样取数线程满负荷运转时可以同时查询最多12000条数据。在取数线程执行过程中,后续的取数请求会在执行队列中排队等待,一旦出现取数完成的情况,新的取数操作立即开始执行,同时结转计算线程启动,对这最多1500条数据进行结转计算,结转计算线程满负荷运转时可以同时处理6组数据的结转。经过测算,在当前服务器条件下,多线程结转平均每层的执行时间在25秒左右,由于内存中缓存的数据使用完毕即销毁,出现内存溢出的可能性大大降低。系统的稳定性和性能有了明显的提升。
反观系统的改造成本,主要体现在如下三个方面:
第一,取数策略的变化,由原有的整层取数变为分批取数;
第二,结转算法的变化,由原有的整层计算变为按数据块计算;
第三,其他适应性变化。
这里面没有牵涉到任何多线程编程的内容,且改造内容对原有系统的破坏性很小。应用程序员可以更多的专注于业务程序的编写,而将多线程的复杂性完全交给计算装置完成,系统改造成本极大地降低。
本领域技术人员可以理解,本发明实施例提供的技术方案全部或部分步骤是可以通过程序指令相关的硬件来完成。比如可以通过计算机运行程来完成。该程序可以存储在可读取存储介质,例如,随机存储器、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的具体实施方式之内所作的等同替换或改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种多线程计算装置,其特征在于,所述装置包括:管理器、多个执行器和存储器,其中,
所述管理器,用于对所述装置的初始化,对所述多个执行器的生命周期管理、对所述多个执行器间的通信调度和对多个执行器分配任务;
所述执行器,用于封装线程的实现细节,并依据实现细节执行分配的任务;
所述存储器,用于取数阶段结果的存储。
2.根据权利要求1所述的装置,其特征在于,
所述管理器,还用于配制线程的最大数量。
3.根据权利要求1所述的装置,其特征在于,
所述管理器,具体用于依据取树任务和执行器的数量,随机或按模数将任务分发给所述多个执行器。
4.根据权利要求1所述的装置,其特征在于,
所述多个执行器,具体用于按照分发的任务按照执行队列中先进先出的顺序执行取数操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310654713.5A CN103605572A (zh) | 2013-12-05 | 2013-12-05 | 一种多线程计算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310654713.5A CN103605572A (zh) | 2013-12-05 | 2013-12-05 | 一种多线程计算装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103605572A true CN103605572A (zh) | 2014-02-26 |
Family
ID=50123801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310654713.5A Pending CN103605572A (zh) | 2013-12-05 | 2013-12-05 | 一种多线程计算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103605572A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106656525A (zh) * | 2016-09-21 | 2017-05-10 | 华为技术有限公司 | 一种数据广播系统、数据广播方法及设备 |
CN107193539A (zh) * | 2016-03-14 | 2017-09-22 | 北京京东尚科信息技术有限公司 | 多线程并发处理方法和多线程并发处理系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006083541A2 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Bifurcated thread scheduler in a multithreading microprocessor |
CN102508643A (zh) * | 2011-11-16 | 2012-06-20 | 刘大可 | 一种多核并行数字信号处理器及并行指令集的运行方法 |
CN102831011A (zh) * | 2012-08-10 | 2012-12-19 | 上海交通大学 | 一种基于众核系统的任务调度方法及装置 |
CN102902512A (zh) * | 2012-08-31 | 2013-01-30 | 浪潮电子信息产业股份有限公司 | 一种基于多线程编程及消息队列的多线程并行处理方法 |
-
2013
- 2013-12-05 CN CN201310654713.5A patent/CN103605572A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006083541A2 (en) * | 2005-02-04 | 2006-08-10 | Mips Technologies, Inc. | Bifurcated thread scheduler in a multithreading microprocessor |
CN102508643A (zh) * | 2011-11-16 | 2012-06-20 | 刘大可 | 一种多核并行数字信号处理器及并行指令集的运行方法 |
CN102831011A (zh) * | 2012-08-10 | 2012-12-19 | 上海交通大学 | 一种基于众核系统的任务调度方法及装置 |
CN102902512A (zh) * | 2012-08-31 | 2013-01-30 | 浪潮电子信息产业股份有限公司 | 一种基于多线程编程及消息队列的多线程并行处理方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193539A (zh) * | 2016-03-14 | 2017-09-22 | 北京京东尚科信息技术有限公司 | 多线程并发处理方法和多线程并发处理系统 |
CN106656525A (zh) * | 2016-09-21 | 2017-05-10 | 华为技术有限公司 | 一种数据广播系统、数据广播方法及设备 |
CN106656525B (zh) * | 2016-09-21 | 2019-12-24 | 华为技术有限公司 | 一种数据广播系统、数据广播方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10911367B2 (en) | Computerized methods and systems for managing cloud computer services | |
US8650340B2 (en) | Multi-core query processing using asynchronous buffers | |
KR101502896B1 (ko) | 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법 | |
CN102902512B (zh) | 一种基于多线程编程及消息队列的多线程并行处理方法 | |
US8429096B1 (en) | Resource isolation through reinforcement learning | |
CN109558237A (zh) | 一种任务状态管理方法及装置 | |
US11025561B2 (en) | Systems and methods for computing infrastructure resource allocation | |
JP6825103B2 (ja) | 計算リソース割り振り | |
CN104111897A (zh) | 一种数据处理方法、装置及计算机系统 | |
CN100383792C (zh) | 缓存数据库数据组织方法 | |
US20160182320A1 (en) | Techniques to generate a graph model for cloud infrastructure elements | |
CN103106152A (zh) | 基于层次存储介质的数据调度方法 | |
CN104076906A (zh) | 一种面向数据的信息技术系统 | |
CN102708009A (zh) | 一种基于cuda实现多任务共享gpu的方法 | |
US8954969B2 (en) | File system object node management | |
CN110321331A (zh) | 利用多级散列函数来确定存储地址的对象存储系统 | |
Hendler et al. | Exploiting locality in lease-based replicated transactional memory via task migration | |
US20120331124A1 (en) | Constraint definition for capacity mangement | |
CA2912691C (en) | Input-output prioritization for database workload | |
JP2014191521A (ja) | マルチコアプロセッサおよび制御方法 | |
CN103605572A (zh) | 一种多线程计算装置 | |
Kounev et al. | Serverless computing: What it is, and what it is not? | |
JP2011253334A (ja) | 仮想計算機およびcpu割り当て方法 | |
CN107528871A (zh) | 存储系统中的数据分析 | |
CN107346342A (zh) | 一种基于存储计算的文件调用方法与系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park Applicant after: Yonyou Network Technology Co., Ltd. Address before: 100094 Beijing city Haidian District North Road No. 68, UFIDA Software Park Applicant before: UFIDA Software Co., Ltd. |
|
COR | Change of bibliographic data | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140226 |