Add more CPU frequencies for better "conservative" governor support

Open
#3,356 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
32/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
c

Research direction

Start with the Raspberry Pi CPUFREQ driver and the linked kernel governors documentation, then trace how the driver exposes its minimum and maximum frequencies. Done means Raspberry Pi exposes additional intermediate frequencies so the conservative governor can increase and decrease speed gradually rather than jumping directly to maximum.

Written by the indexing model from the issue text.

Description

My request is to add more frequencies to CPUFREQ driver.
The kernel documentation for governors says:
https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt

The CPUfreq governor "conservative", much like the "ondemand"
governor, sets the CPU frequency depending on the current usage. It
differs in behaviour in that it gracefully increases and decreases the
CPU speed rather than jumping to max speed
the moment there is any load
on the CPU. This behaviour is more suitable in a battery powered
environment.

However, this does not work correctly now on Raspberry Pi, because the only supported frequencies are minimum and maximum values (e.g. 600 MHz and 1400 MHz on RPi3B+), thus "conservative" governor behaves almost same as "ondemand" governor and jumps to max speed on any load. When more frequencies is added, it will respect the kernel documentation.

The intention is to utilize more performance on CPU load but to decrease power consumption when CPU load is not so high to need maximum frequency.

Dominant language
C
Stars
13.2k
Forks
5.5k
Avg merge
2d 21h
Merged PRs (30d)
21

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from raspberrypi/linux

All issues in raspberrypi/linux

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.