CPU hızınızı Linux'ta görüntülemenin doğru yolu nedir?


20

CPU'm hakkında bilgi vermek için iki komut buldum: cat /proc/cpuinfove lscpu. /proc/cpuinfoCPU hızımın 2,1 Ghz, lspcu3167 Mhz olduğunu gösteriyor. Hangisi doğru?

Bu cat /proc/cpuinfobenim işlemci hızı hakkında kesin çıktı :

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

Ve bu lscpu:

CPU MHz:               3225.234

(Bazı nedenlerden ötürü, lscpu3100 ve 3300 MHz arasında değişen her seferinde farklı çıktılar)


3
Sizin /proc/cpuinfode diyor bir satır olması gerekir cpu MHZ: ...akım hızı olan. 2.1 sonrası @taban hızı (turbo güçlendirme olmadan).
don_crissti

Turbo güçlendirme nedir? Peki bu, hızımın aslında 3.2 GHz civarında olduğu anlamına mı geliyor?
Rohan

2
Bu, Intel'in gerektiğinde "gaza çarpması" yoludur. Sanırım o anki gerçek hızınız gerçekten de 3.2 GHz civarındaydı, örneğin cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq(root olarak) ile cpu0 için de deneyebilirsiniz .
don_crissti

2
Turbo Boost , kullandığınız çekirdek sayısına bağlı olarak işlemcinin frekansını değiştiren bir teknolojidir. Birkaç çekirdek kullanırsanız, performansı artırmak ve düşük bir sıcaklığı korumak için frekans artırılır. Sen kontrol edebilir Turbo Boost frekans tabloları da artar nasıl kontrol etmek.
Jaime

Yanıtlar:


35

Her bir çekirdeğin mevcut hızını görmek için şunu yaparım:

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

Not:

Senin Eğer watchkomut bir saniye daha küçük aralıklarla değil çalışır, şöyle aralığını değiştirin:

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

Bu cpu speed, her bir çekirdeğin gerçek zamanlı olarak görüntülenmesini sağlar.

Aşağıdaki komutu bir ya da daha fazla kez çalıştırarak, başka bir terminalden yukarıdaki watchkomutla hız değişikliğini görebileceğinizi varsayalım SpeedStep( Cool'n'Quietfor AMD).

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

(Bu komut 10000 yeri bchesaplamak piiçin kullanılır.)


.Çalışmasını sağlamak için ilk komutunuzda kaldırmak zorunda kaldım :watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""
n1k31t4

1
Bu bunu yapmanın şık bir yoludur, ancak her .1 saniyede bir komut çalıştırmamaya dikkat ediyorum, bu da cpu hızı raporunu etkileyecektir. 1 saniye bol.
Lizardx

@Lizardx Genellikle katılıyorum, ancak bu durumda CPU hızı 1 saniyelik aralıktan daha hızlı artabilir ve azalabilir, bu da görünür hız değişikliklerinin eksikliğine neden olur. Modern işlemciler çok hızlı olduğundan, başlangıçta SpeedSteparalık olarak 1 saniye kullandığımda çalışmadığımı düşündüm . En azından, .5biri o kadar hızlı gitmek istemiyorsa kullanılmalıdır .1 second(yine de o hızdaki değişikliklerin çoğunu görmeyi özlememe rağmen)
Timothy Martin

1
Zamanlayıcıları 1 saniyeden daha az bir süreye ayarlı olarak çalıştırmayı deneyin, cpu kullanımını gözle görebilirsiniz. Benim tahminim aslında görebileceğiniz şey, cpu hızı bilginizi üreten sistemdir, yani cpu hızı çıkışının cpu hareketine neden olmasıdır. Bir saniyeden daha az bir şeyin doğrudan izlediğiniz işlemci hızlarına neden olmaya başladığını görüyorum. Örneğin, -d5'teki en iyi işlemci% 1'dir. -D2'de yaklaşık% 5'tir. Aslında kendinizi cpu'nun yaptığınız bir şeyi yaptığını düşünmeye kandırdığınızı fark edebilirsiniz, heh. Kabuğa çıktı da pahalıdır.
Lizardx

Deneyebilir watch -n0.1, işe yarayabilir. Bunu başaramazsanız, while true; do cat /proc/cpuinfo | grep MHz; sleep 0.1; clear; doneizlemekten daha çok titriyor.
Steven Lu

7

Intel i3, i5 ve i7 tabanlı cpus i7ziçin, tüm cpu çekirdekleri için geçerli hızı gösteren özel bir araç var .

Man sayfasından (açıklama):

i7z herhangi bir seçenek olmadan i7z, ncurses tabanlı programı çalıştırır. i7z, Intel'den (Nehalems, Sandy Bridge ve Ivy Bridge dahil) i3, i5 ve i7 tabanlı Core işlemciler için C durumlarını ve sıcaklığını yazdıracak.

Ubuntu tabanlı dağıtımlar için bu komutu vererek kurabilirsiniz:

sudo apt-get install i7z

sonra sadece çalıştırın (araç sudo ile çalıştırılmalıdır):

sudo i7z

4
Intel CPU'nuz varsa bu en iyi çözümdür. Cpuinfo'ya girmek yanlış saat hızları verir. Sadece bir not, çizgi "apt-get" koymak unuttum.
fgblomqvist

Şey ... Xeon işlemcimle sadece çıkış bozuk, belki iki CPU'm olduğu için (çift Xeon anakartım var) çalışıyor.
Alexis Wilke

4

Intel Core i7-4600U İşlemci destekler Turbo Boost teknolojisi . Taban frekansı 2.10GHz ve Maks Turbo Frekansı 3.30GHz'dir. Bu şu demek oluyor,

  • Turbo Boost'u (BIOS kurulum menüsünde) devre dışı bırakırsanız, CPU her zaman 2.10GHz'de çalışır.
  • Turbo Boost etkinleştirildiğinde ve çekirdeklerden yalnızca biri çalışırken, CPU maksimum 3.30GHz'de çalışır.
  • Turbo Boost etkinse ve tüm çekirdekler çalışıyorsa, CPU 2.10GHz'de çalışacaktır.

Mevcut frekansı alma

Turbo Boost'un etkin olup olmadığını ve geçerli frekansın hangisi olduğunu belirlemek için kullanabilirsiniz cpupower frequency-info. Örneğin, Turbo Boost etkin eski bir Intel Core i5-660 için aşağıdakileri elde edersiniz.

$ 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

Bilginin donanım sınırlarını ( 1.20 GHz - 3.47 GHz), olası frekansları ( 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz) ve geçerli frekansı ( 1.87 GHz) belirttiğini unutmayın. Bu frekansların teknik bilgilerini Intel web sitesinde bulabilirsiniz .

TurboBoost devre dışı bırakıldığında frekans

Eğer devre dışı Turbo Boost ile aynı komutu çalıştırdığınızda farkı Not: In boost state supportbölümünde, değerler için Supportedve Activevardır no. Burada, CPU her zaman nominal / minimum değerde (1.20Ghz) olacaktır.

$ 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

Turbo Boost'u BIOS'u veya bazı Linux seçeneklerini / komutlarını kullanarak devre dışı bırakabilirsiniz . Çekirdek desteği etkin / kullanılarak devre dışı bırakılabilir /sys/devices/system/cpu/cpufreq/boostdosyayı.


Haypo'nun Intel p-durumu sürücüsü, C-durumları, Turbo Boost ve frekans bilgileri alma komutları hakkında daha fazla bilgi içeren bir blog girişi vardır.
Jaime

bu bağlantı şimdi koptu ...
Mikhail T.

1
Haypo blog girişi bağlantısı kesildi. Victor Stinner'ın notlarında bir kopya bulabilirsiniz: bölüm 1 ve bölüm 2 .
Jaime

4

CPU frekansları çekirdeğin içinde tutulur, ancak biraz "kapalı" olabilirler. Bunları kullanarak görebilirsiniz:

$ 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

CPU # 'nun daha kısa bir yöntem olduğunu bilmeniz gerekmiyorsa:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
1396354
800058
800050
800024
800005
800017
800001
1392006

Bu yöntem Raspbian çalışan ahududu pi üzerinde çalışıyor gibi görünüyor
Jon

3

CPU'nuz hakkında bilgi almak için aşağıdaki komutu yazın:

dmidecode -t 4

2
Cuspy. Şimdi burada 4 farklı sayı görüyorum ;-)
vonbrand

Ayrıca, "mevcut hız" yanıltıcı gibi görünmektedir, çünkü mevcut hız şu anda makine boştayken her zaman çok sayıda (3.7GHz) olarak rapor edilmektedir.
ragerdl

@vonbrand Tek bir saati olan bir kişi saatin kaç olduğunu biliyor. İki saati olan bir kişi asla tam olarak emin olamaz.
Kusalananda

0

Bilgileri ne için kullandığınıza bağlıdır; cat / proc / cpuinfo`dan gelen çıkış satırı "Reklamı yapılan" hız, broşürdeki hız, vs.'dir. A sunucusunu B sunucusuyla karşılaştırıyorsanız, bu yeterli olabilir. Sistemdeki iş yüklerini izliyorsanız, sorunuzun yorumları ve @ gad3r tarafından verilen yanıt neye bakacağınız olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.