You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Userspace Resource Manager (uRM) is a lightweight, extensible framework designed to intelligently manage and provision system resources from userspace. It brings together two key components that enable dynamic, context‑aware optimization of performance and power across diverse embedded and resource‑constrained environments:
86
+
The Userspace Resource Manager (URM) is a lightweight, extensible framework designed to intelligently manage and provision system resources from userspace. It brings together two key components that enable dynamic, context‑aware optimization of performance and power across diverse embedded and resource‑constrained environments:
87
87
- Contextual Classifier
88
-
A FastText‑based classifier that identifies static workload contexts—such as camera pipelines, multimedia sessions, installations, or background services. By understanding what the system is running, uRM can apply the right resource strategy without manual intervention.
88
+
A FastText‑based classifier that identifies static workload contexts—such as camera pipelines, multimedia sessions, installations, or background services. By understanding what the system is running, URM can apply the right resource strategy without manual intervention.
89
89
- Resource Tuner
90
90
A userspace engine that dynamically provisions system resources—CPU, memory, GPU, I/O, caches, and more—using standard kernel interfaces such as procfs, sysfs, and cgroups. This enables fine‑grained control of system operating points to balance performance and power for each application or use case.
91
91
```
@@ -112,24 +112,24 @@ A userspace engine that dynamically provisions system resources—CPU, memory, G
112
112
| Action |
113
113
+--------------+
114
114
```
115
-
### 1.1. Why uRM is Needed
115
+
### 1.1. Why URM is Needed
116
116
Modern workloads vary drastically across segments like servers, compute, XR, mobile, and IoT. Each use case exhibits unique characteristics. Some may demand high CPU frequency, others may require sustained GPU throughput, and many hinge on efficient caching or more memory bandwidth.
117
117
118
118
At the same time, these workloads run on a broad spectrum of hardware platforms with different capabilities, power envelopes, and user expectations. A "one‑size‑fits‑all" tuning approach fails in such environments.
119
119
120
-
uRM addresses this challenge by offering:
120
+
URM addresses this challenge by offering:
121
121
- Per‑use‑case adaptability
122
122
- Hardware‑aware tuning
123
123
- User‑experience‑driven power/perf balancing
124
124
125
125
This allows systems to achieve consistent performance while minimizing energy consumption.
126
126
127
127
### 1.2. Powerful System‑Level Control
128
-
Fine‑tuning system resources is a powerful tool for any developer or OEM building high‑performance embedded systems. With uRM, developers can directly influence operating points to match workload demands.
128
+
Fine‑tuning system resources is a powerful tool for any developer or OEM building high‑performance embedded systems. With URM, developers can directly influence operating points to match workload demands.
129
129
For example: to boost performance, increase the CPU DCVS minimum frequency to 1 GHz to improve responsiveness during compute‑intensive scenarios. To save power, cap the maximum CPU frequency at 1.5 GHz when the workload is light, preventing unnecessary turbo boosts and improving battery life. Such targeted interventions can significantly enhance user experience while optimizing for energy efficiency.
130
130
131
131
### 1.3. Dynamic Resource Provisioning via Signals
132
-
uRM introduces Signals, a mechanism that adjusts system resources in real time based on events such as:
132
+
URM introduces Signals, a mechanism that adjusts system resources in real time based on events such as:
133
133
134
134
- App launches
135
135
- App installations
@@ -138,7 +138,7 @@ uRM introduces Signals, a mechanism that adjusts system resources in real time b
138
138
These behaviors are governed by flexible, human‑readable YAML configurations, making policies easy to author, review, and evolve.
139
139
140
140
### 1.4. Extension Framework
141
-
uRM also provides extension APIs that allow other modules or applications to:
141
+
URM also provides extension APIs that allow other modules or applications to:
142
142
143
143
- Register custom resources
144
144
- Define custom provisioning logic
@@ -216,10 +216,10 @@ The following signal codes are supported signals. Target or segment specific cus
216
216
217
217
The above mentioned list of enums are available in the interface file "UrmPlatformAL.h".
218
218
219
-
# 4. uRM Interface
219
+
# 4. URM Interface
220
220
221
221
- Platform Abstraction Layer
222
-
-uRM APIs
222
+
-URM APIs
223
223
- Configs
224
224
225
225
## 4.1. Platform Abstraction Layer
@@ -279,7 +279,7 @@ Logical IDs for MPAM groups. Configs of MPAM group map in InitConfigs->MpamGroup
279
279
280
280
Custom resource types and signal categories must be >=128 to avoid conflicts with default types.
281
281
282
-
## 4.2. uRM APIs
282
+
## 4.2. URM APIs
283
283
This API suite allows you to manage system resource provisioning through tuning requests. You can issue, modify, or withdraw resource tuning requests with specified durations and priorities.
Gets a property from the config file, this is used as property config file used for enabling or disabling internal features in uRM, can also be used by modules or clients to enable/disable features in their software based on property configs in uRM.
683
+
Gets a property from the config file, this is used as property config file used for enabling or disabling internal features in URM, can also be used by modules or clients to enable/disable features in their software based on property configs in URM.
uRM allows to add custom configs and override configs items. It also provides additional configs.
1054
+
URM allows to add custom configs and override configs items. It also provides additional configs.
1055
1055
1056
1056
### 6.2.1. Initialization Configs
1057
1057
Custom init configs can be added to init config yaml. New init sections can be defined. For example "ClusterMap" can be redefined if your target has 4 clusters. Also you can define new section like MPAMgroupsInfo, see the example below.
@@ -1192,7 +1192,7 @@ Signal config yaml file can be given in one of the below ways
1192
1192
1193
1193
### 6.2.5. Target Configs
1194
1194
The file TargetConfig.yaml defines the target configs, note this is an optional config, i.e. this
1195
-
file need not necessarily be provided. uRM can dynamically fetch system info, like target name,
1195
+
file need not necessarily be provided. URM can dynamically fetch system info, like target name,
1196
1196
logical to physical core / cluster mapping, number of cores etc. Use this file, if you want to
1197
1197
provide this information explicitly. If the TargetConfig.yaml is provided, URM will always
1198
1198
overide default dynamically generated target information with given config and use it. Also note, there are no field-level default values available if the TargetConfig.yaml is provided. Hence if you wish to provide this file, then you'll need to provide all the complete required information.
@@ -1285,11 +1285,11 @@ FeatureConfigs:
1285
1285
1286
1286
## 7.2. Userspace Resource Manager Key Points
1287
1287
1288
-
Userspace resource manager (uRM) contains
1289
-
- Userspace resource manager (uRM) exposes a variery of APIs for resource tuning and use-case/scenario tuning
1288
+
Userspace resource manager (URM) contains
1289
+
- Userspace resource manager (URM) exposes a variery of APIs for resource tuning and use-case/scenario tuning
1290
1290
- These APIs can be used by apps, features and other modules
1291
1291
- Using these APIs, client can tune any system resource parameters like cpu, dcvs, min / max frequencies etc.
0 commit comments