CN107463441A - 一种线程数量控制方法及设备 - Google Patents
一种线程数量控制方法及设备 Download PDFInfo
- Publication number
- CN107463441A CN107463441A CN201710525715.2A CN201710525715A CN107463441A CN 107463441 A CN107463441 A CN 107463441A CN 201710525715 A CN201710525715 A CN 201710525715A CN 107463441 A CN107463441 A CN 107463441A
- Authority
- CN
- China
- Prior art keywords
- thread
- current
- value
- default
- maximum
- 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.)
- Granted
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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/505—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 the load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Power Sources (AREA)
Abstract
本发明提供了一种线程数量控制方法及设备,属于计算机技术领域。本发明实施例提供的线程数量控制方法及设备,可以获取当前***环境参数,然后根据当前***环境参数来确定最大线程数,在当前***环境参数变化时,即,***的运行状态发生变化时,可实现最大线程数的实时调节,保证了***资源能够最大程度得到合理化的利用,使***资源利用率能够保持最优,同时避免了由于所建立线程的数量过大而导致***不稳定的问题,保证了***的稳定性。
Description
技术领域
本发明属于计算机技术领域,特别是涉及一种线程数量控制方法及设备。
背景技术
计算机***中,会使用各种***资源进行任务处理,当有任务需要处理时,***会收到访问指定***资源的请求,***对该请求建立线程,然后利用所建立的线程对该请求进行处理。为了充分利用***资源,通常会采用多线程方式实现对多个请求的并行处理。然而过高的线程数量会因资源争用、线程切换等导致过多的资源消耗在非必要任务操作上,使得***因资源消耗过多而导致***不稳定影响对请求进行处理的效率。因此,需要对线程数量进行控制以使资源利用达到最优。
现有技术中,通常是在***启动时,设置一个最大线程数量,并控制当前已建立的线程数量不大于所预先设置的该最大线程数量,进而实现线程控制。
然而,在***运行负载较大的时候,如果继续根据现有技术中预先设置的最大线程数来建立线程,可能会出现建立的线程数量过多而导致***不稳定,进而影响***的资源利用率。
发明内容
本发明提供一种线程数量控制方法及设备,以便解决线程数量过多而导致***不稳定,进而影响***的资源利用率问题。
依据本发明的第一方面,提供了一种线程数量控制方法,该方法包括:
获取当前***环境参数值;
将所述当前***环境参数值在预设的线程映射表中进行匹配,确定当前最大线程数;其中,所述预设的线程映射表用于表示***环境参数值与最大线程数的对应关系;所述当前最大线程数是***在当前状态下能够运行的最大线程数。
可选的,所述当前***环境参数值包括:当前中央处理器CPU占有率值、当前丢包率值以及当前CPU温度值;
所述将所述当前***环境参数值在预设的线程映射表中进行匹配,确定当前最大线程数的步骤,包括:
分别将当前CPU占有率值、当前丢包率值以及当前CPU温度值在预设的线程映射表中匹配,确定出所述当前CPU占有率值对应的第一线程数、当前丢包率值对应的第二线程数以及当前CPU温度值对应的第三线程数;
将所述第一线程数、第二线程数以及第三线程数中最小的线程数确定为当前最大线程数。
可选的,所述方法还包括:
在***开机时,根据配置文件确定预设最大线程数,以作为当前最大线程数。
可选的,所述根据配置文件确定预设最大线程数的步骤,包括:
获取配置文件中初始配置子文件中的初始线程数;
当***为首次开机时,将所述初始线程数确定为预设最大线程数;
当***不为首次开机时,提取所述配置文件中的中间配置子文件中的使用率最高线程数,将所述使用率最高线程数确定为预设最大线程数。
可选的,所述方法还包括:
当***中有待建任务时,判断当前线程数是否小于当前最大线程数;
若所述当前线程数小于当前最大线程数,则针对所述待建任务建立对应线程。
依据本发明的第二方面,提供了一种线程数量控制设备,该设备包括:
获取模块,用于获取当前***环境参数值;
第一确定模块,用于将所述当前***环境参数值在预设的线程映射表中进行匹配,确定当前最大线程数;其中,所述预设的线程映射表用于表示***环境参数值与最大线程数的对应关系;所述当前最大线程数是***在当前状态下能够运行的最大线程数。
可选的,所述第一确定模块,包括:
匹配子模块,用于分别将当前CPU占有率值、当前丢包率值以及当前CPU温度值在预设的线程映射表中匹配,确定出所述当前CPU占有率值对应的第一线程数、当前丢包率值对应的第二线程数以及当前CPU温度值对应的第三线程数;
第一确定子模块,用于将所述第一线程数、第二线程数以及第三线程数中最小的线程数确定为当前最大线程数。
可选的,所述设备还包括:
第二确定模块,用于在***开机时,根据配置文件确定预设最大线程数,以作为当前最大线程数。
可选的,所述第二确定模块,包括:
获取子模块,用于获取配置文件中初始配置子文件中的初始线程数;
第二确定子模块,用于当***为首次开机时,将所述初始线程数确定为预设最大线程数;
第三确定子模块,用于当***不为首次开机时,提取所述配置文件中的中间配置子文件中的使用率最高线程数,将所述使用率最高线程数确定为预设最大线程数。
可选的,所述设备还包括:
判断模块,用于当***中有待建任务时,判断当前线程数是否小于当前最大线程数;
建立模块,用于若所述当前线程数小于当前最大线程数,则针对所述待建任务建立对应线程。
针对在先技术,本发明具备如下优点:
本发明提供的线程数量控制方法及设备,可以获取当前***环境参数,然后根据当前***环境参数来确定最大线程数,在当前***环境参数变化时,即,***的运行状态发生变化时,可实现最大线程数的实时调节,保证了***资源能够最大程度得到合理化的利用,使***资源利用率能够保持最优,同时避免了由于所建立线程的数量过大而导致***不稳定的问题,保证了***的稳定性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明实施例一提供的一种线程数量控制方法的步骤流程图;
图2是本发明实施例二提供的另一种线程数量控制方法的步骤流程图;
图3是本发明实施例三提供的一种线程数量控制设备的框图;
图4是本发明实施例四提供的另一种线程数量控制设备的框图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
实施例一
图1是本发明实施例一提供的一种线程数量控制方法的步骤流程图,如图1所示,该方法可以包括:
步骤101、获取当前***环境参数值。
本发明实施例中的当前***环境参数值可以反映当前***的运行状况。本发明实施例中,可以周期性的检测当前***环境参数值,通过获取当前***环境参数值,来进一步根据当前***环境参数值确定当前最大线程数。其中,该当前***环境参数值可以包括:当前中央处理器(Central Processing Unit,CPU)占用率值、当前丢包率值以及当前CPU温度值。其中,CPU占用率,是指***运行时占用的CPU资源,表示***当前的运行情况,CPU占用率越高,说明当前***运行时占用的CPU资源较多,反之较少;丢包率,是指***在发送数据时所丢失数据包数量占所发送数据包的比率。实际应用中,该当前***环境参数值还可以包括其他参数值,比如,内存占用率等,本发明实施例对此不作限定。
步骤102、将所述当前***环境参数值在预设的线程映射表中进行匹配,确定当前最大线程数。
其中,该当前最大线程数是***在当前状态下能够运行的最大线程数,该预设的线程映射表用于表示***环境参数值与最大线程数的对应关系。
由于预设的线程映射表表示***环境参数值与最大线程数的对应关系,因此,可以将当前***环境参数值在映射表中进行匹配,来确定当前***环境参数对应的当前最大线程数。
综上所述,本发明实施例一提供的线程数量控制方法,可以获取当前***环境参数,然后根据当前***环境参数来确定最大线程数,在当前***环境参数变化时,即,***的运行状态发生变化时,可实现最大线程数的实时调节,保证了***资源能够最大程度得到合理化的利用,使***资源利用率能够保持最优,同时避免了由于所建立线程的数量过大而导致***不稳定的问题,保证了***的稳定性。
实施例二
图2是本发明实施例二提供的另一种线程数量控制方法的步骤流程图,如图2所示,该方法可以包括:
步骤201、在***开机时,根据配置文件确定预设最大线程数,以作为当前最大线程数。
本发明实施例中的***为计算机***,其中,该计算机***由计算机硬件和软件两部分组成。硬件部分可以包括中央处理机、存储器和外部设备等,软件部分可以是计算机的运行程序和相应的文档。计算机***可以接收和存储信息、按程序快速计算和判断并输出处理结果。其中,配置文件一般储存在***的本地硬盘驱动器上,通常可以包括用户使用***时的设置和文件的集合等。
由于***刚开机的时候,***的各项环境参数均为0,此时无法根据当前***环境参数值来确定最大线程数。因此,需要根据配置文件确定预设最线程数,以作为当前最大线程数。解决***刚开机时无法根据当前***环境参数值来确定当前最大线程数的问题,保证了***的稳定性。
具体的,步骤201可以包括:
步骤2011、获取配置文件中初始配置子文件中的初始线程数。
其中,配置文件中可以包括初始配置子文件,该初始配置子文件可以是***在开发阶段预先设置的文件,示例的,可以用“config_defautl.ini”来表示。该初始配置子文件中存储有预先设置的初始线程数,该初始线程数可以是开发人员根据***的硬件配置,确定的一个确保***能够承载的合理值。
步骤2012、当***为首次开机时,将所述初始线程数确定为预设最大线程数。
本发明实施例中,***首次开机表示该***为首次开机运行,此时该配置文件中仅包含初始配置子文件,因此,可以将初始配置子文件中的初始线程数提取出来,确定为预设最大线程数。
示例的,假设该初始配置子文件的内容为:
#默认线程启动数量
default_thread_count=5;
可以看出,预设的初始线程数为5,此时,可以将5确定为预设最大线程数。
步骤2013、当***不为首次开机时,提取所述配置文件中的中间配置子文件中的占用率最高线程数,将所述占用率最高线程数确定为预设最大线程数。
本发明实施例中,当***不为首次开机时,则表示该***之前已经运行过,一般***运行过程中会产生中间配置子文件。因此,当***的本次开机不是首次开机时,***的配置文件中会包括之前运行过程中产生的中间配置子文件,示例的,可以用“config_run.ini”来表示。本发明实施例中的中间配置子文件可以包括之前***运行过程中所使用的最大线程数的历史数据,根据这些历史数据可以确定出***之前运行过程中,占用率最高的线程数。此时,可以将该占用率最高线程数确定为预设最大线程数。本发明实施例中,将占用率最高线程数确定为预设最大线程数,由于占用率最高线程数更符合实际情况,因此,将占用率最高线程数确定为预设最大线程数,能够保证***在刚开机运行时,被设置的最大线程数更加合理,进一步保证了***的正常运行以及稳定性。
示例的,假设该中间配置子文件的内容为:
#使用最多的线程数量
max_rate_thread_count=3;
#线程数量为5被检测到的次数
thread_count_5=2;
#线程数量为4被检测到的次数
thread_count_4=14;
#线程数量为3被检测到的次数
thread_count_3=35;
#线程数量为2被检测到的次数
thread_count_2=32;
#线程数量为1被检测到的次数
thread_count_1=20;
可以看出,线程数3被使用的次数最多,可以确定占用率最高线程数为3,此时,可以将3确定为预设最大线程数。
步骤202、获取当前***环境参数值。
示例的,在获取当前CPU占用率值的时候,可以根据***当前线程占用的时间来确定CPU占用率值。假设***中目前包括两个线程,线程A以及线程B。在当前周期内,线程A占用时间10毫秒(millisecond,ms),线程B占用30ms,空闲60ms,然后重复上述操作,线程A占10ms,线程B占30ms,空闲60ms;那么可以确定当前CPU占用率值为40%;在获取当前丢包率的时候,可以检测当前周期内,发送数据时丢失的数据包站所发送数据包的比率,假如当前周期内发送100个数据包,其中丢失2个数据包,那么可以确定当前丢包率值为2%;在获取当前CPU温度的时候,可以通过***中的温度传感器检测CPU当前的温度,然后将检测到的温度确定为当前CPU温度值。
本发明实施例中,可以是周期性的获取当前***环境参数值,示例的,可以每间隔5分钟获取当前***环境参数值,在获取参数值之前,可以先检测***当前是否存在已建立的线程,如果存在,则获取当前***环境参数值;如果不存在,则等待下一周期。本发明实施例中,对于周期的具体时间不作限定,具体实现的时候,可以根据实际需求来设定。设定合理的周期时长,可以避免频繁更换当前最大线程数影响***工作的问题。在获取到当前***环境参数值之后,可以将该当前***环境参数值写入***的中间配置子文件中。示例的,假设获取到的当前***环境参数值为:CPU占用率值=35%,当前丢包率值=5%,当前CPU温度值=55摄氏度(℃)。那么可以将上述数据写入中间配置子文件“config_run.ini”中存储起来。
步骤203、将所述当前***环境参数值在预设的线程映射表中进行匹配,确定当前最大线程数。
示例的,可以从***的中间配置子文件“config_run.ini”中读取上述步骤202中获取到的当前***环境参数值,然后利用读取到的当前***环境参数值,在预设的线程映表中进行匹配,进而确定当前最大线程数。
具体的,步骤203可以包括:
步骤2031、分别将当前CPU占用率值、当前丢包率值以及当前CPU温度值在预设的线程映射表中匹配,确定出所述当前CPU占有率值对应的第一线程数、当前丢包率值对应的第二线程数以及当前CPU温度值对应的第三线程数。
本发明实施例对于匹配的顺序不做限定,示例的,在进行匹配时,可以是先将当前CPU占用率值在预设的线程映射表中匹配,确定出与该当前CPU占用率对应的第一线程数,然后再将当前丢包率值在预设的线程映射表中匹配,确定出与该当前丢包率值对应的第二线程数,最后将当前CPU温度值在预设的线程映射表中匹配,确定出与该当前CPU温度值对应的第三线程数。也可以是同时将当前CPU占用率值、当前丢包率值以及当前CPU温度值在预设的线程映射表中匹配,确定出该三个参数值分别对应的第一线程数、第二线程数以及第三线程数。
示例的,假设预设的线程映射表如下所示:
最大线程数 | CPU占用率(%) | 丢包率(%) | CPU温度(℃) |
5 | 0-19 | 0-9 | 0-39 |
4 | 20-29 | 10-19 | 40-59 |
3 | 30-39 | 20-39 | 60-69 |
2 | 40-69 | 40-84 | 70-74 |
1 | 70-89 | 85-94 | 75-79 |
0 | 90-100 | 95-100 | 80-85 |
预设的线程映射表
假设上表中CPU占用率所在列,由上至下的每一行分别表示CPU占用率值第一参数区间、CPU占用率值第二参数区间、CPU占用率值第三参数区间、CPU占用率值第四参数区间以及CPU占用率值第五参数区间;以此类推,丢包率所在列,由上至下的每一行分别表示丢包率值第一参数区间、丢包率值第二参数区间、丢包率值第三参数区间、丢包率值第四参数区间以及丢包率值第五参数区间;CPU温度所在列,由上至下的每一行分别表示CPU温度值第一参数区间、CPU温度值第二参数区间、CPU温度值第三参数区间、CPU温度值第四参数区间以及CPU温度值第五参数区间。从上表中可以看出,每一个参数区间对应一个最大线程数。
具体在匹配的时候,可以先在预设的线程映射表中,确定当前***环境参数值的所属参数区间,然后将该所属参数区间对应的最大线程数,确定为该当前***环境参数值对应的线程数。
以上述步骤202中获取的当前***环境参数值:当前CPU占用率=35%,当前丢包=5%,当前CPU温度=55℃为例,通过将CPU占用率=35%在表中匹配,确定出当前CPU占用率值所属参数区间为CPU占用率值第三参数区间“30-39”内,可以将CPU占用率值第三参数区间对应的最大线程数3确定为当前CPU占用率值对应的第一线程数;通过将丢包率=5%在表中匹配,确定出当前丢包率值所属参数区间为丢包率值第一参数区间“0-9”内,可以将丢包率值第一参数区间对应的最大线程数5确定为当前丢包率值对应的第二线程数;通过将CPU温度=55℃在表中匹配,确定出当前CPU温度值所属参数区间为CPU温度值第二参数区间“40-59”内,可以将CPU温度值第二参数区间对应的最大线程数4确定为当前CPU温度值对应的第三线程数。
步骤2032、将所述第一线程数、第二线程数以及第三线程数中最小的线程数确定为当前最大线程数。
本发明实施例中,通过将第一线程数、第二线程数以及第三线程数中最小的线程数确定为当前最大线程数,可以保证***以该当前最大线程数运行时,能够稳定运行。示例的,假设根据当前CPU占有率值确定出来的第一线程数为3,根据当前丢包率值确定出来的第二线程数为4,根据当前CPU温度值确定出来的第三线程数为5,如果不选取最小的线程数作为当前最大线程数,假设将5确定为当前最大线程数,那么当***以该最大线程数5运行的时候,可能会导致CPU占有率以及丢包率更高,进而产生***卡顿,导致***更加不稳定。因此,将最小的线程数,即,第一线程数3确定为当前最大线程数确定为当前最大线程数,可以保证***以该最大线程数3运行时能够保持稳定状态。
上述根据当前***环境参数确定当前最大线程数的过程,可以以公式的形式来表述:
M=min(mach(′cpu′,cpu_value)mach(′PacketLossRate′,plr_value),mach(′tem perature′,tmp_value));
其中,“M”表示当前最大线程数;min(*)表示取最小值函数,mach(*)为匹配函数;“mach(′cpu′,cpu_value)”表示将当前CPU占用率值在预设的线程映射表中匹配,确定对应的第一线程数;“mach(′PacketLossRate′,plr_value)”表示将当前丢包率值在预设的线程映射表中匹配,确定对应的第二线程数;“mach(′temperature′,tmp_value)”表示将当前CPU温度值在预设的线程映射表中匹配,确定对应的第三线程数。
需要说明的是,本发明实施例中,在确定出当前最大线程数之后,可以将该当前最大线程数记录在中间配置子文件中,这样将每个周期确定出来的当前最大线程数记录下来,可以统计出占用率最高的线程数,作为***开机时确定的初始最大线程数的数据依据。
步骤204、当***中有待建任务时,判断当前线程数是否小于当前最大线程数。
其中,当前线程数表示***目前已经建立的线程数,当前最大线程数表示目前***最多能够建立的线程数。如果当前线程数小于当前最大线程数时,说明***此时还可以承载更多的线程。示例的,***可以周期性的检测***中是否有待建任务,例如,该周期时长可以为2分钟。如果检测到有待建任务,可以进一步判断当前线程数是否小于当前最大线程数;如果未检测到有待建任务,则等待下一周期。
步骤205、若所述当前线程数小于当前最大线程数,则针对所述待建任务建立对应线程。
示例的,假设***中存在待建任务a,当前线程数为3,当前最大线程数为4。由于当前线程数3小于当前最大线程数4,因此,可以针对该待建任务a建立对应的新线程。本发明实施例中,在针对待建任务建立对应的线程的时候,会先对比当前线程数和当前最大线程数的大小关系,进而确定是否建立新线程。这样,可以保证***的当前线程数不会超过最大线程数,保证了***的稳定运行。实际应用中,本发明实施例在实现的时候,可以是基于树莓派电脑,利用C开发语言实现的。这样实现成本较低,且代码比较精简,执行效率高。具体的,也可以通过其他类型的电脑,例如,基于linux***的电脑或者是基于windows***的电脑,本发明实施例对此不作限定。
综上所述,本发明实施例二提供的线程数量控制方法,在***开机时,可以根据配置文件确定预设最线程数,以作为当前最大线程数。解决了***刚开机时,无法根据当前***环境参数值来确定当前最大线程数的问题,保证了***的稳定性;同时在运行过程中,可以获取当前***环境参数,然后根据当前***环境参数来确定最大线程数,在当前***环境参数变化时,即,***的运行状态发生变化时,可实现最大线程数的实时调节,保证了***资源能够最大程度得到合理化的利用,使***资源利用率能够保持最优,同时避免了由于所建立线程的数量过大而导致***不稳定的问题,保证了***的稳定性;且在针对待建任务建立对应的线程的时候,会先对比当前线程数和当前最大线程数的大小关系,进而来确定是否建立新线程。这样,可以保证***的当前线程数不会超过最大线程数,进一步保证了***的稳定性稳定运行。
实施例三
图3是本发明实施例三提供的一种线程数量控制设备的框图,如图3所示,该设备30可以包括:
获取模块301,用于获取当前***环境参数值。
第一确定模块302,用于将所述当前***环境参数值在预设的线程映射表中进行匹配,确定当前最大线程数;其中,所述预设的线程映射表用于表示***环境参数值与最大线程数的对应关系;所述当前最大线程数是***在当前状态下能够运行的最大线程数。
综上所述,本发明实施例三提供的线程数量控制设备,可以获取当前***环境参数,然后根据当前***环境参数来确定最大线程数,在当前***环境参数变化时,即,***的运行状态发生变化时,可实现最大线程数的实时调节,保证了***资源能够最大程度得到合理化的利用,使***资源利用率能够保持最优,同时避免了由于所建立线程的数量过大而导致***不稳定的问题,保证了***的稳定性。
实施例四
图4是本发明实施例四提供的另一种线程数量控制设备的框图,如图4所示,该设备40可以包括:
获取模块401,用于获取当前***环境参数值。
第一确定模块402,用于将所述当前***环境参数值在预设的线程映射表中进行匹配,确定当前最大线程数;其中,所述预设的线程映射表用于表示***环境参数值与最大线程数的对应关系;所述当前最大线程数是***在当前状态下能够运行的最大线程数。
第二确定模块403,用于在***开机时,根据配置文件确定预设最大线程数,以作为当前最大线程数。
判断模块404,用于当***中有待建任务时,判断当前线程数是否小于当前最大线程数。
建立模块405,用于若所述当前线程数小于当前最大线程数,则针对所述待建任务建立对应线程。
可选的,上述第一确定模块402,可以包括:
匹配子模块,用于分别将当前CPU占有率值、当前丢包率值以及当前CPU温度值在预设的线程映射表中匹配,确定出所述当前CPU占有率值对应的第一线程数、当前丢包率值对应的第二线程数以及当前CPU温度值对应的第三线程数。
第一确定子模块,用于将所述第一线程数、第二线程数以及第三线程数中最小的线程数确定为当前最大线程数。
可选的,上述第二确定模块403,可以包括:
获取子模块,用于获取配置文件中初始配置子文件中的初始线程数。
第二确定子模块,用于当***为首次开机时,将所述初始线程数确定为预设最大线程数。
第三确定子模块,用于当***不为首次开机时,提取所述配置文件中的中间配置子文件中的使用率最高线程数,将所述使用率最高线程数确定为预设最大线程数。
综上所述,本发明实施例四提供的线程数量控制设备,在***开机时,可以根据配置文件确定预设最线程数,以作为当前最大线程数。解决了***刚开机时,无法根据当前***环境参数值来确定当前最大线程数的问题,保证了***的稳定性;同时在运行过程中,可以获取当前***环境参数,然后根据当前***环境参数来确定最大线程数,在当前***环境参数变化时,即,***的运行状态发生变化时,可实现最大线程数的实时调节,保证了***资源能够最大程度得到合理化的利用,使***资源利用率能够保持最优,同时避免了由于所建立线程的数量过大而导致***不稳定的问题,保证了***的稳定性;且在针对待建任务建立对应的线程的时候,会先对比当前线程数和当前最大线程数的大小关系,进而来确定是否建立新线程。这样,可以保证***的当前线程数不会超过最大线程数,进一步保证了***的稳定性稳定运行。
对于上述装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域技术人员易于想到的是:上述各个实施例的任意组合应用都是可行的,故上述各个实施例之间的任意组合都是本发明的实施方案,但是由于篇幅限制,本说明书在此就不一一详述了。
在此提供的线程数量控制方法不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造具有本发明方案的***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的视频中背景音乐的识别方法中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种线程数量控制方法,其特征在于,所述方法包括:
获取当前***环境参数值;
将所述当前***环境参数值在预设的线程映射表中进行匹配,确定当前最大线程数;其中,所述预设的线程映射表用于表示***环境参数值与最大线程数的对应关系;所述当前最大线程数是***在当前状态下能够运行的最大线程数。
2.根据权利要求1所述的方法,其特征在于,所述当前***环境参数值包括:当前中央处理器CPU占有率值、当前丢包率值以及当前CPU温度值;
所述将所述当前***环境参数值在预设的线程映射表中进行匹配,确定当前最大线程数的步骤,包括:
分别将当前CPU占有率值、当前丢包率值以及当前CPU温度值在预设的线程映射表中匹配,确定出所述当前CPU占有率值对应的第一线程数、当前丢包率值对应的第二线程数以及当前CPU温度值对应的第三线程数;
将所述第一线程数、第二线程数以及第三线程数中最小的线程数确定为当前最大线程数。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在***开机时,根据配置文件确定预设最大线程数,以作为当前最大线程数。
4.根据权利要求3所述的方法,其特征在于,所述根据配置文件确定预设最大线程数的步骤,包括:
获取配置文件中初始配置子文件中的初始线程数;
当***为首次开机时,将所述初始线程数确定为预设最大线程数;
当***不为首次开机时,提取所述配置文件中的中间配置子文件中的使用率最高线程数,将所述使用率最高线程数确定为预设最大线程数。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当***中有待建任务时,判断当前线程数是否小于当前最大线程数;
若所述当前线程数小于当前最大线程数,则针对所述待建任务建立对应线程。
6.一种线程数量控制设备,其特征在于,所述设备包括:
获取模块,用于获取当前***环境参数值;
第一确定模块,用于将所述当前***环境参数值在预设的线程映射表中进行匹配,确定当前最大线程数;其中,所述预设的线程映射表用于表示***环境参数值与最大线程数的对应关系;所述当前最大线程数是***在当前状态下能够运行的最大线程数。
7.根据权利要求6所述的设备,其特征在于,所述第一确定模块,包括:
匹配子模块,用于分别将当前CPU占有率值、当前丢包率值以及当前CPU温度值在预设的线程映射表中匹配,确定出所述当前CPU占有率值对应的第一线程数、当前丢包率值对应的第二线程数以及当前CPU温度值对应的第三线程数;
第一确定子模块,用于将所述第一线程数、第二线程数以及第三线程数中最小的线程数确定为当前最大线程数。
8.根据权利要求6所述的设备,其特征在于,所述设备还包括:
第二确定模块,用于在***开机时,根据配置文件确定预设最大线程数,以作为当前最大线程数。
9.根据权利要求8所述的设备,其特征在于,所述第二确定模块,包括:
获取子模块,用于获取配置文件中初始配置子文件中的初始线程数;
第二确定子模块,用于当***为首次开机时,将所述初始线程数确定为预设最大线程数;
第三确定子模块,用于当***不为首次开机时,提取所述配置文件中的中间配置子文件中的使用率最高线程数,将所述使用率最高线程数确定为预设最大线程数。
10.根据权利要求6所述的设备,其特征在于,所述设备还包括:
判断模块,用于当***中有待建任务时,判断当前线程数是否小于当前最大线程数;
建立模块,用于若所述当前线程数小于当前最大线程数,则针对所述待建任务建立对应线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710525715.2A CN107463441B (zh) | 2017-06-30 | 2017-06-30 | 一种线程数量控制方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710525715.2A CN107463441B (zh) | 2017-06-30 | 2017-06-30 | 一种线程数量控制方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107463441A true CN107463441A (zh) | 2017-12-12 |
CN107463441B CN107463441B (zh) | 2020-10-27 |
Family
ID=60544089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710525715.2A Active CN107463441B (zh) | 2017-06-30 | 2017-06-30 | 一种线程数量控制方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107463441B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109471716A (zh) * | 2018-09-26 | 2019-03-15 | 努比亚技术有限公司 | 一种应用线程处理方法、终端及计算机可读存储介质 |
CN109684228A (zh) * | 2019-01-07 | 2019-04-26 | 武汉斗鱼鱼乐网络科技有限公司 | 一种性能测试方法、装置、***和存储介质 |
CN109840142A (zh) * | 2018-12-15 | 2019-06-04 | 平安科技(深圳)有限公司 | 基于云监控的线程控制方法、装置、电子设备及存储介质 |
CN109840141A (zh) * | 2018-12-15 | 2019-06-04 | 平安科技(深圳)有限公司 | 基于云监控的线程控制方法、装置、电子设备及存储介质 |
CN111049914A (zh) * | 2019-12-18 | 2020-04-21 | 珠海格力电器股份有限公司 | 负载均衡方法、装置和计算机*** |
CN114138469A (zh) * | 2021-11-16 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 固态硬盘的线程自适应分配方法、装置和固态硬盘 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779062A (zh) * | 2011-05-09 | 2012-11-14 | 阿里巴巴集团控股有限公司 | 一种访问***资源的线程数量的控制方法及装置 |
CN103888279A (zh) * | 2012-12-20 | 2014-06-25 | 阿里巴巴集团控股有限公司 | 基于反馈控制循环的资源池动态管理的方法和*** |
CN105630606A (zh) * | 2015-12-22 | 2016-06-01 | 山东中创软件工程股份有限公司 | 用于调整线程池容量的方法及装置 |
WO2016150183A1 (en) * | 2015-03-24 | 2016-09-29 | Huawei Technologies Co., Ltd. | System and method for parallel optimization of database query using cluster cache |
CN106557369A (zh) * | 2016-11-25 | 2017-04-05 | 武汉斗鱼网络科技有限公司 | 一种多线程的管理方法及*** |
-
2017
- 2017-06-30 CN CN201710525715.2A patent/CN107463441B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779062A (zh) * | 2011-05-09 | 2012-11-14 | 阿里巴巴集团控股有限公司 | 一种访问***资源的线程数量的控制方法及装置 |
CN103888279A (zh) * | 2012-12-20 | 2014-06-25 | 阿里巴巴集团控股有限公司 | 基于反馈控制循环的资源池动态管理的方法和*** |
WO2016150183A1 (en) * | 2015-03-24 | 2016-09-29 | Huawei Technologies Co., Ltd. | System and method for parallel optimization of database query using cluster cache |
CN105630606A (zh) * | 2015-12-22 | 2016-06-01 | 山东中创软件工程股份有限公司 | 用于调整线程池容量的方法及装置 |
CN106557369A (zh) * | 2016-11-25 | 2017-04-05 | 武汉斗鱼网络科技有限公司 | 一种多线程的管理方法及*** |
Non-Patent Citations (1)
Title |
---|
《电脑编程技巧与维护》杂志社: "《Visual C++编程技巧典型案例解析 基础与应用篇 上》", 31 July 2005 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109471716A (zh) * | 2018-09-26 | 2019-03-15 | 努比亚技术有限公司 | 一种应用线程处理方法、终端及计算机可读存储介质 |
CN109840142A (zh) * | 2018-12-15 | 2019-06-04 | 平安科技(深圳)有限公司 | 基于云监控的线程控制方法、装置、电子设备及存储介质 |
CN109840141A (zh) * | 2018-12-15 | 2019-06-04 | 平安科技(深圳)有限公司 | 基于云监控的线程控制方法、装置、电子设备及存储介质 |
CN109840142B (zh) * | 2018-12-15 | 2024-03-15 | 平安科技(深圳)有限公司 | 基于云监控的线程控制方法、装置、电子设备及存储介质 |
CN109840141B (zh) * | 2018-12-15 | 2024-05-03 | 平安科技(深圳)有限公司 | 基于云监控的线程控制方法、装置、电子设备及存储介质 |
CN109684228A (zh) * | 2019-01-07 | 2019-04-26 | 武汉斗鱼鱼乐网络科技有限公司 | 一种性能测试方法、装置、***和存储介质 |
CN111049914A (zh) * | 2019-12-18 | 2020-04-21 | 珠海格力电器股份有限公司 | 负载均衡方法、装置和计算机*** |
CN111049914B (zh) * | 2019-12-18 | 2021-02-09 | 珠海格力电器股份有限公司 | 负载均衡方法、装置和计算机*** |
CN114138469A (zh) * | 2021-11-16 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 固态硬盘的线程自适应分配方法、装置和固态硬盘 |
CN114138469B (zh) * | 2021-11-16 | 2023-11-14 | 苏州浪潮智能科技有限公司 | 固态硬盘的线程自适应分配方法、装置和固态硬盘 |
Also Published As
Publication number | Publication date |
---|---|
CN107463441B (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107463441A (zh) | 一种线程数量控制方法及设备 | |
CN107924323B (zh) | 基于依赖的容器部署 | |
US7653902B2 (en) | Determining software deployment parameters | |
EP3588283A1 (en) | System and method for recommending service experience package | |
CN106656932A (zh) | 一种业务处理方法及装置 | |
CN104239139A (zh) | 一种处理开机自启动项目的方法、装置及终端 | |
CN104520815A (zh) | 一种任务调度的方法、装置及设备 | |
CN106528065B (zh) | 一种线程获取方法及设备 | |
CN107783829A (zh) | 任务处理方法、装置、存储介质和计算机设备 | |
US20200150941A1 (en) | Heterogenous computer system optimization | |
CN109976823A (zh) | 一种应用程序启动方法、装置及终端设备 | |
CN110532056A (zh) | 一种应用于用户界面中的控件识别方法及装置 | |
US20140136570A1 (en) | Controller and program | |
CN106293805A (zh) | 程序加载的方法及装置 | |
CN104461741B (zh) | 基于图形设备接口的计算设备优化方法及装置 | |
CN110389817B (zh) | 多云***的调度方法、装置和计算机可读介质 | |
CN105975306A (zh) | 电子设备的应用程序启动管理方法和装置 | |
CN108415767A (zh) | 服务器线程控制方法、装置、设备及可读存储介质 | |
CN107153561A (zh) | 一种更新扩展卡中固件的方法、装置及*** | |
CN105095072B (zh) | 一种应用测试方法、装置及终端 | |
CN107329773A (zh) | 一种电子设备重启后的处理方法、电子设备和存储装置 | |
US9244736B2 (en) | Thinning operating systems | |
CN108711427A (zh) | 语音信息的采集方法及装置 | |
CN109634796A (zh) | 一种计算机的故障诊断方法、装置及*** | |
US8566813B2 (en) | Method and system generating execution file system device |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |