Jako závislý na výkonu webu neustále hledám způsoby, jak zlepšit výkon systému a zrychlit webové aplikace. A dnes se s vámi podělím o kouzlo škálování frekvence CPU a praktický návod, jak deaktivovat škálování frekvence CPU, aby váš systém běžel na plnou rychlost CPU.
Než se pustíme do toho, jak deaktivovat škálování frekvence CPU, pojďme si vysvětlit, co je to omezení CPU.
Co je škálování frekvence CPU?
Od jádra v. 2.6.18 (CentOS) a 2.6.32 (Ubuntu) byla představena nová funkce nazvaná Dynamické škálování frekvence CPU (neboli omezování CPU).
Toto zvyšování frekvence CPU umožňuje procesoru běžet na nižší frekvenci, než je maximální povolená frekvence. To se provádí pouze kvůli zachování spotřeby energie, ale nevýhodou toho je, že nemůžete využít plnou rychlost procesoru.
Jak zjistím, jakou rychlostí běží můj procesor?
Spusťte tento příkaz, jak vidíte níže:
grep -E '^model name|^cpu MHz' /proc/cpuinfo
Výstup by měl být podobný tomuto:
[[email protected]:~]grep -E '^model name|^cpu MHz' /proc/cpuinfo model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.000
Jak vidíte, původní rychlost CPU je @ 3,40 Ghz, ale běžící rychlost CPU v Mhz je kolem 1600. CPU běží na poloviční své celkové rychlosti.
Toho lze také dosáhnout pomocí skvělého balíčku CPU s názvem cpufrequtils / cpupoweruitls
Nainstalujte cpupowerutils na CentOS/Debian
yum install cpupowerutils -y
Nainstalujte cpupowerutils na Ubuntu/Debian
apt-get install cpufrequtils
Nyní spusťte tento příkaz a mimo jiné vám zobrazí informace o vaší minimální a maximální rychlosti procesoru:
cpupower frequency-info
Očekávaný výstup by měl být podobný tomuto:
[[email protected]:~]cpupower frequency-info analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 1.60 GHz - 3.80 GHz available cpufreq governors: performance powersave current policy: frequency should be within 1.60 GHz and 3.80 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: 1.60 GHz (asserted by call to hardware) boost state support: Supported: yes Active: yes 3600 MHz max turbo 4 active cores 3700 MHz max turbo 3 active cores 3800 MHz max turbo 2 active cores 3800 MHz max turbo 1 active cores
Zakázat škálování frekvence CPU v systému Linux (RedHat a Ubuntu)
Podívejme se, jak deaktivovat škálování frekvence CPU na nejpopulárnějších platformách Linux.
Pro uživatele CentOS / RHEL
Změňme frekvenci procesoru na maximální dostupnou rychlost pomocí následujícího příkazu:
cpupower frequency-set -g performance
Podívejme se, zda se znovu nezměnila rychlost CPU:
[[email protected]:~]grep -E '^model name|^cpu MHz' /proc/cpuinfo model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3497.218 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3392.296 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3397.742 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 2283.578 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3457.640 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 2133.234 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 1600.257 model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz cpu MHz : 3740.265 [[email protected]:~]
Jak vidíte v předchozím příkazu, CPU nyní běží rychleji než dříve, když je to potřeba.
Dalším způsobem, jak to udělat ručně, je spuštění tohoto příkazu, který změní regulátor CPU z režimu „na vyžádání“ na režim „výkon“ pro všechny vaše CPU:
for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do [ -f $CPUFREQ ] || continue; echo -n performance > $CPUFREQ; done
Pokud na vašem systému běží některý z démonů, který řídí rychlost CPU, jednoduše je zastavte, aby váš systém běžel na plnou rychlost CPU:cpuspeed, cpufreqd nebo powerd.
service cpuspeed stop
Pro uživatele Ubuntu / Debian
Upravte tento soubor, a pokud neexistuje, jednoduše jej vytvořte:
nano -w /etc/default/cpufrequtils
Dovnitř přidejte následující řádek:
GOVERNOR="performance"
Uložte stisknutím CTRL + X a poté stiskněte Y.
Další krok:deaktivujte démona ondemand, abyste neztratili své změny po restartování serveru, spusťte tento příkaz:
update-rc.d ondemand disable
To je vše. Znovu zkontrolujte nastavení pomocí tohoto příkazu:
cpufreq-info
Závěr
Provoz vašeho CPU na plnou rychlost může skutečně zvýšit výkon vašich aplikací. Většina moderních CPU již má opravdu dobré systémy chlazení CPU, takže by to neměl být problém, ale ujistěte se, že to nezpůsobuje obrovskou spotřebu energie nebo přehřívání CPU. Jak vidíte, můžete snadno zakázat škálování frekvence CPU pro distribuce založené na RedHat i Debian. Pokud k tomu máte nějaké problémy nebo dotazy, dejte nám prosím vědět.
Další čtení:
- Škálování frekvence CPU v Linuxu pomocí cpufreq
- Dokumenty škálování frekvence CPU ArchLinux
- Dokumentace RedHat CPUFreq Governors