Jaki jest prawidłowy sposób wyświetlania szybkości procesora w systemie Linux?

20

Znalazłem dwa polecenia do wyświetlania informacji o moim procesorze: cat /proc/cpuinfoi lscpu. /proc/cpuinfopokazuje, że mój procesor ma prędkość 2,1 Ghz, podczas gdy lspcumówi, że jest to 3167 MHz. Który jest prawidłowy?

Oto moje dokładne dane wyjściowe cat /proc/cpuinfodotyczące mojej szybkości procesora:

model name  : Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz

A to z lscpu:

CPU MHz:               3225.234

(Z jakiegoś powodu lscpugeneruje sygnał wyjściowy za każdym razem inaczej, w zakresie od 3100 do 3300 MHz)

Rohan
źródło
3
Twoja /proc/cpuinfopowinny mieć linię, która mówi, cpu MHZ: ...co jest aktualna prędkość. 2,1 po @to prędkość podstawowa (bez doładowania turbo).
don_crissti
Co to jest turbo boost? Czy to oznacza, że ​​moja prędkość faktycznie wynosi około 3,2 GHz?
Rohan
2
To sposób, w jaki Intel „uderza w gaz” w razie potrzeby. Myślę, że twoja rzeczywista prędkość w tym czasie wynosiła około 3,2 GHz, możesz także spróbować np. Dla procesora z cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq(jako root).
don_crissti
2
Turbo Boost to technologia zmieniająca częstotliwość procesora w zależności od liczby używanych rdzeni. Jeśli użyjesz kilku rdzeni, częstotliwość zostanie zwiększona, aby zwiększyć wydajność i utrzymać niską temperaturę. Możesz sprawdzić tabele częstotliwości Turbo Boost, aby sprawdzić, jak się zwiększa.
Jaime

Odpowiedzi:

35

Aby zobaczyć aktualną prędkość każdego rdzenia, robię to:

watch -n.1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""

Uwaga:

Jeśli twoje watchpolecenie nie działa z interwałami krótszymi niż jedna sekunda, zmodyfikuj interwał w następujący sposób:

watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""

Wyświetla cpu speedkażdy rdzeń w czasie rzeczywistym.

Uruchamiając następujące polecenie, jeden lub więcej razy, z innego terminala można zobaczyć zmianę prędkości z powyższym watchpoleceniem, przy założeniu, że SpeedStepjest włączony ( Cool'n'Quietdla AMD).

echo "scale=10000; 4*a(1)" | bc -l &

(To polecenie służy bcdo obliczania pido 10000 miejsc.)

Timothy Martin
źródło
Musiałem usunąć .polecenie z pierwszego polecenia, aby działało:watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""
n1k31t4
1
jest to sprytny sposób, aby to zrobić, ale ostrzegam przed uruchamianiem jakiegokolwiek polecenia co 0,1 sekundy, co samo w sobie wpłynie na raport prędkości procesora. 1 sekunda to dużo.
Lizardx
@Lizardx Zwykle zgadzam się, ale w tym przypadku prędkość procesora może wzrosnąć i zmniejszyć się szybciej niż w odstępie 1 sekundy, co spowoduje brak widocznych zmian prędkości. Ponieważ współczesne procesory są tak szybkie, początkowo myślałem, że mój SpeedStepnie działa, gdy używam 1 sekundy jako interwału. Jako minimum, .5należy go użyć, jeśli nie chce się jechać tak szybko, jak .1 second(chociaż wciąż nie zauważyłem wielu zmian prędkości w tym tempie.
Timothy Martin,
1
Spróbuj uruchomić top z zegarem ustawionym na mniej niż 1 sekundę, możesz wyraźnie zobaczyć użycie procesora. Domyślam się, że to, co faktycznie widzisz, to system generujący informacje o szybkości procesora, to znaczy generowanie mocy wyjściowej procesora powoduje ruch procesora. Uważam, że mniej niż sekunda zaczyna bezpośrednio powodować obserwowane prędkości procesora. Na przykład, najwyższy poziom w -d5 wynosi 1% procesora. Przy -d2 jest to około 5%. Może się okazać, że oszukujesz się, myśląc, że procesor robi coś, co robisz, heh. Wyjście do powłoki jest również drogie.
Lizardx
Może spróbować watch -n0.1, może działać. W przeciwnym razie while true; do cat /proc/cpuinfo | grep MHz; sleep 0.1; clear; donemiga bardziej niż oglądanie.
Steven Lu
7

Dla procesorów opartych na procesorach Intel i3, i5 i i7 istnieje dedykowane narzędzie o nazwie i7zbieżąca prędkość dla wszystkich rdzeni procesora.

Ze strony podręcznika (opis):

i7z uruchamia program i7z oparty na ncurses bez żadnych opcji. i7z wydrukuje stany C i temperaturę procesorów Core opartych na procesorach i3, i5 i i7 firmy Intel (w tym Nehalems, Sandy Bridge i Ivy Bridge).

W przypadku dystrybucji opartych na ubuntu możesz go zainstalować, wydając następujące polecenie:

sudo apt-get install i7z

następnie po prostu uruchom go (narzędzie musi być uruchomione z sudo):

sudo i7z
Michał Przybylowicz
źródło
4
To najlepsze rozwiązanie, jeśli masz procesor Intel. Cat'ing cpuinfo daje nieprawidłowe prędkości zegara. Tylko uwaga, że ​​zapomniałeś wstawić myślnik w „apt-get”.
fgblomqvist
Cóż ... działa z moim procesorem Xeon, tylko wyjście jest zniekształcone, może dlatego, że mam dwa procesory (mam podwójną płytę główną Xeon).
Alexis Wilke
4

Intel Core i7-4600U Procesor obsługuje technologię Turbo Boost . Ma częstotliwość podstawową 2,10 GHz i maks. Częstotliwość turbo 3,30 GHz. Oznacza to, że,

  • Jeśli wyłączysz Turbo Boost (w menu konfiguracji BIOS), procesor będzie pracował przez cały czas przy 2,10 GHz.
  • Gdy Turbo Boost jest włączone i działa tylko jeden z rdzeni, procesor będzie działał z maksymalną częstotliwością 3,30 GHz.
  • Jeśli Turbo Boost jest włączone i wszystkie rdzenie pracują, procesor będzie pracował z częstotliwością 2,10 GHz.

Uzyskiwanie częstotliwości prądu

Aby ustalić, czy Turbo Boost jest aktywowany i jaka jest bieżąca częstotliwość, możesz użyć cpupower frequency-info. Na przykład dla starego procesora Intel Core i5-660 z włączonym Turbo Boost otrzymasz następujące.

$ cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 3.47 GHz
  available frequency steps: 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 1.20 GHz and 3.47 GHz.
              The governor "ondemand" may decide which speed to use
              within this range.
  current CPU frequency is 1.87 GHz.
  cpufreq stats: 3.47 GHz:82,67%, 3.33 GHz:0,00%, 2.53 GHz:0,00%, 1.87 GHz:0,06%, 1.20 GHz:17,28%  (3)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores

Należy zauważyć, że informacje te określają ograniczenia sprzętowe ( 1.20 GHz - 3.47 GHz), możliwe częstotliwości ( 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz) i częstotliwość bieżącą ( 1.87 GHz). Informacje techniczne dotyczące tych częstotliwości można znaleźć na stronie internetowej firmy Intel .

Częstotliwość, gdy TurboBoost jest wyłączony

Zwróć uwagę na różnicę po uruchomieniu tego samego polecenia przy wyłączonym Turbo Boost: w boost state supportsekcji wartości dla Supportedi Activeno. Tutaj procesor będzie cały czas miał wartość nominalną / minimalną (1,20 Ghz).

$ cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 3.47 GHz
  available frequency steps: 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 1.20 GHz and 3.47 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz.
  cpufreq stats: 3.47 GHz:40,86%, 3.33 GHz:0,01%, 2.53 GHz:0,06%, 1.87 GHz:0,22%, 1.20 GHz:58,85%  (493)
  boost state support:
    Supported: no
    Active: no
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores

Możesz wyłączyć Turbo Boost za pomocą BIOSu lub niektórych opcji / poleceń Linuksa . Wsparcie jądro może być włączony / wyłączony za pomocą /sys/devices/system/cpu/cpufreq/boostpliku.

Jaime
źródło
Haypo ma wpis na blogu z dodatkowymi informacjami na temat sterownika stanu p Intel, stanów C, Turbo Boost i poleceń do uzyskania informacji o częstotliwości.
Jaime,
ten link jest teraz zerwany ...
Michaił T.
1
Link do wpisu na blogu Haypo jest uszkodzony. Możesz znaleźć kopię w notatkach Victora Stinnera: część 1 i część 2 .
Jaime
4

Częstotliwości procesora są przechowywane w jądrze, ale mogą być nieco „wyłączone”. Możesz je zobaczyć za pomocą:

$ cd /sys/devices/system/cpu
$ paste <(cat cpu*/cpufreq/affected_cpus) <(cat cpu*/cpufreq/scaling_cur_freq) | column -s $'\t' -t
0  833914
1  800021
2  800086
3  800029
4  800036
5  800460
6  800118
7  800141

Jeśli nie musisz znać CPU #, krótszą metodą jest po prostu użycie:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
1396354
800058
800050
800024
800005
800017
800001
1392006
WinEunuuchs2Unix
źródło
Ta metoda działa na Raspberry pi z systemem Raspbian
Jon
3

Aby uzyskać informacje o procesorze, wpisz następujące polecenie:

dmidecode -t 4
GAD3R
źródło
2
Cuspy Teraz widzę tutaj 4 różne liczby ;-)
vonbrand,
Ponadto „bieżąca prędkość” wydaje się wprowadzać w błąd, ponieważ bieżąca prędkość jest obecnie zawsze zgłaszana jako duża liczba (3,7 GHz), gdy maszyna jest bezczynna.
ragerdl
@vonbrand Osoba z jednym zegarkiem wie, która jest godzina. Osoba z dwoma zegarkami nigdy nie może być całkowicie pewna.
Kusalananda
0

Zależy od tego, do czego używasz informacji; wiersz wyjściowy z cat / proc / cpuinfo` to prędkość „Reklamowana”, prędkość w broszurze itp. Jeśli porównujesz serwer A z serwerem B, może to być wystarczające. Jeśli monitorujesz obciążenia systemu, komentarze na twoje pytanie i odpowiedź @ gad3r będą na co patrzeć.

Mark Stewart
źródło