Ich habe mal einen Ersatz für powerd geschrieben: https://github.com/lonkamikaze/powerdxx
Bevor ich einen Port dafür mache hätte ich gerne noch etwas Feedback gesammelt.
Warum das ganze zitiere ich einfach mal aus dem Readme:
Bevor ich einen Port dafür mache hätte ich gerne noch etwas Feedback gesammelt.
Warum das ganze zitiere ich einfach mal aus dem Readme:
README.md schrieb:Pitfalls of powerd?
At the time powerd++ was first created (February 2016), powerd exhibited some unhealthy behaviours on multi-core machines.
In order to make sure that single core loads do not suffer from the use of powerd it was designed to use the sum load of all cores as the current load rating. A side effect of this is that it causes powerd to never clock down on systems with even moderate numbers of cores. E.g. on a quad-core system with hyper threading a background load of 12.5% per core suffices to score a 100% load rating.
The more cores are added, the worse it gets. Even on a dual core machine (with HT) having a browser and an e-mail client open, suffices to keep the load rating above 100% for most of the time, even without user activity. Thus powerd never does its job of saving energy, by reducing the clock frequency.
Advantages of powerd++
The powerd++ implementation addresses this issue and more:
- powerd++ groups cores with a common clock frequency together and handles each group's load and target frequency separately. I.e. the moment FreeBSD starts offering individual clock settings on the CPU, core or thread level, powerd++ already supports it.
- powerd++ takes the highest load within a group of cores to rate the load. This approach responds well to single core loads as well as evenly distributed loads.
- powerd++ sets the clock frequency according to a load target, i.e. it jumps right to the clock rate it will stay in if the load does not change.
- powerd++ supports taking the average load over more than two samples, this makes it more robust against small load spikes, but sacrifices less responsiveness than just increasing the polling interval would. Because only the oldest and the newest sample are required for calculating the average, this approach does not even cause additional runtime cost!
- powerd++ parses command line arguments as floating point numbers, allowing expressive commands like powerd++ --batt 1.2ghz.