Cách chính xác để xem tốc độ CPU của bạn trên Linux là gì?


20

Tôi tìm thấy hai lệnh để xuất thông tin về CPU của mình: cat /proc/cpuinfolscpu. /proc/cpuinfocho thấy tốc độ CPU của tôi là 2,1 Ghz, trong khi lspcuđó là 3167 Mhz. Cái nào đúng?

Đây là đầu ra chính xác cat /proc/cpuinfocủa tôi về tốc độ bộ xử lý của tôi:

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

Và đây là từ lscpu:

CPU MHz:               3225.234

(Vì một số lý do, lscpuđầu ra khác nhau mỗi lần, dao động trong khoảng từ 3100 đến 3300 MHz)


3
Bạn /proc/cpuinfocũng nên có một dòng cho biết cpu MHZ: ...đó là tốc độ hiện tại. 2.1 sau @tốc độ cơ bản (không có turbo boost).
don_crissti

Tăng áp turbo là gì? Và điều này có nghĩa là tốc độ của tôi thực sự là khoảng 3,2 GHz?
Rohan

2
Đó là cách "nhấn ga" của Intel khi cần thiết. Tôi đoán tốc độ thực tế của bạn tại thời điểm đó thực sự là khoảng 3,2 GHz, bạn cũng có thể thử, ví dụ như đối với cpu0 với cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq(với quyền root).
don_crissti

2
Turbo Boost là công nghệ thay đổi tần số của bộ xử lý tùy thuộc vào số lượng lõi bạn đang sử dụng. Nếu bạn sử dụng một vài lõi, tần số được tăng lên để tăng hiệu suất và duy trì nhiệt độ thấp. Bạn có thể kiểm tra các bảng tần số Turbo Boost để kiểm tra xem nó tăng như thế nào.
Jaime

Câu trả lời:


34

Để xem tốc độ hiện tại của từng lõi tôi làm điều này:

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

Chú thích:

Nếu watchlệnh của bạn không hoạt động với các khoảng nhỏ hơn một giây, hãy sửa đổi khoảng thời gian như sau:

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

Điều này hiển thị cpu speedtừng lõi trong thời gian thực.

Bằng cách chạy lệnh sau, một hoặc nhiều lần, từ một thiết bị đầu cuối khác, người ta có thể thấy sự thay đổi tốc độ với watchlệnh trên , giả sử SpeedStepđược bật ( Cool'n'Quietfor AMD).

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

(Lệnh này sử dụng bcđể tính toán pitới 10000 địa điểm.)


Tôi đã phải xóa .lệnh đầu tiên của bạn để làm cho nó hoạt động:watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""
n1k31t4

1
đây là một cách tiện lợi để làm điều đó, nhưng tôi thận trọng không nên chạy bất kỳ lệnh nào sau mỗi 1 giây, chính điều đó sẽ ảnh hưởng đến báo cáo tốc độ cpu. 1 giây là nhiều.
Lizardx

@Lizardx Thông thường tôi đồng ý nhưng trong trường hợp này tốc độ CPU có thể tăng và giảm nhanh hơn khoảng thời gian 1 giây, dẫn đến thiếu thay đổi tốc độ có thể nhìn thấy. Vì bộ xử lý hiện đại quá nhanh, ban đầu tôi nghĩ rằng tôi SpeedStepkhông hoạt động khi sử dụng 1 giây làm khoảng thời gian. Tối thiểu, .5nên được sử dụng nếu một người không muốn đi nhanh như vậy .1 second(mặc dù tôi vẫn bỏ lỡ khi thấy nhiều thay đổi tốc độ ở tốc độ đó.
Timothy Martin

1
Hãy thử chạy hàng đầu với bộ hẹn giờ được đặt dưới 1 giây, bạn có thể thấy việc sử dụng cpu rõ ràng. Tôi đoán là những gì bạn thực sự có thể nhìn thấy là hệ thống tạo ra thông tin tốc độ cpu của bạn, nghĩa là việc tạo ra tốc độ đầu ra cpu đang gây ra chuyển động cpu. Tôi thấy rằng bất cứ điều gì ít hơn một giây bắt đầu trực tiếp gây ra tốc độ cpu bạn đang xem. Ví dụ: đầu ở -d5 là 1% của cpu. Ở mức -d2, khoảng 5%. Bạn có thể thấy bạn thực sự đang tự lừa mình khi nghĩ rằng cpu đang làm điều gì đó mà bạn đang làm, heh. Đầu ra vỏ cũng đắt.
Lizardx

Có thể thử watch -n0.1, có thể làm việc. Nếu không được, while true; do cat /proc/cpuinfo | grep MHz; sleep 0.1; clear; donethì thấp thoáng hơn đồng hồ mặc dù.
Steven Lu

7

Đối với cpus dựa trên intel i3, i5 và i7, có một công cụ chuyên dụng được gọi là i7zhiển thị tốc độ hiện tại cho tất cả các lõi cpu.

Từ trang người đàn ông (mô tả):

i7z chạy chương trình i7z, dựa trên ncurses mà không có bất kỳ tùy chọn nào. i7z sẽ in ra các trạng thái C và nhiệt độ cho các bộ xử lý Core dựa trên i3, i5 và i7 của Intel (bao gồm Nehalems, Sandy Bridge và Ivy Bridge).

Đối với các bản phân phối dựa trên Ubuntu, bạn có thể cài đặt nó bằng cách ban hành lệnh này:

sudo apt-get install i7z

sau đó chỉ cần chạy nó (công cụ cần phải được chạy với sudo):

sudo i7z

4
Đây là giải pháp tốt nhất nếu bạn có CPU Intel. Catpuing cpuinfo cung cấp cho bạn tốc độ xung nhịp không chính xác. Chỉ cần một lưu ý, bạn đã quên đặt dấu gạch ngang trong "apt-get".
fgblomqvist

Chà ... nó hoạt động với bộ xử lý Xeon của tôi, chỉ có đầu ra bị cắt xén, có thể vì tôi có hai CPU (tôi có bo mạch chủ Xeon kép).
Alexis Wilke

4

Bộ xử lý Intel Core i7-4600U hỗ trợ công nghệ Turbo Boost . Nó có tần số cơ bản là 2,10GHz và Tần số Turbo tối đa là 3,30GHz. Đó có nghĩa là,

  • Nếu bạn tắt Turbo Boost (trong menu cài đặt BIOS), CPU sẽ hoạt động ở tốc độ 2.10GHz mọi lúc.
  • Khi Turbo Boost được kích hoạt và chỉ một trong số các lõi hoạt động, CPU sẽ hoạt động ở mức tối đa 3,30GHz.
  • Nếu Turbo Boost được bật và tất cả các lõi đang hoạt động, CPU sẽ hoạt động ở tốc độ 2.10GHz.

Lấy tần số hiện tại

Để xác định xem Turbo Boost có được kích hoạt hay không và đó là tần số hiện tại, bạn có thể sử dụng cpupower frequency-info. Chẳng hạn, đối với Intel Core i5-660 cũ có bật Turbo Boost, bạn sẽ nhận được những điều sau.

$ 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

Lưu ý rằng thông tin nêu các giới hạn phần cứng ( 1.20 GHz - 3.47 GHz), tần số có thể ( 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz) và tần số hiện tại ( 1.87 GHz). Bạn có thể tìm thấy thông tin kỹ thuật của các tần số này tại trang web của Intel .

Tần suất khi TurboBoost bị tắt

Lưu ý sự khác biệt khi bạn chạy cùng một lệnh với Turbo Boost bị vô hiệu hóa: Trong boost state supportphần, các giá trị cho SupportedActiveno. Tại đây, CPU sẽ ở giá trị danh nghĩa / tối thiểu (1.20Ghz) mọi lúc.

$ 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

Bạn có thể vô hiệu hóa Turbo Boost bằng cách sử dụng BIOS hoặc một số tùy chọn / lệnh của Linux . Các hỗ trợ hạt nhân có thể được kích hoạt / vô hiệu hóa bằng cách sử dụng /sys/devices/system/cpu/cpufreq/boosttập tin.


Haypo có một mục blog với nhiều thông tin hơn về trình điều khiển trạng thái p của Intel, trạng thái C, Turbo Boost và các lệnh để có được thông tin tần số.
Jaime

liên kết đó hiện đã bị hỏng ...
Mikhail T.

1
Liên kết cho mục blog haypo bị hỏng. Bạn có thể tìm thấy một bản sao trong ghi chú của Victor Stinner: phần 1phần 2 .
Jaime

4

Tần số CPU được giữ trong kernel nhưng chúng có thể hơi "tắt". Bạn có thể thấy chúng bằng cách sử dụng:

$ 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

Nếu bạn không cần biết phương pháp ngắn hơn của CPU chỉ đơn giản là sử dụng:

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

Phương pháp này dường như hoạt động trên pi mâm xôi chạy Raspbian
Jon

3

Để nhận thông tin về CPU của bạn, hãy gõ lệnh sau:

dmidecode -t 4

2
Giòn. Bây giờ tôi thấy 4 số khác nhau ở đây ;-)
vonbrand

Ngoài ra, "tốc độ hiện tại" dường như bị sai lệch, vì tốc độ hiện tại luôn được báo cáo là một số lớn (3,7GHz), khi máy không hoạt động.
ragerdl

@vonbrand Một người có một chiếc đồng hồ biết mấy giờ rồi. Một người có hai chiếc đồng hồ không bao giờ có thể khá chắc chắn.
Kusalananda

0

Phụ thuộc vào những gì bạn đang sử dụng thông tin cho; dòng đầu ra từ cat / Proc / cpuinfo` là tốc độ "Được quảng cáo", tốc độ trong tài liệu quảng cáo, v.v ... Nếu bạn so sánh máy chủ A với máy chủ B, điều đó có thể là đủ. Nếu bạn đang theo dõi khối lượng công việc trên hệ thống, các bình luận cho câu hỏi của bạn và câu trả lời của @ gad3r sẽ là những gì cần xem xét.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.