CN104978006B - 一种多线程模式下的低功耗空闲等待方法 - Google Patents
一种多线程模式下的低功耗空闲等待方法 Download PDFInfo
- Publication number
- CN104978006B CN104978006B CN201510256511.4A CN201510256511A CN104978006B CN 104978006 B CN104978006 B CN 104978006B CN 201510256511 A CN201510256511 A CN 201510256511A CN 104978006 B CN104978006 B CN 104978006B
- Authority
- CN
- China
- Prior art keywords
- thread
- low power
- usleep
- waits
- condition
- 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.)
- Active
Links
Landscapes
- Power Sources (AREA)
Abstract
本发明提供一种多线程模式下的低功耗空闲等待方法,包括以下步骤:1)当系统的多个线程需要进入等待状态时,创建一独立计时线程,用于针对调用系统提供的一条件等待函数;2)当所述多个线程中的一空闲线程需要usleep时,判断调用条件:3)所述独立计时线程进行计时一个周期后,判断所述多个线程中是否存在等待唤醒的线程,如存在,则唤醒前述空闲线程;4)进程退出时,关闭计时线程。本发明使同样的程序在系统中运行时,增加一个独立计时线程,但是,由于采用条件等待函数代替usleep函数实现空闲线程进入条件等待状态,而无需使系统的所有线程都处于usleep状态,从而大幅度地降低CPU的使用率。
Description
技术领域
本发明涉及电通信技术领域,具体涉及一种多线程模式下的低功耗空闲等待方法。
背景技术
近年来,网络安全的课题被提到越来越重要的位置。说到网络安全,就不得不提到对于网络安全有着重要作用的深度包监测(DPI)系统等。
在当下高带宽高流量的情况下,为了满足实际需求,系统又必然都是多线程协同工作的。这些系统都是由数据包驱动的。大部分时间系统都会近乎满负荷运转,但是在一部分时间,系统是没有数据包驱动运转的。此刻,系统就需要使用usleep功能暂停并等待下一个包的到来。但是使用usleep功能有一个问题,将会使CPU处于高使用率的状态。CPU的使用率除了与运行的线程数量、线程本身的运算量以及CPU本身的性能有关,例如,在系统使用16个线程运行时,硬件环境:Intel Xeom CPU E5-4620,64核,如暂时无数据包驱动,所有的线程都不做任何工作,只是单纯的usleep的时候。即使所有线程都在通过usleep功能处于等待状态,也会使CPU的使用率到达近乎100%。
之所以选用usleep功能应对系统无数据包驱动的情况,是出于保障处理精确度的考量,而在实际的系统运转过程中,对处理精确度的要求并不统一,现有技术采用usleep功能实现的空闲等待方法,不能够灵活的根据处理精确度需求进行调整,从而使系统的CPU的使用率居高不下,这样不仅会提高系统的功耗,而且会降低系统的运行速度,无法使系统保持一较佳的运转状态。
发明内容
针对上述问题,为了让系统无数据包驱动运转的等待时间可以保持CPU较低的使用率,本发明的目的在于提供一种多线程模式下的低功耗空闲等待方法,其更加有效地控制线程的运行,在牺牲了一点精度的代价下,大大降低了CPU的使用率。
为了实现上述目的,本发明采取的技术方案是:
一种多线程模式下的低功耗空闲等待方法,包括以下步骤:
1)当系统的多个线程需要进入等待状态时,创建一独立计时线程,用于针对调用系统提 供的一条件等待函数;
2)当所述多个线程中的一空闲线程需要usleep时,判断调用条件:
2-1)如果精度要求高,直接调用usleep函数;
2-2)如果等待时间大于一设定阈值,直接调用usleep函数;
2-3)否则,调用条件等待函数,使所述空闲线程进入条件等待状态;
3)所述独立计时线程进行计时一个周期后,判断所述多个线程中是否存在等待唤醒的线程,如存在,则唤醒前述空闲线程;
4)进程退出时,关闭计时线程。
进一步地,所述系统为具有多个线程的一实施数据处理系统。
具体地,所述系统为一深度包监测(DPI)系统。
进一步地,所述条件等待函数为con_wait函数和con_signal函数。
进一步地,所述精度要求与系统的传输能力成正比。
具体地,如系统的带宽越大,则精度要求越高。
进一步地,所述设定阀值包括时间阈值t和线程数阈值n。
进一步地,所述设定阀值根据CPU性能、线程数及操作系统性能进行设定。
通过采取上述技术方案,本发明使同样的程序在系统中运行时,增加一个独立计时线程,但是,由于采用条件等待函数代替usleep函数实现空闲线程进入条件等待状态,而无需使系统的所有线程都处于usleep状态,从而大幅度地降低CPU的使用率。进而获得降低系统的功耗,提高系统的运行速度,使系统保持一较佳的运转状态,并延长系统的硬件寿命的技术效果。
附图说明
图1为本发明的多线程模式下的低功耗空闲等待方法的流程步骤图。
图2为本发明实施例中计算阈值(线程数n和等待时间t)的流程示意图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
如图1所示,本发明的多线程模式下的低功耗空闲等待方法是一个可以大大降低CPU使用率和功耗的usleep替代方法。
该方法的主要步骤为:
(1)当系统的多个线程需要进入等待状态时,创建一个独立的计时线程,用于针对的调用系统提供的条件等待函数;
(2)当某线程需要usleep时,判断调用条件:
1)如果精度要求高,直接调用usleep函数;
2)如果等待时间大于设定阈值,直接调用usleep函数;
3)否则调用条件等待函数替代,本质是让多个线程进入条件等待状态;
(3)线程计时一个周期后,判断是否存在等待唤醒的线程,如果存在则唤醒条件等待的线程;
(4)进程退出时,关闭计时线程。
需要说明的是,对于频繁调用,大部分调用都只会涉及步骤(2)、(3),只有第一次调用才会涉及步骤(1),最后一次调用后才会涉及(4)。
本发明的核心技术构思在于:
usleep可以控制精度,只是当多个经常需要同时usleep的时候,即便精度稍低,还是会消耗大量的CPU资源,所以需要开启一个线程统一管理其他线程的等待。精度要求主要根据实际的用户需求,一般而言,精度要求与系统的传输能力成正比。例如当在一个局域网部署检测系统的时候,由于其带宽较小,网络上发包收包有限,精度要求就可以放低一些,也不会致使系统丢包等。
1、使用con_wait和con_signal实现usleep类似的功能;con_wait的作用是使进程进入等待状态,从而让出CPU等资源供其他线程使用,不会像usleep一样占用CPU。con_signal的作用是唤醒处于等待状态的线程,使其继续工作。
2、使用一个后台线程即开启的计时线程usleep替代多个线程同时usleep,大大降低了CPU的使用率;
3、实现简单,只需根据系统运行环境设定精度要求及阀值,决定是否采用条件等待函数代替usleep函数。
本发明要保护的内容为:
1、通过调用条件决定是否需要使用信号量的方法进行等待;
2、一种利用信号量实现等待的方法:使用con_wait和con_signal实现usleep类似的功能;
3、一种多线程下的空闲等待归一方法:各个线程等待多长时间,其计时工作统一交由后台计时线程来做,通过归一化进行等待时间的控制。使用一个后台线程usleep替代多个线程 同时usleep,在起到相同作用的同时大大降低了CPU的使用率,降低了功耗。
本发明的方法可以在多线程需要同时等待时,大大降低CPU的使用率,降低计算机能耗,延长计算机寿命等。
当所有线程需要等待时,不使用usleep函数,而是进入条件等待状态,此时这些线程都将不耗费CPU周期。然后开启一个独立线程用于唤醒这些等待线程。
采用本发明提供的方法可以让同样的程序,进程数由原本的16个增加到17个,但是CPU使用率会降低至23.3%,大约降低了79.6%,仅是原来的20.4%。本方法适用于对时间精度要求不是特别高的场景。
图2所示为根据实际环境计算阈值(线程数n和等待时间t)的流程图,计算阀值的过程具体包括以下步骤:
当系统需要在新的运行环境下部署时,可以先通过预处理计算调用过程中需要用到的阈值。具体的,在新的运行环境下,通过对进程数n和等待时间t的参数调节,找到usleep和替代方法的均衡点,以便在满足需求的同时通过使用替代方法达到节省CPU资源以及节省能源的目的。图2中最后的“记录各个条件”就是在当前环境下的阈值。即等待时间阈值t和线程数阈值n。
例如具体环境,同样的Intel Xeon CPU E5-2630,2.60GHz,当操作系统是RHEL-5.7,内核2.6.18的时候,1个/16个线程除了usleep(1)其他什么都不做,会让CPU使用率都基本为0,因此就不需要使用调用条件等待函数替代uleep函数;
但是当操作系统为RHEL-6.4,内核为2.6.32时,1个线程即使usleep也会使CPU使用率上升至17%-27%,16个线程会使CPU使用率上升至82%-117%;当使用调用条件等待函数替代uleep函数后,CPU使用率可以分别降低至0.2%-12%。
根据图2中所示的方法步骤,当usleep(5000)的时候,并且线程数为16,使用本发明的方法和不使用本发明的方法,CPU利用率是一样的,那么这个t=5000和n=16就被设置为阈值。根据调用情况及这个阈值,就可以做出判定是否使用我们的方法进行替代。此环境下,当T<5000且N>16的时候,是需要使用本发明的方法对usleep函数进行替代的,并且可以得到很好的效果。
需说明的是,本发明的方法适用于多线程需要等待的系统。并不限于深度包监测系统,对其他实时数据处理系统而言,本发明的方法同样是适宜的。
Claims (8)
1.一种多线程模式下的低功耗空闲等待方法,包括以下步骤:
1)当系统的多个线程需要进入等待状态时,创建一独立计时线程,用于针对调用系统提供的一条件等待函数;
2)当所述多个线程中的一空闲线程需要usleep时,判断调用条件:
2-1)如果精度要求高,直接调用usleep函数;
2-2)如果等待时间大于一设定阈值,直接调用usleep函数;所述设定阈 值根据系统的运行环境计算;
2-3)否则,调用条件等待函数,使所述空闲线程进入条件等待状态;
3)所述独立计时线程进行计时一个周期后,判断所述多个线程中是否存在等待唤醒的线程,如存在,则唤醒前述空闲线程;
4)进程退出时,关闭计时线程。
2.如权利要求1所述的多线程模式下的低功耗空闲等待方法,其特征在于,所述系统为具有多个线程的一实施数据处理系统。
3.如权利要求2所述的多线程模式下的低功耗空闲等待方法,其特征在于,所述系统为一深度包监测系统。
4.如权利要求1所述的多线程模式下的低功耗空闲等待方法,其特征在于,所述条件等待函数为con_wait函数和con_signal函数。
5.如权利要求1所述的多线程模式下的低功耗空闲等待方法,其特征在于,所述精度要求与系统的传输能力成正比。
6.如权利要求5所述的多线程模式下的低功耗空闲等待方法,其特征在于,如系统的带宽越大,则精度要求越高。
7.如权利要求1所述的多线程模式下的低功耗空闲等待方法,其特征在于,所述设定阈值包括时间阈值t和线程数阈值n。
8.如权利要求7所述的多线程模式下的低功耗空闲等待方法,其特征在于,所述设定阈值根据CPU性能、线程数及操作系统性能进行设定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510256511.4A CN104978006B (zh) | 2015-05-19 | 2015-05-19 | 一种多线程模式下的低功耗空闲等待方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510256511.4A CN104978006B (zh) | 2015-05-19 | 2015-05-19 | 一种多线程模式下的低功耗空闲等待方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104978006A CN104978006A (zh) | 2015-10-14 |
CN104978006B true CN104978006B (zh) | 2018-04-27 |
Family
ID=54274588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510256511.4A Active CN104978006B (zh) | 2015-05-19 | 2015-05-19 | 一种多线程模式下的低功耗空闲等待方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104978006B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117271B (zh) * | 2018-08-10 | 2021-03-23 | 普联技术有限公司 | 自动调节cpu负载的方法、存储介质及终端设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090817A (zh) * | 2014-07-15 | 2014-10-08 | 浪潮电子信息产业股份有限公司 | 一种linux shell脚本并行执行与超时自动退出的处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG165211A1 (en) * | 2009-04-02 | 2010-10-28 | Ncs Pte Ltd | A method and system for processing electronic image content for display |
-
2015
- 2015-05-19 CN CN201510256511.4A patent/CN104978006B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090817A (zh) * | 2014-07-15 | 2014-10-08 | 浪潮电子信息产业股份有限公司 | 一种linux shell脚本并行执行与超时自动退出的处理方法 |
Non-Patent Citations (1)
Title |
---|
Linux操作系统时间相关函数性能下降原因分析;镇关西;《http://blog.csdn.net/littlefang/article/details/44680975》;20150327;第1-2页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104978006A (zh) | 2015-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9618997B2 (en) | Controlling a turbo mode frequency of a processor | |
CN101379453B (zh) | 使用动态工作负载特征来控制cpu频率和电压调节的方法和装置 | |
EP2939079B1 (en) | Communication link and network connectivity management in low power mode | |
WO2017014913A1 (en) | Systems and methods for scheduling tasks in a heterogeneous processor cluster architecture using cache demand monitoring | |
US10089263B2 (en) | Synchronization of interrupt processing to reduce power consumption | |
KR20140057371A (ko) | 멀티 프로세서 코어 시스템 내의 프로세서 코어를 스케줄링 하기 위한 방법, 장치, 및 시스템 | |
WO2017016480A1 (en) | System and method for multithreaded processing | |
CN107111349B (zh) | 用于片上多核系统的驱动基于访问的资源的低功耗控制和管理 | |
EP3186704B1 (en) | Multiple clustered very long instruction word processing core | |
US9310872B2 (en) | Processor frequency mainly depending on a target frame rate while processing a graphics application | |
US11388074B2 (en) | Technologies for performance monitoring and management with empty polling | |
WO2017148253A1 (zh) | 一种节能管理实现方法、装置及网络设备 | |
US11256321B2 (en) | Network-driven, packet context-aware power management for client-server architecture | |
CN104978006B (zh) | 一种多线程模式下的低功耗空闲等待方法 | |
WO2016180241A1 (zh) | 终端节能管理方法、装置及终端 | |
CN104298552A (zh) | 多线程处理器的线程取指调度方法、系统和多线程处理器 | |
KR101463533B1 (ko) | 모바일 장치에서의 비대칭 멀티 프로세서 코어 스케줄링 방법 및 모바일 장치 | |
US10082858B2 (en) | Peripheral device assistance in reducing CPU power consumption | |
CN101349975B (zh) | 一种在嵌入式操作系统上实现中断底半部机制的方法及装置 | |
CN108845659B (zh) | 一种功耗优先的嵌入式处理器实时任务分配方法 | |
US7836316B2 (en) | Conserving power in processing systems | |
CN114268670A (zh) | 基于时间触发的以太网异步消息处理系统及方法 | |
CN101930280A (zh) | Cpu智能控制系统及方法 | |
CN116610204B (zh) | 一种用电设备电源管理方法、系统、电子设备及介质 | |
CN116225672A (zh) | 基于众核芯片的任务处理方法及装置、处理核、电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |