Apa cara yang benar untuk melihat kecepatan CPU Anda di Linux?

20

Saya menemukan dua perintah untuk menampilkan informasi tentang CPU saya: cat /proc/cpuinfodan lscpu. /proc/cpuinfomenunjukkan bahwa kecepatan CPU saya adalah 2,1 Ghz, sedangkan lspcumengatakan itu adalah 3167 Mhz. Yang mana yang benar?

Ini adalah output tepat cat /proc/cpuinfosaya tentang kecepatan prosesor saya:

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

Dan ini dari lscpu:

CPU MHz:               3225.234

(Untuk beberapa alasan, lscpuoutput berbeda setiap kali, bervariasi antara 3100 dan 3300 MHz)

Rohan
sumber
3
Anda /proc/cpuinfojuga harus memiliki garis yang menyatakan cpu MHZ: ...kecepatan saat ini. 2.1 setelah itu @adalah kecepatan dasar (tanpa turbo boost).
don_crissti
Apa itu turbo boost? Dan apakah ini berarti kecepatan saya sebenarnya sekitar 3,2 GHz?
Rohan
2
Ini adalah cara Intel "memukul gas" saat dibutuhkan. Saya kira kecepatan Anda sebenarnya pada saat itu memang sekitar 3,2 GHz, Anda juga dapat mencoba misalnya untuk cpu0 dengan cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq(sebagai root).
don_crissti
2
Turbo Boost adalah teknologi yang mengubah frekuensi prosesor tergantung pada jumlah inti yang Anda gunakan. Jika Anda menggunakan beberapa core, frekuensi meningkat untuk meningkatkan kinerja dan mempertahankan suhu rendah. Anda dapat memeriksa tabel frekuensi Turbo Boost untuk memeriksa bagaimana peningkatannya.
Jaime

Jawaban:

35

Untuk melihat kecepatan saat ini dari setiap inti saya melakukan ini:

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

catatan:

Jika watchperintah Anda tidak berfungsi dengan interval yang lebih kecil dari satu detik, ubah intervalnya seperti ini:

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

Ini menampilkan cpu speedmasing-masing inti secara real time.

Dengan menjalankan perintah berikut, satu atau lebih kali, dari terminal lain orang dapat melihat perubahan kecepatan dengan watchperintah di atas , dengan asumsi SpeedStepdiaktifkan ( Cool'n'Quietuntuk AMD).

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

(Perintah ini digunakan bcuntuk menghitung pihingga 10.000 tempat.)

Timothy Martin
sumber
Saya harus menghapus .perintah pertama Anda untuk membuatnya bekerja:watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""
n1k31t4
1
ini adalah cara yang bagus untuk melakukannya, tapi saya akan memperingatkan agar tidak menjalankan perintah apa pun setiap 0,1 detik, yang dengan sendirinya akan berdampak pada laporan kecepatan cpu. 1 detik banyak.
Lizardx
@ Lizardx Biasanya saya setuju tetapi dalam hal ini kecepatan CPU dapat meningkat dan berkurang lebih cepat dari interval 1 detik, sehingga kurangnya perubahan kecepatan yang terlihat. Karena prosesor modern sangat cepat, saya awalnya berpikir saya SpeedSteptidak berfungsi ketika menggunakan 1 detik sebagai interval. Minimal, .5harus digunakan jika seseorang tidak ingin pergi secepat .1 second(meskipun saya masih merindukan melihat banyak perubahan kecepatan pada tingkat itu.
Timothy Martin
1
Coba jalankan top dengan timer diatur ke kurang dari 1 detik, Anda dapat melihat penggunaan cpu terlihat. Dugaan saya adalah bahwa apa yang sebenarnya Anda lihat adalah sistem yang menghasilkan info kecepatan cpu Anda, yaitu, generasi output kecepatan cpu yang menyebabkan pergerakan cpu. Saya menemukan bahwa apa pun yang kurang dari satu detik mulai secara langsung menyebabkan kecepatan CPU yang Anda tonton. Misalnya, top at -d5 adalah 1% dari cpu. Pada -d2 sekitar 5%. Anda mungkin menemukan Anda benar-benar membodohi diri sendiri dengan berpikir cpu melakukan sesuatu yang Anda lakukan, heh. Output ke shell juga mahal.
Lizardx
Bisa coba watch -n0.1, mungkin berhasil. Gagal itu,, while true; do cat /proc/cpuinfo | grep MHz; sleep 0.1; clear; doneitu berkedip lebih dari menonton sekalipun.
Steven Lu
7

Untuk intel i3, i5 dan i7 berbasis CPU ada alat khusus yang disebut i7zyang menunjukkan kecepatan saat ini untuk semua core cpu.

Dari halaman manual (deskripsi):

i7z menjalankan program i7z, berbasis ncurses, tanpa opsi apa pun. i7z akan mencetak status-C dan suhu untuk prosesor Core berbasis i3, i5, dan i7 dari Intel (termasuk Nehalems, Sandy Bridge dan Ivy Bridge).

Untuk distribusi berbasis ubuntu Anda dapat menginstalnya dengan mengeluarkan perintah ini:

sudo apt-get install i7z

lalu jalankan saja (alat perlu dijalankan dengan sudo):

sudo i7z
Michal Przybylowicz
sumber
4
Ini adalah solusi terbaik jika Anda memiliki CPU Intel. Catpu cpuinfo memberi Anda kecepatan clock yang salah. Hanya sebuah catatan, Anda lupa meletakkan tanda hubung di "apt-get".
fgblomqvist
Yah ... itu bekerja dengan prosesor Xeon saya hanya outputnya kacau, mungkin karena saya punya dua CPU (saya punya motherboard Xeon ganda).
Alexis Wilke
4

The Intel Core i7-4600U Processor mendukung teknologi Turbo Boost . Ini memiliki frekuensi dasar 2.10GHz dan Frekuensi Turbo Max 3.30GHz. Itu berarti bahwa,

  • Jika Anda menonaktifkan Turbo Boost (dalam menu pengaturan BIOS), CPU akan bekerja pada 2.10GHz setiap saat.
  • Saat Turbo Boost diaktifkan dan hanya satu inti yang berfungsi, CPU akan bekerja maksimal 3,30GHz.
  • Jika Turbo Boost diaktifkan dan semua core bekerja, CPU akan bekerja pada 2.10GHz.

Memperoleh frekuensi saat ini

Untuk menentukan apakah Turbo Boost diaktifkan dan yang merupakan frekuensi saat ini, Anda dapat menggunakan cpupower frequency-info. Misalnya, untuk Intel Core i5-660 lama dengan Turbo Boost diaktifkan, Anda akan mendapatkan yang berikut ini.

$ 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

Perhatikan bahwa informasi menyatakan batas perangkat keras ( 1.20 GHz - 3.47 GHz), frekuensi yang mungkin ( 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz) dan frekuensi saat ini ( 1.87 GHz). Anda dapat menemukan informasi teknis dari frekuensi ini di situs web Intel .

Frekuensi ketika TurboBoost dinonaktifkan

Perhatikan perbedaannya saat Anda menjalankan perintah yang sama dengan Turbo Boost dinonaktifkan: Di boost state supportbagian ini, nilai untuk Supporteddan Activesedang no. Di sini, CPU akan berada pada nilai nominal / minimal (1,20Ghz) sepanjang waktu.

$ 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

Anda dapat menonaktifkan Turbo Boost menggunakan BIOS atau beberapa opsi / perintah Linux . The dukungan kernel dapat diaktifkan / dinonaktifkan menggunakan /sys/devices/system/cpu/cpufreq/boostberkas.

Jaime
sumber
Haypo memiliki entri blog dengan informasi lebih lanjut tentang driver p-state Intel, C-state, Turbo Boost dan perintah untuk mendapatkan informasi frekuensi.
Jaime
tautan itu sekarang terputus ...
Mikhail T.
1
Tautan untuk entri blog haypo rusak. Anda dapat menemukan salinan dalam catatan Victor Stinner: bagian 1 dan bagian 2 .
Jaime
4

Frekuensi CPU disimpan dalam kernel tetapi bisa sedikit "mati". Anda dapat melihatnya menggunakan:

$ 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

Jika Anda tidak perlu tahu metode yang lebih pendek CPU hanya menggunakan:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
1396354
800058
800050
800024
800005
800017
800001
1392006
WinEunuuchs2Unix
sumber
Metode ini tampaknya bekerja pada raspberry pi yang menjalankan Raspbian
Jon
3

Untuk mendapatkan informasi tentang CPU Anda, ketik perintah berikut:

dmidecode -t 4
GAD3R
sumber
2
Cuspy. Sekarang saya melihat 4 angka berbeda di sini ;-)
vonbrand
Selain itu, "kecepatan saat ini" tampaknya menyesatkan, karena kecepatan saat ini selalu dilaporkan sebagai jumlah yang besar (3,7GHz), ketika mesin dalam keadaan diam.
ragerdl
@vonbrand Seseorang dengan satu arloji tahu jam berapa sekarang. Seseorang dengan dua jam tangan tidak pernah bisa memastikan.
Kusalananda
0

Tergantung pada apa Anda menggunakan informasi untuk; jalur keluaran dari cat / proc / cpuinfo` adalah kecepatan "Diiklankan", kecepatan dalam brosur, dll. Jika Anda membandingkan server A ke server B, itu mungkin cukup. Jika Anda memantau beban kerja pada sistem, komentar untuk pertanyaan Anda dan jawaban oleh @ gad3r akan menjadi apa yang harus dilihat.

Mark Stewart
sumber