CN104978006B - 一种多线程模式下的低功耗空闲等待方法 - Google Patents

一种多线程模式下的低功耗空闲等待方法 Download PDF

Info

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
Application number
CN201510256511.4A
Other languages
English (en)
Other versions
CN104978006A (zh
Inventor
郑超
郭欢
刘庆云
李佳
杨嵘
李舒
郭莉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN201510256511.4A priority Critical patent/CN104978006B/zh
Publication of CN104978006A publication Critical patent/CN104978006A/zh
Application granted granted Critical
Publication of CN104978006B publication Critical patent/CN104978006B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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性能、线程数及操作系统性能进行设定。
CN201510256511.4A 2015-05-19 2015-05-19 一种多线程模式下的低功耗空闲等待方法 Active CN104978006B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117271B (zh) * 2018-08-10 2021-03-23 普联技术有限公司 自动调节cpu负载的方法、存储介质及终端设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104090817A (zh) * 2014-07-15 2014-10-08 浪潮电子信息产业股份有限公司 一种linux shell脚本并行执行与超时自动退出的处理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104090817A (zh) * 2014-07-15 2014-10-08 浪潮电子信息产业股份有限公司 一种linux shell脚本并行执行与超时自动退出的处理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
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