Files
pwnrazr ad842eb349 [SQUASH] Revert previous TEO
Revert "drivers: cpuidle: teo: reapply 86464689ce4e0"

This reverts commit 975036e06deaf0ce54dd725d7057e3b0b82c4d9f.

Revert "cpuidle: teo: Increase rating of teo governor to 50"

This reverts commit d91894da8638edb6621d61dcea00356d9ca61a48.

Revert "raphael_defconfig: Switch to TEO"

This reverts commit 0b1df1d973e29861932b5f6c6c14cc84e09721b9.

Revert "BACKPORT: cpuidle: teo: Optionally skip polling states in teo_find_shallower_state()"

This reverts commit 041b55028e2836bfdfe3ee16c5f7b8cf66cb36f4.

Revert "BACKPORT: cpuidle: teo: Rename two local variables in teo_select()"

This reverts commit cbd07099fc59b1cebc217760254e2a9ed94b03d1.

Revert "BACKPORT: cpuidle: teo: Fix alternative idle state lookup"

This reverts commit 1263c92691f05edf97fb6f76baf0bd061e81d8e4.

Revert "BACKPORT: cpuidle: teo: remove unneeded semicolon in teo_select()"

This reverts commit 675998d769a55c99819e589a835e4dcd198b7ce5.

Revert "BACKPORT: cpuidle: teo: Rework most recent idle duration values treatment"

This reverts commit 795a6426537c4e9717531935d923dfe882edeaa9.

Revert "BACKPORT: cpuidle: teo: Change the main idle state selection logic"

This reverts commit 57aeb13a97e8665da33e37a5857e23c0116538c9.

Revert "BACKPORT: cpuidle: teo: Cosmetic modification of teo_select()"

This reverts commit c5884c1ff17187bf0e6754dfddfe0754bca3b24e.

Revert "BACKPORT: cpuidle: teo: Cosmetic modifications of teo_update()"

This reverts commit f9feda244c423dff957eedcfae01a20cdaa5c386.

Revert "BACKPORT: cpuidle: teo: Take negative "sleep length" values into account"

This reverts commit d9d87efddd00005add2be977c6c4646560cf2908.

Revert "BACKPORT: cpuidle: teo: Adjust handling of very short idle times"

This reverts commit 5ec6ffcfed2ad1beaa360e5828261773fa44299a.

Revert "BACKPORT: cpuidle: teo: Fix intervals[] array indexing bug"

This reverts commit 6866325cf3d65df50bd4ca89dbbac5b7f7b21db7.

Revert "BACKPORT: cpuidle: teo: Avoid code duplication in conditionals"

This reverts commit 61732469883fa50d0bbeba350bbf6e9e712dd6c0.

Revert "BACKPORT: cpuidle: teo: Avoid using "early hits" incorrectly"

This reverts commit 13634a4db44ec9184aaafd50eb7a24b27baf758c.

Revert "BACKPORT: cpuidle: teo: Exclude cpuidle overhead from computations"

This reverts commit 03e04307b6a273d171d8447f9fc228ad4660486b.

Revert "BACKPORT: cpuidle: Consolidate disabled state checks"

This reverts commit d2b3ec365e5976e8a4ed6d3f5e81bcf871a37514.

Revert "BACKPORT: cpuidle: teo: Fix "early hits" handling for disabled idle states"

This reverts commit bf68d6bed464c93fb8c24956e3237a4edad56e0d.

Revert "BACKPORT: cpuidle: teo: Consider hits and misses metrics of disabled states"

This reverts commit b1a94ddae6e76f53a723a2b95cd274d1986acc02.

Revert "BACKPORT: cpuidle: teo: Rename local variable in teo_select()"

This reverts commit 127ba171843ee872056f54456b7533be2e2fed39.

Revert "BACKPORT: cpuidle: teo: Ignore disabled idle states that are too deep"

This reverts commit 46d2b19c3651d5f46ebcd5d3b96113e90db179c7.

Revert "BACKPORT: cpuidle: teo: Get rid of redundant check in teo_update()"

This reverts commit aff7d4bff6262375bbd50d9532f05148cdcd9cd0.

Revert "BACKPORT: cpuidle: teo: Allow tick to be stopped if PM QoS is used"

This reverts commit d6a41b3bb715b7eb4e1036e42e07cf2db46f078d.

Revert "BACKPORT: cpuidle: New timer events oriented governor for tickless systems"

This reverts commit 2dc2ea4e7db76c8d8985bcfbce0c9ae63bc1eacd.

Revert "BACKPORT: cpuidle: governor: export cpuidle governor functions"

This reverts commit 666d5c13cbf3749972646ea08468b60c383c4583.

Revert "BACKPORT: UPSTREAM: cpuidle: governors: Consolidate PM QoS handling"

This reverts commit 4b350f2f5081b683fefcf07fbea6c543fa3c4600.

Revert "BACKPORT: UPSTREAM: cpuidle: menu: Fix wakeup statistics updates for polling state"

This reverts commit e75bff66b7494da1cc10f1026c143a62a6b705e5.

Revert "BACKPORT: UPSTREAM: cpuidle: poll_state: Avoid invoking local_clock() too often"

This reverts commit 0071b85200e4dc2495d69f26fdabdb3c40c0d81a.

Revert "BACKPORT: UPSTREAM: cpuidle: poll_state: Add time limit to poll_idle()"

This reverts commit 05be2fc0093bf5455420f19ad96a6c8a007b2afe.

cpuidle: New timer events oriented governor for tickless systems

The venerable menu governor does some things that are quite
questionable in my view.

First, it includes timer wakeups in the pattern detection data and
mixes them up with wakeups from other sources which in some cases
causes it to expect what essentially would be a timer wakeup in a
time frame in which no timer wakeups are possible (because it knows
the time until the next timer event and that is later than the
expected wakeup time).

Second, it uses the extra exit latency limit based on the predicted
idle duration and depending on the number of tasks waiting on I/O,
even though those tasks may run on a different CPU when they are
woken up.  Moreover, the time ranges used by it for the sleep length
correction factors depend on whether or not there are tasks waiting
on I/O, which again doesn't imply anything in particular, and they
are not correlated to the list of available idle states in any way
whatever.

Also, the pattern detection code in menu may end up considering
values that are too large to matter at all, in which cases running
it is a waste of time.

A major rework of the menu governor would be required to address
these issues and the performance of at least some workloads (tuned
specifically to the current behavior of the menu governor) is likely
to suffer from that.  It is thus better to introduce an entirely new
governor without them and let everybody use the governor that works
better with their actual workloads.

The new governor introduced here, the timer events oriented (TEO)
governor, uses the same basic strategy as menu: it always tries to
find the deepest idle state that can be used in the given conditions.
However, it applies a different approach to that problem.

First, it doesn't use "correction factors" for the time till the
closest timer, but instead it tries to correlate the measured idle
duration values with the available idle states and use that
information to pick up the idle state that is most likely to "match"
the upcoming CPU idle interval.

Second, it doesn't take the number of "I/O waiters" into account at
all and the pattern detection code in it avoids taking timer wakeups
into account.  It also only uses idle duration values less than the
current time till the closest timer (with the tick excluded) for that
purpose.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: Carlos Jimenez (JavaShin-X) <javashin1986@gmail.com>
Signed-off-by: Samuel Pascua <pascua.samuel.14@gmail.com>
Signed-off-by: Dark-Matter7232 <me@const.eu.org>
2023-09-15 14:59:00 +03:00
..
2023-09-15 14:59:00 +03:00