Ich verwende eine Debian 8 amd64-Maschine zum Benchmarking. Während des Experimentierens möchte ich, dass die CPU mit einer festen Frequenz (vorzugsweise der maximal möglichen) arbeitet. Dies schließt die CPU-Taktrate als Quelle für Abweichungen in den Ergebnissen aus.
Nach einigem Lesen scheint es richtig zu sein, den CPU-Regler auf zu ändern performance
, was hier in der Linux-Kernel-Dokumentation beschrieben wird :
Der CPUfreq-Regler "Leistung" setzt die CPU statisch auf die höchste Frequenz innerhalb der Grenzen von scaling_min_freq und scaling_max_freq.
Leider werden weitere Details zu scaling_min_freq
und scaling_max_freq
nicht geliefert. Hoffentlich sollte es keine Rolle spielen, da die verwendete CPU-Frequenz der Maximalwert des Intervalls ist.
Also habe ich diesen Governor mit cpufreq-set aktiviert:
$ cat / sys / device / system / cpu / cpu * / cpufreq / scaling_governor Performance Performance Performance Performance
Und für ein gutes Maß habe ich auch den Turbo-Boost-Modus im BIOS deaktiviert:
$ cat / sys / device / system / cpu / intel_pstate / no_turbo 1
Basierend auf der obigen Beschreibung des Leistungsreglers würde ich keine Schwankung der CPU-Taktrate erwarten. Wenn ich jedoch wiederholt renne cpufreq-info
, sehe ich, dass die Taktrate schwankt:
$ cpufreq-info | grep 'aktuelle CPU fr' Die aktuelle CPU-Frequenz beträgt 4,00 GHz. Die aktuelle CPU-Frequenz beträgt 3,99 GHz. Die aktuelle CPU-Frequenz beträgt 4,00 GHz. Die aktuelle CPU-Frequenz beträgt 4,00 GHz. $ cpufreq-info | grep 'aktuelle CPU fr' Die aktuelle CPU-Frequenz beträgt 4,00 GHz. Die aktuelle CPU-Frequenz beträgt 4,00 GHz. Die aktuelle CPU-Frequenz beträgt 4,00 GHz. Die aktuelle CPU-Frequenz beträgt 3,96 GHz. $ cpufreq-info | grep 'aktuelle CPU fr' Die aktuelle CPU-Frequenz beträgt 4,00 GHz. Die aktuelle CPU-Frequenz beträgt 4,00 GHz. Die aktuelle CPU-Frequenz beträgt 4,00 GHz. Die aktuelle CPU-Frequenz beträgt 3,94 GHz. $ cpufreq-info | grep 'aktuelle CPU fr' Die aktuelle CPU-Frequenz beträgt 4,01 GHz. Die aktuelle CPU-Frequenz beträgt 4,00 GHz. Die aktuelle CPU-Frequenz beträgt 4,00 GHz. Die aktuelle CPU-Frequenz beträgt 3,98 GHz.
Liegt diese Schwankung an der Hardware, dem BIOS, dem Kernel oder einem anderen Faktor? Gibt es eine Möglichkeit, die CPU-Frequenz so einzustellen, dass sie überhaupt nicht schwankt?