nixos-generate-config: detect CPU governor
* cpu-freq: Try powersave if ondemand is not available * Revert "cpu-freq: Try powersave if ondemand is not available" This reverts commit 4dc56db37e32dcfecd667ebbf88263e47b296097. Consult available scaling governors; for freshly generated configs, this provides a better experience than relying on a default that might not work everywhere.
This commit is contained in:
parent
3c1ade7d15
commit
90deca3a0c
2 changed files with 16 additions and 1 deletions
|
@ -69,7 +69,7 @@ in
|
|||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
# FIXME: Implement powersave governor for sandy bridge or later Intel CPUs
|
||||
# Leftover for old setups, should be set by nixos-generate-config now
|
||||
powerManagement.cpuFreqGovernor = mkDefault "ondemand";
|
||||
|
||||
systemd.targets.post-resume = {
|
||||
|
|
|
@ -94,6 +94,21 @@ sub hasCPUFeature {
|
|||
my $cpus = scalar (grep {/^processor\s*:/} (split '\n', $cpuinfo));
|
||||
|
||||
|
||||
# Determine CPU governor to use
|
||||
if (-e "/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors") {
|
||||
my $governors = read_file("/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors");
|
||||
# ondemand governor is not available on sandy bridge or later Intel CPUs
|
||||
my @desired_governors = ("ondemand", "powersave");
|
||||
my $e;
|
||||
|
||||
foreach $e (@desired_governors) {
|
||||
if (index($governors, $e) != -1) {
|
||||
last if (push @attrs, "powerManagement.cpuFreqGovernor = \"$e\";");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Virtualization support?
|
||||
push @kernelModules, "kvm-intel" if hasCPUFeature "vmx";
|
||||
push @kernelModules, "kvm-amd" if hasCPUFeature "svm";
|
||||
|
|
Loading…
Reference in a new issue