TurboBoost – garść MHz więcej
Nie każdy nieobeznany z techniką użytkownik komputera może być świadom istnienia technologi Turbo Boost wdrażanej w procesorach Intela I5 oraz I7 (choć istnieje też chyba tylko jeden model I3). Turbo Boost to najprościej rzecz ujmując, chwilowe przetaktowanie rdzeni procesora w momentach maksymalnego obciążenia. Taki overclocking dla niezaangażowanych. Procesory produkowane przez Intela i testowane pod kątem takiego turbo, posiadając nominalną prędkość taktowania np. 2.8 GHz, w stresie wspinają się na wyżyny 3.3 GHz. I dzieje się to bez wiedzy użytkownika, bo do uruchomienia tej technologii nie trzeba żadnych fachowych zabiegów. A jak w przypadku Linuksa?
Tak samo. Turbo Boost Technology to właściwość która powinna zostać włączona z poziomu BIOSa i jeżeli posiadamy kernel od 2.6.30 wzwyż, Turbo Boost ma prawo działać. Jedyne na czym możemy się skupić, to sprawdzenie, czy faktycznie działa.
Dlatego na samym początku resetujemy komputer, udajemy się w ustawienia BIOSa i sprawdzamy, która opcja odpowiada za włączenie trybu turbo w procesorze. Może do tego być przydatna instrukcja obsługi, bo w różnych BIOSach i u różnych producentów, różną można spotkać nomenklaturę. Generalnie, najczęściej sprowadza się to do aktywowania gdzieś w zakładce z ustawieniami procesora opcji Intel Speedstep i Intel TurboBoost. Należy się też upewnić, że nie posiadamy w BIOSie jakichś specyficznych funkcji oszczędzania energii lub wyciszania wentylatora, które mogą prowadzić do przekłamań w funkcjonowaniu trybu Turbo (?).
Jeżeli aktywowaliśmy SpeedStep i TurboBoost, pozostaje sprawdzić w systemie, czy faktycznie to działa. Niestety nie sprawdzimy tego typowymi monitora aktualnej częstotliwości procesora, gdyż te pobierają informacje z /proc/cpuinfo, które jest nieczułe na intelowskie tricki. Musimy zatem wspomóc się narzędziami firmowanymi przez Intela, np. PowerTop oraz Turbostat. PowerTop odnajdziemy w repozytoriach, Turbostat jest częścią paczek linux-tools-common oraz linux-tools-numer_kernela – wystarczy w menadżerze wyszukać nazw. Są też inne projekty, np. i7z, do samodzielnej kompilacji.
Skupmy się na TurboStat – po uruchomieniu programu w konsoli otrzymamy komunikat… że konieczna jest obecność modułu msr. Pozostaje go załadować i ponownie uruchomić Turbostat z prawami roota. Po tym zabiegu będziemy otrzymywali statystyki aktualnego obciążanie i taktowania każdego z rdzeni naszego procesora. Dodatkowo, jeżeli uruchomimy program z parametrem -v, otrzymamy sugestie, jakich wyników maksymalnych możemy się spodziewać.
$# sudo modprobe msr
$# sudo turbostat -v
GenuineIntel 11 CPUID levels; family:model:stepping 0x6:1e:5 (6:30:5)
9 * 133 = 1200 MHz max efficiency
21 * 133 = 2800 MHz TSC frequency
22 * 133 = 2933 MHz max turbo 4 active cores
22 * 133 = 2933 MHz max turbo 3 active cores
25 * 133 = 3333 MHz max turbo 2 active cores
25 * 133 = 3333 MHz max turbo 1 active cores
(...)
Jak widać, mój wysłużony Intel I5 760 nominalnie pracuje z taktowaniem 2.8GHz, które w trybie turbo wzrasta do 3.3GHz dla dwóch rdzeni lub 2.93GHz, gdy maksymalnie zostaną obciążone wszystkie rdzenie. Jak to wygląda w praktyce?
Bez TurboBoost: cor CPU %c0 GHz TSC %c1 %c3 %c6 %pc3 %pc6 86.87 2.80 2.81 2.23 8.35 2.55 0.00 0.00 0 0 86.51 2.80 2.81 1.33 9.29 2.87 0.00 0.00 1 1 87.22 2.80 2.81 2.96 6.57 3.26 0.00 0.00 2 2 86.59 2.80 2.81 1.86 8.74 2.80 0.00 0.00 3 3 87.15 2.80 2.81 2.78 8.81 1.26 0.00 0.00 Z TurboBoost: cor CPU %c0 GHz TSC %c1 %c3 %c6 %pc3 %pc6 88.76 2.95 2.81 1.89 7.38 1.97 0.00 0.00 0 0 89.60 2.96 2.81 1.44 7.11 1.85 0.00 0.00 1 1 87.05 2.95 2.81 1.74 7.50 3.70 0.00 0.00 2 2 88.92 2.96 2.81 2.93 7.43 0.72 0.00 0.00 3 3 89.48 2.96 2.81 1.44 7.48 1.59 0.00 0.00
Patrząc na kolumnę GHz zauważamy, że faktycznie – pod obciążeniem (gwałtowne machanie suwakiem poziomów w Darktable), z włączonym TurboBoost, rdzenie procesora rozgrzewają się do 2.96GHz, podczas gdy normalnie osiągnęlibyśmy tylko 2.80GHz. Innymi słowy – warto się upewnić, że mamy włączone co należy w BIOSie.
A mój na przykład ma rozpiętość 1600MHz do 4500MHz. Przy typowej pracy chodzi sobie cichutko na 1,6GHz, skacząc czasem wyżej np. do ~2,8GHz lub 3GHz z hakiem. A przy pełnym obciążeniu jedzie na 4,5GHz. Żre przy tym prąd jak smok, ale coś za coś 🙂
Zauważyłem, że turbostat wywołuje dwa procesy init i yes które żrą sporo procesora. Za każdym razem trzeba ustrojstwa zabijać killem spod roota. Czy to jakis bug?