Computers moeten tegenwoordig snel, zuinig en tegelijk stil zijn. Computersystemen waarbij de processor op volle snelheid werkt, verbruiken veel en produceren veel warmte. Deze warmte wordt door luidruchtige ventilators afgevoerd. Daarenboven zorgen hoge temperaturen voor een kortere levensduur van zowel de ventilators als de elektronica.
Recente computers bevatte processors met een Turbo Boost, waarbij de processor tot het uiterste wordt gedreven om een taak zo snel mogelijk af te handelen. Indien dit niet te lang duurt, loopt de temperatuur niet op. Maar na een tijdje loopt de temperatuur zo hoog op dat de computer een luidruchtige bak wordt. Bij elke generatie processors lijkt me dit erger en erger te worden en doet me denken aan de tijd toen we processors overklokten. Ook bij het overklokken liep de temperatuur hoog op, terwijl de snelheidswinst bijna niet merkbaar was.
Computers met Turbo Boost processors worden standaard geleverd met een ingeschakelde Turbo Boost. Wie geluk heeft kan Turbo Boost uit/inschakelen in de UEFI (BIOS), maar meestal is deze instelling niet aanwezig. Maar je kunt gelukkig wel Turbo Boost uitschakelen via het besturingssysteem.
Turbo Boost maakt een CPU sneller door zijn kloksnelheid flink op te trekken. De volgende opdracht toont ons welke eigenschappen de processor gebruikt op gebied van energieverbruik en kloksnelheid:
dany@pindabackup:~> sudo cpupower frequency-info
[sudo] wachtwoord voor root:
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: 800 MHz - 4.20 GHz
available cpufreq governors: performance powersave
current policy: frequency should be within 800 MHz and 4.20 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 1.76 GHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes
Uit de informatie blijkt dat de processor twee modes kent, waarbij performance focust op snelheid en powersave op lager energieverbruik. In powersave mode mag de kloksnelheid variëren tussen 800 MHz (traag en zuinig) en 4200 Mhz (snel en kwistig met energie). Tijdens lichte opdrachten werkt de processor dan traag en zuinig, maar bij zware taken sneller, energiekwistig en wordt het systeem heet en luidruchtig. Op het einde staat dat de processor Turbo Boost ondersteunt en actief is.
Turbo Boost bij Intel processors is actief als de waarde van de instelling no_turbo 0 (false):
dany@pindabackup:~> cat /sys/devices/system/cpu/intel_pstate/no_turbo
0
Om de kloksnelheid van de verschillende processor-cores op te vragen, gebruik je de opdracht:
dany@pindabackup:~> grep "cpu MHz" /proc/cpuinfo
cpu MHz : 4073.490
cpu MHz : 4074.737
cpu MHz : 4099.022
cpu MHz : 4096.351
cpu MHz : 4008.995
cpu MHz : 4098.995
cpu MHz : 4091.672
cpu MHz : 4026.837
Aan de hoge kloksnelheden merk je dat deze processor flink bezig is en het niet lang zal duren voor de ventilators een hels lawaai zullen produceren in een poging de ontwikkelde warmte af te voeren. Een bekende meetmethode om de verwerkingssnelheid van een processor te testen is de in 7-Zip ingebouwde benchmark te gebruiken:
dany@pindabackup:~> 7zr b
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=nl_NL.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz (906E9),ASM,AES-NI)
Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz (906E9)
CPU Freq: 4141 4173 4173 4188 4184 4184 4172 4185 4184
RAM size: 15904 MB, # CPU hardware threads: 8
RAM usage: 1765 MB, # Benchmark threads: 8
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 24982 624 3892 24303 | 267913 799 2859 22852
23: 27320 703 3962 27837 | 264653 799 2867 22902
24: 24153 625 4158 25970 | 261853 799 2876 22982
25: 25479 674 4318 29092 | 253088 778 2895 22524
---------------------------------- | ------------------------------
Avr: 656 4083 26800 | 794 2874 22815
Tot: 725 3478 24808
Uit deze gegevens blijkt de processor die normaal op 3600 MHz werkt op Turbo Boost overgeschakeld is (ca. 4100 MHz).
Turbo Boost kan je met de volgende opdracht uitschakelen:
dany@pindabackup:~> sudo x86_energy_perf_policy --turbo-enable 0
[sudo] wachtwoord voor root:
Hoewel geen nieuws, goed nieuws is, testen we dit met de volgende opdrachten:
dany@pindabackup:~>cat /sys/devices/system/cpu/intel_pstate/no_turbo
1 dany@pindabackup:~>sudo 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: 800 MHz - 4.20 GHz available cpufreq governors: performance powersave current policy: frequency should be within 800 MHz and 4.20 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 2.77 GHz (asserted by call to kernel) boost state support: Supported: no Active: no
En de gevolgen op de 7-zip benchmark:
dany@pindabackup:~> 7zr b
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=nl_NL.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz (906E9),ASM,AES-NI)
Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz (906E9)
CPU Freq: 3589 3589 3589 3589 3589 3589 3589 3589 3589
RAM size: 15904 MB, # CPU hardware threads: 8
RAM usage: 1765 MB, # Benchmark threads: 8
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 25076 673 3623 24394 | 241426 799 2578 20593
23: 22109 610 3691 22527 | 238952 799 2588 20678
24: 24685 693 3832 26542 | 236361 799 2596 20745
25: 24532 699 4010 28011 | 233899 799 2604 20816
---------------------------------- | ------------------------------
Avr: 669 3789 25369 | 799 2592 20708
Tot: 734 3190 23038
Merk op dat de kloksnelheid van alle cores onder de 3600 MHz blijft. Daarbij valt ook meteen op dat ondanks de 600 Mhz hogere kloksnelheid bij Turbo Boost de snelheidswinst verwaarloosbaar klein is. Ook als je dagelijks werkt met de computer merkt je niet dat de processor lagere kloksnelheden gebruikt, ook niet bij het gamen. De werksnelheid van een computersysteem hangt af van veel onderdelen en factoren. Eén vertragend onderdeel kan de ganse boel ophouden, maar ook één onderdeel versnellen maakt van een systeem geen snelheidsmonster.
Wel wordt onze processor nu niet meer extreem heet en verbruikt hij merkbaar minder, het systeem wordt zo minder luidruchtig en zuiniger.
Bij elke systeemherstart wordt Turbo Boost terug actief. Dit kan je voorkomen door bij het starten van het systeem Turbo Boost via een systemd service uit te zetten. Maak daarvoor als systeembeheerder (root) met uw favoriete teksteditor de service aan:
dany@pindabackup:~> sudo nano /etc/systemd/system/no-turbo-boost.service
[sudo] wachtwoord voor root:
Met de volgende inhoud:
[Unit] Description=Power Mode Settings After=acpid.socket After=syslog.service [Service] User=root Type=simple ExecStart=/usr/bin/x86_energy_perf_policy --turbo-enable 0 TimeoutSec=30 StartLimitInterval=350 [Install] WantedBy=multi-user.target
De service sla je in nano op met Ctrl+s en sluit je af met Ctrl+x.
We testen de nieuwe service door eerst Turbo Boost terug in te schakelen:
dany@pindabackup:~>sudo x86_energy_perf_policy --turbo-enable 1
[sudo] wachtwoord voor root: dany@pindabackup:~>sudo 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: 800 MHz - 4.20 GHz available cpufreq governors: performance powersave current policy: frequency should be within 800 MHz and 4.20 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 3.66 GHz (asserted by call to kernel) boost state support: Supported: yes Active: yes
De Turbo Boost service te testen door deze manueel te starten:
dany@pindabackup:~>sudo systemctl start no-turbo-boost.service
dany@pindabackup:~>sudo 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: 800 MHz - 4.20 GHz available cpufreq governors: performance powersave current policy: frequency should be within 800 MHz and 4.20 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 3.10 GHz (asserted by call to kernel) boost state support: Supported: no Active: no
Nu Turbo Boost met deze service kan uitgeschakeld worden kan je deze automatisch bij elke systeemstart laten uitvoeren, met de opdracht:
dany@pindabackup:~> sudo systemctl enable no-turbo-boost.service
Created symlink /etc/systemd/system/multi-user.target.wants/no-turbo-boost.service → /etc/systemd/system/no-turbo-boost.service.
Je kunt het automatisch starten van deze service terug uitschakelen, hoewel ik daar geen zinnige reden voor kan bedenken, met de opdracht:
dany@pindabackup:~> sudo systemctl disable no-turbo-boost.service
Removed /etc/systemd/system/multi-user.target.wants/no-turbo-boost.service.
Meer informatie kan je onder andere vinden op de CPU frequency scaling webpagina van Arch Linux.