Lines Matching refs:uclamp
10 Utilization clamping, also known as util clamp or uclamp, is a scheduler
39 the uclamp values as performance points rather than utilization is a better
78 By making these uclamp performance requests, or rather hints, user space can
100 Both SCHED_NORMAL/OTHER and SCHED_FIFO/RR honour uclamp requests/hints.
102 In the SCHED_FIFO/RR case, uclamp gives the option to run RT tasks at any
110 when an RT task wakes up. This cost is unchanged by using uclamp. Uclamp only
114 See :ref:`section 3.4 <uclamp-default-values>` for default values and
137 affected by the uclamp settings of all the tasks enqueued on it. For example if
143 rq, uclamp must do some housekeeping at every enqueue/dequeue, which is the
154 uclamp value at rq level a lot easier.
157 uclamp value of the rq. See :ref:`section 2.1 <uclamp-buckets>` for details on
160 Later at any path that wants to identify the effective uclamp value of the rq,
161 it will simply need to read this effective uclamp value of the rq at that exact
165 (EAS/CAS) make use of uclamp for now, which implies that it is applied on
167 When a task wakes up, the scheduler will look at the current effective uclamp
173 at the current effective uclamp value of the rq which is influenced by the set
178 make use of uclamp as well. Such cases are considered necessary housekeeping to
210 To reduce the search space when trying to decide the effective uclamp value of
234 p->uclamp[UCLAMP_MIN] = 300
235 p->uclamp[UCLAMP_MAX] = 1024
241 The rq then keeps track of its current effective uclamp value for each
249 rq->uclamp[UCLAMP_MIN] = max(rq->uclamp[UCLAMP_MIN], p->uclamp[UCLAMP_MIN])
257 rq->uclamp[UCLAMP_MIN] = search_top_bucket_for_highest_value()
260 When all buckets are empty, the rq uclamp values are reset to system defaults.
261 See :ref:`section 3.4 <uclamp-default-values>` for details on default values.
279 p0->uclamp[UCLAMP_MIN] = 300
280 p0->uclamp[UCLAMP_MAX] = 900
282 p1->uclamp[UCLAMP_MIN] = 500
283 p1->uclamp[UCLAMP_MAX] = 500
290 rq->uclamp[UCLAMP_MIN] = max(300, 500) = 500
291 rq->uclamp[UCLAMP_MAX] = max(900, 500) = 900
293 As we shall see in :ref:`section 5.1 <uclamp-capping-fail>`, this max
306 1. By the uclamp settings defined by the cgroup CPU controller it is attached
309 uclamp settings.
311 :ref:`Section 3 <uclamp-interfaces>` discusses the interfaces and will expand
324 its uclamp values, but rather the system may not be able to satisfy requests
362 The special value -1 is used to reset the uclamp settings to the system
365 Note that resetting the uclamp value to system default using -1 is not the same
366 as manually setting uclamp value to system default. This distinction is
374 There are two uclamp related values in the CPU cgroup controller:
376 * cpu.uclamp.min
377 * cpu.uclamp.max
379 When a task is attached to a CPU controller, its uclamp values will be impacted
382 * cpu.uclamp.min is a protection as described in :ref:`section 3-3 of cgroup
385 If a task uclamp_min value is lower than cpu.uclamp.min, then the task will
386 inherit the cgroup cpu.uclamp.min value.
388 In a cgroup hierarchy, effective cpu.uclamp.min is the max of (child,
391 * cpu.uclamp.max is a limit as described in :ref:`section 3-2 of cgroup v2
394 If a task uclamp_max value is higher than cpu.uclamp.max, then the task will
395 inherit the cgroup cpu.uclamp.max value.
397 In a cgroup hierarchy, effective cpu.uclamp.max is the min of (child,
404 p0->uclamp[UCLAMP_MIN] = // system default;
405 p0->uclamp[UCLAMP_MAX] = // system default;
407 p1->uclamp[UCLAMP_MIN] = 40% * 1024;
408 p1->uclamp[UCLAMP_MAX] = 50% * 1024;
410 cgroup0->cpu.uclamp.min = 20% * 1024;
411 cgroup0->cpu.uclamp.max = 60% * 1024;
413 cgroup1->cpu.uclamp.min = 60% * 1024;
414 cgroup1->cpu.uclamp.max = 100% * 1024;
420 p0->uclamp[UCLAMP_MIN] = cgroup0->cpu.uclamp.min = 20% * 1024;
421 p0->uclamp[UCLAMP_MAX] = cgroup0->cpu.uclamp.max = 60% * 1024;
423 p1->uclamp[UCLAMP_MIN] = 40% * 1024; // intact
424 p1->uclamp[UCLAMP_MAX] = 50% * 1024; // intact
430 p0->uclamp[UCLAMP_MIN] = cgroup1->cpu.uclamp.min = 60% * 1024;
431 p0->uclamp[UCLAMP_MAX] = cgroup1->cpu.uclamp.max = 100% * 1024;
433 p1->uclamp[UCLAMP_MIN] = cgroup1->cpu.uclamp.min = 60% * 1024;
434 p1->uclamp[UCLAMP_MAX] = 50% * 1024; // intact
436 Note that cgroup interfaces allows cpu.uclamp.max value to be lower than
437 cpu.uclamp.min. Other interfaces don't allow that.
451 they won't be satisfied until it is more than p->uclamp[UCLAMP_MIN].
472 won't be satisfied until it is more than p->uclamp[UCLAMP_MAX].
485 p_fair->uclamp[UCLAMP_MIN] = 0
486 p_fair->uclamp[UCLAMP_MAX] = 1024
496 p_rt->uclamp[UCLAMP_MIN] = 1024
497 p_rt->uclamp[UCLAMP_MAX] = 1024
577 This is not unique to uclamp as one can achieve the same by reducing max
591 still would like to keep your browser performance intact, uclamp makes it
606 p0->uclamp[UCLAMP_MAX] = 512
612 p1->uclamp[UCLAMP_MAX] = 1024
619 rq->uclamp[UCLAMP_MAX] = max(512, 1024) = 1024
646 p0->uclamp[UCLAMP_MAX] = 0
655 rq->uclamp[UCLAMP_MAX] = 0
690 p1->uclamp[UCLAMP_MAX] = 1024
702 rq->uclamp[UCLAMP_MAX] = 1024
732 This limitation is not only impactful when using uclamp, but will be more
735 respective uclamp values.