Cách xem tốc độ CPU trên Linux

Tác giả Starlink, T.Tư 22, 2025, 11:45:08 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Bộ xử lý trung tâm (CPU) là đơn vị phần cứng chính trên máy tính có trách nhiệm thực hiện các lệnh từ chương trình. Do đó, tốc độ của CPU có tác động đáng kể đến hiệu suất của hệ thống.

Trong bài viết này, chúng ta sẽ tìm hiểu cách lấy thông tin tốc độ CPU cơ bản và thời gian thực trên Linux. Có nhiều tiện ích dòng lệnh và tập lệnh khác nhau mà chúng ta có thể sử dụng để lấy tốc độ CPU của mình.


Tốc độ CPU được định nghĩa là tốc độ xung nhịp hoặc tốc độ xung nhịp. Tốc độ xung nhịp cho biết tần số xử lý của bộ xử lý. Nói cách khác, nó xác định số lệnh mà CPU có thể diễn giải mỗi giây. Vì bộ xử lý hiện đại rất nhanh nên tốc độ xung nhịp thường được định nghĩa là MHz hoặc GHz.

Nhìn chung, CPU có tốc độ cơ bản có thể thấy từ thông số kỹ thuật phần cứng. Tuy nhiên, trên thực tế, tốc độ xung nhịp thường cao hơn tốc độ này và có thể thay đổi theo thời gian.

1. Kiểm tra tệp /proc/cpuinfo

Phương pháp đầu tiên chúng ta có thể sử dụng để tìm tốc độ CPU là đọc tệp ảo /proc/cpuinfo. Trong tệp này, có rất nhiều thông tin liên quan đến CPU. Vì chúng ta chỉ tìm tốc độ xung nhịp, chúng ta có thể lọc trực tiếp thông tin chúng ta cần:

Mã nguồn [Chọn]
$ cat /proc/cpuinfo | grep Hz
model name    : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
cpu MHz        : 2904.004
model name    : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
cpu MHz        : 2904.004

Như chúng tôi đã đề cập trước đó, có tốc độ xung nhịp cơ bản và thời gian thực. Trong trường hợp này, các giá trị này lần lượt là 2,70 GHz và 2904,004 MHz.

Hơn nữa, lý do có hai đầu ra là vì tệp này hiển thị thông tin CPU cho từng lõi bộ xử lý. Vì vậy, điều đó có nghĩa là có hai lõi trong hệ thống cụ thể này cung cấp đầu ra ở trên. Trong ví dụ này, tốc độ xung nhịp là như nhau cho cả hai lõi.

Nếu chúng ta muốn theo dõi tốc độ trong một khoảng thời gian, chúng ta có thể sử dụng lệnh watch :

Mã nguồn [Chọn]
$ watch -n1 "grep Hz /proc/cpuinfo"

Every 1.0s: grep Hz /proc/cpuinfo                                                                baeldung: Sun Jun 26 16:21:32 2022

model name      : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
cpu MHz         : 2904.004
model name      : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
cpu MHz         : 2904.004

Đầu ra ở trên sẽ làm mới mỗi giây. Chúng ta có thể thay đổi chu kỳ bằng cách sửa đổi giá trị sau tùy chọn -n.

2. Sử dụng lscpu

Chúng ta cũng có thể sử dụng  tiện ích dòng lệnh lscpu để lấy tốc độ CPU. lscpu thu thập thông tin kiến trúc CPU chung từ tệp ảo /proc/cpuinfo và hệ thống tệp giả sysfs. 

Một lần nữa, vì chúng ta không quan tâm đến tất cả thông tin về CPU nên chúng ta lọc đầu ra để có được thông tin về tốc độ mà chúng ta đang tìm kiếm:

Mã nguồn [Chọn]
$ lscpu | grep CPU
CPU op-mode(s):                  32-bit, 64-bit
CPU(s):                          2
On-line CPU(s) list:             0,1
CPU family:                      6
Model name:                      Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
CPU MHz:                         2904.000
NUMA node0 CPU(s):               0,1
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Mmio stale data:   Mitigation; Clear CPU buffers; SMT Host state unknown

Như chúng ta có thể thấy từ đầu ra của lscpu, kết quả là 2,70 GHz và 2904,004 MHz, giống như trước.

3. Xem Kernel Message Buffer bằng dmesg

dmesg là lệnh in bộ đệm tin nhắn được tạo bởi kernel và trình điều khiển thiết bị. Tương tự như các phương pháp trước, chúng ta có thể lấy thông tin tốc độ CPU bằng cách lọc đầu ra của dmesg :

Mã nguồn [Chọn]
$ dmesg | grep Hz
[    0.000016] tsc: Detected 2904.004 MHz processor
[    0.238892] smpboot: CPU0: Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz (family: 0x6, model: 0x8e, stepping: 0x9)
...

Ở đây, chúng ta có tốc độ xung nhịp 2904.004 MHz và chúng ta thấy CPU có tần số cơ sở 2,70 GHz, giống như các phương pháp trước. Lưu ý rằng có thể có một số đầu ra không liên quan cho lệnh trên.

4. Phân tích dữ liệu SMBIOS bằng dmidecode

dmidecode là một công cụ phân tích dữ liệu BIOS Quản lý Hệ thống (SMBIOS) theo định dạng mà con người có thể đọc được. SMBIOS cung cấp các cấu trúc dữ liệu để truy cập thông tin về các thành phần phần cứng của hệ thống, chẳng hạn như thiết bị bộ nhớ hoặc bộ xử lý, cũng như quản lý BIOS.

Mã nguồn [Chọn]
$ sudo dmidecode -t processor | grep Hz
    Version: Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
    External Clock: 100 MHz
    Max Speed: 2900 MHz
    Current Speed: 2600 MHz

Lần này, đầu ra hơi khác so với những lần khác. Bên cạnh đó, chúng ta có thể muốn lưu ý rằng dmidecode đôi khi có thể đưa ra kết quả không đáng tin cậy vì nó trích xuất dữ liệu từ các bảng SMBIOS thay vì thăm dò phần cứng thực tế.

5. Sử dụng công cụ inxi

Một cách khác để có được thông tin về tốc độ CPU là sử dụng  tập lệnh inxi .  inxi có thể cung cấp nhiều thông tin hữu ích từ trình điều khiển đến hạt nhân, nhưng chúng tôi chỉ quan tâm đến thông tin CPU. Để sử dụng inxi, chúng tôi cần cài đặt nó với trình quản lý gói của mình.

Hãy cùng xem xét các loại thông tin mà tập lệnh trả về về CPU:

Mã nguồn [Chọn]
$ sudo inxi -c
CPU: Dual Core Intel Core i7-7500U (-MCP-) speed: 2904 MHz Kernel: 5.13.0-51-generic x86_64 Up: 22m
Mem: 465.6/971.2 MiB (47.9%) Storage: 20.00 GiB (50.7% used) Procs: 201 Shell: bash 5.0.17 inxi: 3.0.38

Ở trên, chúng tôi đã sử dụng -c để lấy dữ liệu về CPU. Tương ứng, chúng tôi quan sát thấy tốc độ CPU là 2904 MHz.

6. Sử dụng Công cụ thông tin cấp độ phần cứng hwinfo

hwinfo ghi lại một số thông tin hữu ích về phần cứng chung trong hệ thống. Chúng ta cũng có thể cài đặt thủ công, chỉ bằng cách sử dụng trình quản lý gói của chúng ta.

Sau đó, tương tự như các phương pháp khác, chúng ta có thể sử dụng hwinfo để lấy tốc độ CPU:

Mã nguồn [Chọn]
$ hwinfo --cpu | grep Hz
  Model: 6.142.9 "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz"
  Clock: 2904 MHz
  Model: 6.142.9 "Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz"
  Clock: 2904 MHz

Như có thể thấy ở trên, chúng ta có được cả tốc độ xung nhịp cơ bản và hiện tại là 2,70 GHz và 2904 MHz như trước.

7. Sử dụng i7z cho Bộ xử lý Intel

i7z là một tiện ích cơ bản báo cáo dữ liệu bộ xử lý, nhưng chỉ về CPU Intel Core. Sau khi cài đặt gói, chúng ta có thể thấy một số thông tin trạng thái thời gian thực cho mọi lõi:

Mã nguồn [Chọn]
$ sudo i7z
Cpu speed from cpuinfo 2903.00Mhz
cpuinfo might be wrong if cpufreq is enabled. To guess correctly try estimating via tsc
Linux's inbuilt cpu_khz code emulated now
True Frequency (without accounting Turbo) 2903 MHz
  CPU Multiplier 29x || Bus clock frequency (BCLK) 100.10 MHz

Socket [0] - [physical cores=2, logical cores=2, max online cores ever=2]
  TURBO DISABLED on 2 Cores, Hyper Threading OFF
  Max Frequency without considering Turbo 2903.00 MHz (100.10 x [29])
  Max TURBO Multiplier (if Enabled) with 1/2/3/4 Cores is  42x/42x/42x/42x
  Real Current Frequency 0.00 MHz [100.10 x 0.00] (Max of below)
        Core [core-id]  :Actual Freq (Mult.)      C0%   Halt(C1)%  C3 %   C6 %  Temp      VCore
        Core 1 [0]:       inf (infx)       0     100       0       0    -1      1.9349
        Core 2 [1]:       inf (infx)       0     100       0       0    -1      1.9349
...

Khi chúng ta kiểm tra đầu ra, chúng ta thấy tần số thực của CPU là 2903 MHz. Như chúng tôi đã đề cập trước đó, tần số thực có thể thay đổi theo thời gian thực. Do đó, sự khác biệt nhỏ này không phải là vấn đề.

Trong bài viết này, chúng ta đã tìm hiểu CPU là gì và tốc độ của nó có nghĩa là gì. Chúng ta đã thấy sự khác biệt giữa tần số cơ sở và tần số thực và sử dụng một số phương pháp để lấy thông tin về tốc độ xung nhịp.