Skip to content

Commit a14f68f

Browse files
committed
[tag] v2.6.1, lower cpu cost.
1 parent da02a25 commit a14f68f

4 files changed

Lines changed: 21 additions & 20 deletions

File tree

src/UtilsCtrl/ThreadPool/UThreadPoolConfig.h

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,34 @@
99
#ifndef CGRAPH_UTHREADPOOLCONFIG_H
1010
#define CGRAPH_UTHREADPOOLCONFIG_H
1111

12+
#include <algorithm>
13+
1214
#include "UThreadObject.h"
1315
#include "UThreadPoolDefine.h"
1416

1517
CGRAPH_NAMESPACE_BEGIN
1618

1719
struct UThreadPoolConfig : public CStruct {
1820
/** 具体值含义,参考UThreadPoolDefine.h文件 */
19-
int default_thread_size_ = CGRAPH_DEFAULT_THREAD_SIZE;
20-
int secondary_thread_size_ = CGRAPH_SECONDARY_THREAD_SIZE;
21-
int max_thread_size_ = CGRAPH_MAX_THREAD_SIZE;
22-
int max_task_steal_range_ = CGRAPH_MAX_TASK_STEAL_RANGE;
23-
int max_local_batch_size_ = CGRAPH_MAX_LOCAL_BATCH_SIZE;
24-
int max_pool_batch_size_ = CGRAPH_MAX_POOL_BATCH_SIZE;
25-
int max_steal_batch_size_ = CGRAPH_MAX_STEAL_BATCH_SIZE;
26-
int primary_thread_busy_epoch_ = CGRAPH_PRIMARY_THREAD_BUSY_EPOCH;
21+
CInt default_thread_size_ = CGRAPH_DEFAULT_THREAD_SIZE;
22+
CInt secondary_thread_size_ = CGRAPH_SECONDARY_THREAD_SIZE;
23+
CInt max_thread_size_ = CGRAPH_MAX_THREAD_SIZE;
24+
CInt max_task_steal_range_ = CGRAPH_MAX_TASK_STEAL_RANGE;
25+
CInt max_local_batch_size_ = CGRAPH_MAX_LOCAL_BATCH_SIZE;
26+
CInt max_pool_batch_size_ = CGRAPH_MAX_POOL_BATCH_SIZE;
27+
CInt max_steal_batch_size_ = CGRAPH_MAX_STEAL_BATCH_SIZE;
28+
CInt primary_thread_busy_epoch_ = CGRAPH_PRIMARY_THREAD_BUSY_EPOCH;
2729
CMSec primary_thread_empty_interval_ = CGRAPH_PRIMARY_THREAD_EMPTY_INTERVAL;
2830
CSec secondary_thread_ttl_ = CGRAPH_SECONDARY_THREAD_TTL;
2931
CSec monitor_span_ = CGRAPH_MONITOR_SPAN;
3032
CMSec queue_emtpy_interval_ = CGRAPH_QUEUE_EMPTY_INTERVAL;
31-
int primary_thread_policy_ = CGRAPH_PRIMARY_THREAD_POLICY;
32-
int secondary_thread_policy_ = CGRAPH_SECONDARY_THREAD_POLICY;
33-
int primary_thread_priority_ = CGRAPH_PRIMARY_THREAD_PRIORITY;
34-
int secondary_thread_priority_ = CGRAPH_SECONDARY_THREAD_PRIORITY;
35-
bool bind_cpu_enable_ = CGRAPH_BIND_CPU_ENABLE;
36-
bool batch_task_enable_ = CGRAPH_BATCH_TASK_ENABLE;
37-
bool monitor_enable_ = CGRAPH_MONITOR_ENABLE;
33+
CInt primary_thread_policy_ = CGRAPH_PRIMARY_THREAD_POLICY;
34+
CInt secondary_thread_policy_ = CGRAPH_SECONDARY_THREAD_POLICY;
35+
CInt primary_thread_priority_ = CGRAPH_PRIMARY_THREAD_PRIORITY;
36+
CInt secondary_thread_priority_ = CGRAPH_SECONDARY_THREAD_PRIORITY;
37+
CBool bind_cpu_enable_ = CGRAPH_BIND_CPU_ENABLE;
38+
CBool batch_task_enable_ = CGRAPH_BATCH_TASK_ENABLE;
39+
CBool monitor_enable_ = CGRAPH_MONITOR_ENABLE;
3840

3941
CStatus check() const {
4042
CGRAPH_FUNCTION_BEGIN

src/UtilsCtrl/ThreadPool/UThreadPoolDefine.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#else
1616
# include <mutex>
1717
#endif
18-
#include <memory>
1918

2019
#include "../UtilsDefine.h"
2120

@@ -41,7 +40,6 @@ static const CUInt CGRAPH_DEFAULT_RINGBUFFER_SIZE = 64;
4140
static const CIndex CGRAPH_MAIN_THREAD_ID = -1; // 启动线程id标识(非上述主线程)
4241
static const CIndex CGRAPH_SECONDARY_THREAD_COMMON_ID = -2; // 辅助线程统一id标识
4342

44-
4543
static const CInt CGRAPH_DEFAULT_TASK_STRATEGY = -1; // 默认线程调度策略
4644
static const CInt CGRAPH_POOL_TASK_STRATEGY = -2; // 固定用pool中的队列的调度策略
4745
static const CInt CGRAPH_LONG_TIME_TASK_STRATEGY = -101; // 长时间任务调度策略
@@ -57,8 +55,8 @@ static const CBool CGRAPH_BATCH_TASK_ENABLE = false;
5755
static const CInt CGRAPH_MAX_LOCAL_BATCH_SIZE = 2; // 批量执行本地任务最大值
5856
static const CInt CGRAPH_MAX_POOL_BATCH_SIZE = 2; // 批量执行通用任务最大值
5957
static const CInt CGRAPH_MAX_STEAL_BATCH_SIZE = 2; // 批量盗取任务最大值
60-
static const CInt CGRAPH_PRIMARY_THREAD_BUSY_EPOCH = 10; // 主线程进入wait状态的轮数,数值越大,理论性能越高,但空转可能性也越大
61-
static const CMSec CGRAPH_PRIMARY_THREAD_EMPTY_INTERVAL = 10; // 主线程进入休眠状态的默认时间
58+
static const CInt CGRAPH_PRIMARY_THREAD_BUSY_EPOCH = 5; // 主线程进入wait状态的轮数,数值越大,理论性能越高,但空转可能性也越大
59+
static const CMSec CGRAPH_PRIMARY_THREAD_EMPTY_INTERVAL = 1000; // 主线程进入休眠状态的默认时间
6260
static const CSec CGRAPH_SECONDARY_THREAD_TTL = 10; // 辅助线程ttl,单位为s
6361
static const CBool CGRAPH_MONITOR_ENABLE = false; // 是否开启监控程序
6462
static const CSec CGRAPH_MONITOR_SPAN = 5; // 监控线程执行间隔,单位为s

test/Functional/test-functional-04.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void test_functional_04() {
3838
status += pipeline->process(runTimes);
3939
}
4040

41-
status += CGRAPH_RECV_MPARAM_WITH_TIMEOUT(TestGMessageParam, g_test_message_key, mp, 25)
41+
status += CGRAPH_RECV_MPARAM_WITH_TIMEOUT(TestGMessageParam, g_test_message_key, mp, 1500)
4242
if (mp->num_ != halfArrSize * runTimes * 2) {
4343
CGRAPH_ECHO("result num is wrong, num is [%lu]", mp->num_);
4444
}

test/Performance/test-performance-04.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ void test_performance_04() {
2222
config.max_thread_size_ = nodePerLayer;
2323
config.max_task_steal_range_ = nodePerLayer - 1;
2424
config.primary_thread_busy_epoch_ = 500;
25+
config.primary_thread_empty_interval_ = 0;
2526
pipeline->setUniqueThreadPoolConfig(config);
2627

2728
// 实现一个全连接

0 commit comments

Comments
 (0)