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
@ -69,7 +69,7 @@ in
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
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";
|
powerManagement.cpuFreqGovernor = mkDefault "ondemand";
|
||||||
|
|
||||||
systemd.targets.post-resume = {
|
systemd.targets.post-resume = {
|
||||||
|
@ -94,6 +94,21 @@ sub hasCPUFeature {
|
|||||||
my $cpus = scalar (grep {/^processor\s*:/} (split '\n', $cpuinfo));
|
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?
|
# Virtualization support?
|
||||||
push @kernelModules, "kvm-intel" if hasCPUFeature "vmx";
|
push @kernelModules, "kvm-intel" if hasCPUFeature "vmx";
|
||||||
push @kernelModules, "kvm-amd" if hasCPUFeature "svm";
|
push @kernelModules, "kvm-amd" if hasCPUFeature "svm";
|
||||||
|
Loading…
Reference in New Issue
Block a user