CN108874537A - 基于分段的自适应动态调整线程池大小的方法 - Google Patents
基于分段的自适应动态调整线程池大小的方法 Download PDFInfo
- Publication number
- CN108874537A CN108874537A CN201810508398.8A CN201810508398A CN108874537A CN 108874537 A CN108874537 A CN 108874537A CN 201810508398 A CN201810508398 A CN 201810508398A CN 108874537 A CN108874537 A CN 108874537A
- Authority
- CN
- China
- Prior art keywords
- thread pool
- size
- user
- thread
- request
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供的是一种基于分段的自适应动态调整线程池大小的方法。一,配置线程池动态改变大小的上限Tmax和下限Tmin;二,如果用户请求数量处于上升阶段,使用调整因子向上调线程池的大小;三,如果用户请求数量处于平稳阶段,当用户的请求数大于线程池中的工作线程数量时,以用户请求量为调整线程池大小的目标;四,如果用户请求数量处于下降阶段,使用调整因子向下调线程池的大小;五,线程池大小调整分别同上限Tmax和下限Tmin比较,大于Tmax时,使用Tmax作为线程池大小;小于Tmin时,使用Tmin作为线程池的大小。本发明通过监测线程池的状态并对线程池的尺寸进行调整,最大限度地满足用户的需求。
Description
技术领域
本发明涉及的是一种调整线程池大小的方法,具体地说是一种用于动态调整线程池大小的方法。
背景技术
在互联网技术中线程池得到了广泛的应用,通过引入线程池可以有效的管理线程、控制线程上限总数、以及减少创建和销毁线程所带来的开销。在实际应用中,随着业务的逐步庞大,一个系统对其他越来越多的系统调用增加,在系统中采用统一的线程池实例,可以统一有效的管理线程、减少创建和销毁线程的开销。
线程池技术正是减少线程创建和销毁开销需求的产物,是指在服务器内存中预先创建一定数量的线程,集中管理调度线程,从而来提高系统并发能力。线程池技术在网络类应用服务上有天然的优势,是因为线程池技术有以下特点:
1)线程池的大小可以控制;在内存中预先创建一定数量的线程,通过控制线程的数量,来控制线程池所消耗的内存。
2)对请求的响应速度快;请求到达时,直接使用已有的线程,不需要临时创建线程,可以在最短的时间内处理请求。多请求到达时,并发处理,不需要阻塞等待,并且能够复用线程资源,有效减少因为线程的创建和销毁引起的系统开销。
在线程池技术在应用服务上越来越流行,凡事都有两面性,线程池技术是基于多线程技术实现的,所以在克服传统多线程技术的缺点的同时,在应用的时候还是会有一定的风险,
(1)线程的数量没有上下限制,过于频繁的创建和销毁线程会增加系统的开销,与使用线程池的初衷(减少线程创建和销毁开销)相悖;当请求激增时,可能会因为资源耗尽引发系统的崩溃。
(2)线程的数量过大,系统中参与处理请求的线程过多,多线程之间的同步开销增减变得复杂,同时由于维持线程运行的系统内存开销加大,会造成系统响应的迟缓;
(3)线程的数量过小,线程池中的没有空闲线程,一个新的请求到达,需要放在阻塞队列中等待,影响系统的响应速度。
关于线程池大小调整的方法的公开文献较多,各有其优缺点。如申请号为201510974829.6的专利文件中公开的《用于调整线程池容量的方法及装置》只是对比系统资源对线程池大小的影响,从而找到最优的线程池大小。但是忽略了线程池大小中对任务或者用户请求的响应,导致在在多任务的硬件平台使用线程池时,调整策略失效。再如申请号为201610154360.6的专利文件中公开的《一种线程池管理方法及装置》,多任务共用同一个线程池,增加了线程池调度的复杂性,而且线程池的限制不合理,可能导致线程池频繁的创建和销毁线程池,增加了线程池使用时的资源消耗。
发明内容
本发明的目的在于提供一种能够更好地动态调整线程池大小的基于分段的自适应动态调整线程池大小的方法。
本发明的目的是这样实现的:
步骤一,对用户请求的历史数据进行分析,配置线程池动态改变大小的上限Tmax和下限Tmin;
步骤二,如果用户请求数量处于上升阶段,使用调整因子向上调线程池的大小,具体包括:当用户的请求数小于线程池中的工作线程数量时,使用用户请求数和当前线程池大小的平均值为基准,最近一次的请求增量作为调整因子,调整线程池的大小;当用户的请求数大于线程池中的工作线程数量时,使用平均水平之上的线程池大小为基准,结合最近的请求增量作为调整因子;
步骤三,如果用户请求数量处于平稳阶段,当用户的请求数小于线程池中的工作线程数量时,线程池的大小满足对用户请求的处理的需求;当用户的请求数大于线程池中的工作线程数量时,以用户请求量为调整线程池大小的目标;
步骤四,如果用户请求数量处于下降阶段,使用调整因子向下调线程池的大小,具体包括:当用户的请求数小于线程池中的工作线程数量时,使用用户请求数和当前线程池大小的平均值为基准,最近一次的请求增量作为调整因子,调整线程池的大小;当用户的请求数大于线程池中的工作线程数量时,使用平均水平之上的线程池大小为基准,结合最近的请求增量作为调整因子;
步骤五,线程池大小调整分别同上限Tmax和下限Tmin比较,大于Tmax时,使用Tmax作为线程池大小;小于Tmin时,使用Tmin作为线程池的大小。
通过对线程池中的相关问题分析以及动态线程池中基于平均数的自适动态线程池的分析,不难得到在动态线程池大小的调整的关键是在最大可能的程度上保证对用户请求的处理和响应的前提下,尽可能的节约系统资源。在动态线程池大小的调整时,首先要面向用户的请求,在有限的时间内尽可能的响应用户的请求,即系统平均响应时间短。其次要面向系统,在某一时间片内,动态线程池内的工作线程数量一定,但是系统接受的请求数确实一个为之的随机数,系统的处理能力需要有一定的伸缩性,以保证系统有高的吞吐率前提下,消耗资源降低
在系统接受的请求数下下降阶段时,线程池中的工作线程数大于系统当前的请求数,虽然可以对用户的请求快速响应,但是空置的线程浪费系统资源;在系统接受的请求数上升阶段时,线程池的工作线程数的增加对比系统当前请求数的变化有一定的滞后,在工作线程数达到上限时,不能快速的响应用户的请求。所以说基于平均数的自适应算法并不能很好的调整动态线程池的大小。
附图说明
图1为基于分段的自适应线程池大小调整方法实现流程。
图2是基于分段的自适应线程池的大小随请求变化示意图。
具体实施方式
本发明的主要技术步骤包括:
1)通过对用户请求的历史数据进行科学分析,配置线程池动态改变大小的上限Tmax和下限Tmin;
2)如果用户请求数量处于上升阶段,根据不同的情况,使用不同的调整因子向上调线程池的大小,从而满足用户需求;当用户的请求数小于线程池中的工作线程数量时,表示线程池的中的线程数量富余,使用用户请求数和当前线程池大小的平均值为基准,最近一次的请求增量作为调整因子,小幅调整线程池的大小;当用户的请求数大于线程池中的工作线程数量时,表示线程池过载,通过平均水平之上的线程池大小为基准,结合最近的请求增量作为调整因子。
3)如果用户请求数量处于平稳阶段,表示用户请求稳定波动。当用户的请求数小于线程池中的工作线程数量时,线程池的大小满足对用户请求的处理的需求。当用户的请求数大于线程池中的工作线程数量时,以用户请求量为调整线程池大小的目标。
4)如果用户请求数量处于下降阶段,根据不同的情况,使用不同的调整因子向下调线程池的大小,从而满足用户需求;当用户的请求数小于线程池中的工作线程数量时,表示线程池的中的线程数量富余,使用用户请求数和当前线程池大小的平均值为基准,最近一次的请求增量作为调整因子,小幅调整线程池的大小;当用户的请求数大于线程池中的工作线程数量时,表示线程池过载,通过平均水平之上的线程池大小为基准,结合最近的请求增量作为调整因子。
5)线程池大小调整分别同上限Tmax和下限Tmin比较,大于Tmax时,使用Tmax作为线程池大小;小于Tmin时,使用Tmin作为线程池的大小。
下面举例对本发明做更详细的描述。
在线程池大小动态调整时,首先要面向用户的请求,在有限的时间内尽可能的响应用户的请求,即系统平均响应时间短。其次要面向系统,系统有更高的吞吐量,而且系统的负载更低。在某一时间片内,线程池中的可用线程数量是一定的,而用户请求是随机的,这就会造成系统的处理能力与用户需求不匹配的情况。该方法的基本思想是监测线程池的状态,并对线程池的尺寸进行调整,以最大限度地满足用户的需求。
(1)线程池大小上限Tmax和下限Tmin的确定
根据系统在不同时段里的承受能里,做出相应的调整根据,可以根据用户访问数量,通过对历史访问量的科学统计,通过对不同时段用户请求数量的波峰和波谷的平均值,设定线程池的上限Tmax和Tmin。线程池的大小在上限Tmax和下限Tmin之间动态改变。由于动态线程池在创建和销毁工作线程时消耗一定的系统资源,所以在设定动态线程池的下线限Tmin要适量增大;线程池的上限Tmax要适量减小。
当线程池中的工作线程数量增加到上限后,就停止增长,维持在Tmax避免因为线程数量过多造成系统资源耗尽。
当线程池中的工作线程数量减少到下限后,就停止减少,维持在Tmin避免因为请求数量平凡增减引起的线程频繁创建和销毁。
(2)线程池大小在Tmax和下限Tmin之间的动态调整
线程池的大小自适应请求的变化而改变。对于任何系统,用户请求数量在一段时间内会呈现:请求数量增加阶段、请求数量平稳阶段、请求数量下降阶段。当前请求数量和线程数量分别为Rn、Tn;具有调整流程如图1所示。
在请求数量上升阶段,系统接受的请求数量增加,需要提高系统的并发处理请求能力,加大线程池的大小,新创建工作线程,来满足系统需求。
Tn+1=Rn(1+α),Rn≥Rn-1≥Rn-2且Rn≥Tn
Tn+1=(Tn+Rn)/2+αRn),Rn≥Rn-1≥Rn-2且Rn<Tn
上述等式中,α=(Rn-Rn-1)/Rn,α为动态因子,使动态调整的线程池的大小预测的更加稳定。
在上升阶段,有两种情况出现,即当前系统接受的全部请求数Rn大于等于或者小于系统中当前的线程数量Tn。为了使用系统能够尽快的响应用户的请求,若Rn≥Tn,线程池里面的工作线程数量不能满足用户的需求,所以线程池的大小以Rn为调整基数;若Rn<Tn,线程池里面的工作线程数量能满足用户的需求,但是由于处于用户请求增加阶段,所以线程池大小以(Tn+Rn)/2为调整基数,在这种情况下通过并改进基于平均数的自适应算法,不但保证了稳定性又同时能够满足用户需求,如图2所示,线程池中的工作线程数量,在用户请求数附近稳定波动。
在请求数平稳阶段,系统接受的用户请求数量总体呈稳定性的波动,通过以下算法来预测线程池的大小:
Tn+1=Rn,Rn>Rn-1<Rn-2或Rn<Rn-1>Rn-2且Rn≥Tn
Tn+1=Tn,Rn>Rn-1<Rn-2或Rn<Rn-1>Rn-2且Rn<Tn
由于稳定波动,所以直接以系统接受的用户请求数和当前的线程池大小中,数量大的作为Rn+1,这样做可以使运算开销减小,线程池调整的频率降低,进而提升了系统性能。
在下降段,系统接受的用户请求整体上呈现下降趋势,这时需要下调线程池中的工作线程数量来满足用户的需求。
Tn+1=Rn(1+α),Rn≤Rn-1≤Rn-2且Rn≥Tn
Tn+1=(Tn+Rn)/2+αRn),Rn≤Rn-1≤Rn-2且Rn<Tn
上述等式中,α=(Rn-Rn-1)/Rn,α为动态因子,使动态调整的线程池的大小预测的更加稳定。如图2所示,线程池中的工作线程数量,在用户请求数附近稳定波动。
在下降阶段,同样有两种情况出现,即当前系统接受的全部请求数Rn大于等于或者小于系统中当前的线程数量Tn。若Rn≥Tn,所以线程池的大小以Rn为调整基数;若Rn<Tn,线程池大小以(Tn+Rn)/2为调整基数。
Claims (3)
1.一种基于分段的自适应动态调整线程池大小的方法,其特征是:
步骤一,对用户请求的历史数据进行分析,配置线程池动态改变大小的上限Tmax和下限Tmin;
步骤二,如果用户请求数量处于上升阶段,使用调整因子向上调线程池的大小;
步骤三,如果用户请求数量处于平稳阶段,当用户的请求数小于线程池中的工作线程数量时,线程池的大小满足对用户请求的处理的需求;当用户的请求数大于线程池中的工作线程数量时,以用户请求量为调整线程池大小的目标;
步骤四,如果用户请求数量处于下降阶段,使用调整因子向下调线程池的大小;
步骤五,线程池大小调整分别同上限Tmax和下限Tmin比较,大于Tmax时,使用Tmax作为线程池大小;小于Tmin时,使用Tmin作为线程池的大小。
2.根据权利要求1所述的基于分段的自适应动态调整线程池大小的方法,其特征是用户请求数量处于上升阶段,使用调整因子向上调线程池的大小的方法为:当用户的请求数小于线程池中的工作线程数量时,使用用户请求数和当前线程池大小的平均值为基准,最近一次的请求增量作为调整因子,调整线程池的大小;当用户的请求数大于线程池中的工作线程数量时,使用平均水平之上的线程池大小为基准,结合最近的请求增量作为调整因子。
3.根据权利要求1或2所述的基于分段的自适应动态调整线程池大小的方法,其特征是用户请求数量处于下降阶段,使用调整因子向下调线程池的大小的方法为:当用户的请求数小于线程池中的工作线程数量时,使用用户请求数和当前线程池大小的平均值为基准,最近一次的请求增量作为调整因子,调整线程池的大小;当用户的请求数大于线程池中的工作线程数量时,使用平均水平之上的线程池大小为基准,结合最近的请求增量作为调整因子。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810318589 | 2018-04-11 | ||
CN2018103185898 | 2018-04-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108874537A true CN108874537A (zh) | 2018-11-23 |
Family
ID=64334332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810508398.8A Pending CN108874537A (zh) | 2018-04-11 | 2018-05-24 | 基于分段的自适应动态调整线程池大小的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874537A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885385A (zh) * | 2018-12-21 | 2019-06-14 | 山东中创软件商用中间件股份有限公司 | 一种应用服务器线程池的自调优方法、装置及设备 |
CN110308988A (zh) * | 2019-05-17 | 2019-10-08 | 开放智能机器(上海)有限公司 | 一种应用于异构计算平台的动态调度方法及系统 |
CN111796943A (zh) * | 2020-07-23 | 2020-10-20 | 深圳壹账通智能科技有限公司 | 交互对话中的意图识别方法及装置 |
CN113157410A (zh) * | 2021-03-30 | 2021-07-23 | 北京大米科技有限公司 | 线程池调节方法、装置、存储介质及电子设备 |
CN113194040A (zh) * | 2021-04-28 | 2021-07-30 | 王程 | 瞬时高并发服务器线程池拥塞智能控制方法 |
CN113722117A (zh) * | 2020-11-10 | 2021-11-30 | 北京沃东天骏信息技术有限公司 | 消息队列处理方法、线程池参数调整方法、装置和设备 |
CN115794449A (zh) * | 2023-02-10 | 2023-03-14 | 中科源码(成都)服务机器人研究院有限公司 | 动态线程池构建方法、远程过程调用方法及装置 |
-
2018
- 2018-05-24 CN CN201810508398.8A patent/CN108874537A/zh active Pending
Non-Patent Citations (1)
Title |
---|
孙旭东 等: "基于分段的线程池尺寸自适应调整算法", 《计算机工程》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885385A (zh) * | 2018-12-21 | 2019-06-14 | 山东中创软件商用中间件股份有限公司 | 一种应用服务器线程池的自调优方法、装置及设备 |
CN110308988A (zh) * | 2019-05-17 | 2019-10-08 | 开放智能机器(上海)有限公司 | 一种应用于异构计算平台的动态调度方法及系统 |
CN111796943A (zh) * | 2020-07-23 | 2020-10-20 | 深圳壹账通智能科技有限公司 | 交互对话中的意图识别方法及装置 |
CN113722117A (zh) * | 2020-11-10 | 2021-11-30 | 北京沃东天骏信息技术有限公司 | 消息队列处理方法、线程池参数调整方法、装置和设备 |
CN113157410A (zh) * | 2021-03-30 | 2021-07-23 | 北京大米科技有限公司 | 线程池调节方法、装置、存储介质及电子设备 |
CN113194040A (zh) * | 2021-04-28 | 2021-07-30 | 王程 | 瞬时高并发服务器线程池拥塞智能控制方法 |
CN115794449A (zh) * | 2023-02-10 | 2023-03-14 | 中科源码(成都)服务机器人研究院有限公司 | 动态线程池构建方法、远程过程调用方法及装置 |
CN115794449B (zh) * | 2023-02-10 | 2023-10-03 | 中科源码(成都)服务机器人研究院有限公司 | 动态线程池构建方法、远程过程调用方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874537A (zh) | 基于分段的自适应动态调整线程池大小的方法 | |
US10198292B2 (en) | Scheduling database queries based on elapsed time of queries | |
CN111444012B (zh) | 一种保证延迟敏感应用延迟slo的动态调控资源方法及系统 | |
CN113064712B (zh) | 基于云边环境的微服务优化部署控制方法、系统及集群 | |
CN104657207B (zh) | 远程授权请求的调度方法、业务服务器和调度系统 | |
CN112181613B (zh) | 异构资源分布式计算平台批量任务调度方法及存储介质 | |
US20170212581A1 (en) | Systems and methods for providing power efficiency via memory latency control | |
CN109947619A (zh) | 基于服务质量感知提高吞吐量的多资源管理系统及服务器 | |
US20160019089A1 (en) | Method and system for scheduling computing | |
CN111190719B (zh) | 优化集群资源分配的方法、装置、介质及电子设备 | |
CN106126344A (zh) | 一种任务分配方法及装置 | |
CN107423134B (zh) | 一种大规模计算集群的动态资源调度方法 | |
CN108446180A (zh) | 一种基于数据迁移的数据中心动态任务调度方法 | |
CN113485806A (zh) | 处理任务的方法、装置、设备和计算机可读介质 | |
CN109857574A (zh) | 一种低能耗集群环境下可超载负载感知的服务质量提升方法 | |
CN115237586A (zh) | 深度学习推理性能干扰感知的gpu资源配置方法 | |
CN112463044A (zh) | 一种保证分布式存储系统服务器端读尾延迟的方法及系统 | |
CN115658311A (zh) | 一种资源的调度方法、装置、设备和介质 | |
US20240134688A1 (en) | Job processing method and apparatus, computer device, and storage medium | |
US6009473A (en) | Using callbacks to effectively manage resources | |
US10180712B2 (en) | Apparatus and method for limiting power in symmetric multiprocessing system | |
CN113407313B (zh) | 资源需求感知的多队列调度方法、系统及服务器 | |
CN110427217A (zh) | 基于内容的发布订阅系统匹配算法轻量级并行方法和系统 | |
Htun et al. | Analysis Of Allocation Algorithms In Memory Management | |
CN115391042B (zh) | 一种资源分配方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181123 |
|
RJ01 | Rejection of invention patent application after publication |