Skip to content

Commit 33c3c5f

Browse files
authored
Make thread pool capacity configurable via YAML (#202)
Signed-off-by: Tarun Balaji Nidiganti <tnidigan@qti.qualcomm.com>
1 parent dea732b commit 33c3c5f

4 files changed

Lines changed: 29 additions & 4 deletions

File tree

configs/PropertiesConfig.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ PropertyConfigs:
88
- Name: resource_tuner.maximum.resources.per.request
99
Value: "20"
1010

11+
- Name: resource_tuner.thread_pool.desired_capacity
12+
Value: "5"
13+
14+
- Name: resource_tuner.thread_pool.max_scaling_capacity
15+
Value: "10"
16+
1117
- Name: resource_tuner.pulse.duration
1218
Value: "23000"
1319

modula/Common/Include/Utils.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ typedef void (*MessageReceivedCallback)(int32_t, MsgForwardInfo*);
112112
// System Properties
113113
#define MAX_CONCURRENT_REQUESTS "resource_tuner.maximum.concurrent.requests"
114114
#define MAX_RESOURCES_PER_REQUEST "resource_tuner.maximum.resources.per.request"
115+
#define THREAD_POOL_DESIRED_CAPACITY "resource_tuner.thread_pool.desired_capacity"
116+
#define THREAD_POOL_MAX_SCALING_CAPACITY "resource_tuner.thread_pool.max_scaling_capacity"
115117
#define PULSE_MONITOR_DURATION "resource_tuner.pulse.duration"
116118
#define GARBAGE_COLLECTOR_DURATION "resource_tuner.garbage_collection.duration"
117119
#define GARBAGE_COLLECTOR_BATCH_SIZE "resource_tuner.garbage_collection.batch_size"

modula/CoreModules/Include/UrmSettings.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
typedef struct {
1717
uint32_t mMaxConcurrentRequests;
1818
uint32_t mMaxResourcesPerRequest;
19+
uint32_t mDesiredThreadCount;
20+
uint32_t mMaxScalingCapacity;
1921
uint32_t mListeningPort;
2022
uint32_t mPulseDuration;
2123
uint32_t mClientGarbageCollectorDuration;
@@ -41,8 +43,6 @@ class UrmSettings {
4143
static int32_t serverOnlineStatus;
4244

4345
public:
44-
static const int32_t desiredThreadCount = 5;
45-
static const int32_t maxScalingCapacity = 10;
4646

4747
static const std::string mTargetConfDir;
4848

resource-tuner/init/RestuneInit.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ static ErrCode fetchMetaConfigs() {
147147
submitPropGetRequest(MAX_RESOURCES_PER_REQUEST, resultBuffer, "5");
148148
UrmSettings::metaConfigs.mMaxResourcesPerRequest = (uint32_t)std::stol(resultBuffer);
149149

150+
submitPropGetRequest(THREAD_POOL_DESIRED_CAPACITY, resultBuffer, "5");
151+
UrmSettings::metaConfigs.mDesiredThreadCount = (uint32_t)std::stol(resultBuffer);
152+
153+
submitPropGetRequest(THREAD_POOL_MAX_SCALING_CAPACITY, resultBuffer, "10");
154+
UrmSettings::metaConfigs.mMaxScalingCapacity = (uint32_t)std::stol(resultBuffer);
155+
150156
submitPropGetRequest(PULSE_MONITOR_DURATION, resultBuffer, "60000");
151157
UrmSettings::metaConfigs.mPulseDuration = (uint32_t)std::stol(resultBuffer);
152158

@@ -165,6 +171,17 @@ static ErrCode fetchMetaConfigs() {
165171
submitPropGetRequest(RATE_LIMITER_REWARD_FACTOR, resultBuffer, "0.4");
166172
UrmSettings::metaConfigs.mRewardFactor = std::stod(resultBuffer);
167173

174+
submitPropGetRequest(URM_MAX_PLUGIN_COUNT, resultBuffer, "3");
175+
UrmSettings::metaConfigs.mPluginCount = (uint32_t)std::stol(resultBuffer);
176+
177+
if(UrmSettings::metaConfigs.mDesiredThreadCount < 1) {
178+
UrmSettings::metaConfigs.mDesiredThreadCount = 5; // Reset to default
179+
}
180+
181+
if(UrmSettings::metaConfigs.mMaxScalingCapacity > 100) {
182+
UrmSettings::metaConfigs.mMaxScalingCapacity = 100;
183+
}
184+
168185
} catch(const std::invalid_argument& e) {
169186
TYPELOGV(META_CONFIG_PARSE_FAILURE, e.what());
170187
return RC_PROP_PARSING_ERROR;
@@ -406,8 +423,8 @@ static ErrCode fetchPerAppConfigs() {
406423

407424
// Initialize Request and Timer ThreadPools
408425
static ErrCode preAllocateWorkers() {
409-
int32_t desiredThreadCapacity = UrmSettings::desiredThreadCount;
410-
int32_t maxScalingCapacity = UrmSettings::maxScalingCapacity;
426+
uint32_t desiredThreadCapacity = UrmSettings::metaConfigs.mDesiredThreadCount;
427+
uint32_t maxScalingCapacity = UrmSettings::metaConfigs.mMaxScalingCapacity;
411428

412429
try {
413430
RequestReceiver::mRequestsThreadPool = new ThreadPool(desiredThreadCapacity,

0 commit comments

Comments
 (0)