diff --git a/README.md b/README.md index 0488b8f..fd4a5ac 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,8 @@ but most common usecases are already implemented. and turbo boost - **Intelligent Power Management**: Different profiles for AC and battery operation +- **Dynamic Turbo Boost Control**: Automatically enables/disables turbo based on + CPU load and temperature - **Fine-tuned Controls**: Adjust energy performance preferences, biases, and frequency limits - **Per-core Control**: Apply settings globally or to specific CPU cores @@ -150,6 +152,10 @@ variable. governor = "performance" # Turbo boost setting: "always", "auto", or "never" turbo = "auto" +# Enable or disable automatic turbo management (when turbo = "auto") +enable_auto_turbo = true +# Custom thresholds for auto turbo management +turbo_auto_settings = { load_threshold_high = 70.0, load_threshold_low = 30.0, temp_threshold_high = 75.0 } # Energy Performance Preference epp = "performance" # Energy Performance Bias (0-15 scale or named value) @@ -166,6 +172,9 @@ max_freq_mhz = 3500 [battery] governor = "powersave" turbo = "auto" +# More conservative auto turbo settings on battery +enable_auto_turbo = true +turbo_auto_settings = { load_threshold_high = 80.0, load_threshold_low = 40.0, temp_threshold_high = 70.0 } epp = "power" epb = "balance_power" platform_profile = "low-power" @@ -209,6 +218,27 @@ Those are the more advanced features of Superfreq that some users might be more inclined to use than others. If you have a use-case that is not covered, please create an issue. +### Dynamic Turbo Boost Management + +When using `turbo = "auto"` with `enable_auto_turbo = true`, Superfreq +dynamically controls CPU turbo boost based on: + +- **CPU Load Thresholds**: Enables turbo when load exceeds `load_threshold_high` + (default 70%), disables when below `load_threshold_low` (default 30%) +- **Temperature Protection**: Automatically disables turbo when CPU temperature + exceeds `temp_threshold_high` (default 75°C) +- **Hysteresis Control**: Prevents rapid toggling by maintaining previous state + when load is between thresholds +- **Profile-Specific Settings**: Configure different thresholds for battery vs. + AC power + +This feature optimizes performance and power consumption by providing maximum +performance for demanding tasks while conserving energy during light workloads. + +> [!TIP] +> You can disable this logic with `enable_auto_turbo = false` to let the system +> handle turbo boost natively when `turbo = "auto"`. + ### Adaptive Polling Superfreq includes a "sophisticated" (euphemism for complicated) adaptive @@ -275,7 +305,8 @@ the codebase as they stand. ### Setup -You will need Cargo and Rust installed on your system. Rust 1.80 or later is required. +You will need Cargo and Rust installed on your system. Rust 1.80 or later is +required. A `.envrc` is provided, and it's usage is encouraged for Nix users. Alternatively, you may use Nix for a reproducible developer environment