Hầu hết các CPU hiện nay đều có khả năng điều chỉnh tốc độ của chúng để giúp tiết kiệm mức sử dụng pin / năng lượng. Nó thường được gọi là nhân rộng tần số CPU . Tốc độ thời gian thực của CPU được báo cáo bởi điều này:
$ sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
Tốc độ CPU tuyệt đối (tối đa) đang được báo cáo bởi điều này:
$ cat /proc/cpuinfo
Cụ thể dòng này:
model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
Dòng hiển thị cpu MHz
không hiển thị tốc độ tối đa của CPU của bạn. Giá trị này là tốc độ hiện tại của bạn. Trên hệ thống đa lõi như i7 hoặc i5, bạn có thể thấy điều này với lệnh này:
$ cat /proc/cpuinfo |grep MHz
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 1199.000
cpu MHz : 2667.000
Tuy nhiên, bạn có thể thấy tốc độ (tối đa) tuyệt đối với lệnh này:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 4
Thread(s) per core: 2
Core(s) per socket: 2
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 37
Stepping: 5
CPU MHz: 2667.000
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3
LƯU Ý: số lõi mà nó có, NUMAS node0 CPU(s)
là 4, tức là 0,1,2 và 3.
CPU mở rộng & quản trị?
Chế độ mà hệ thống của bạn đang ở được gọi là thống đốc tỷ lệ. Tương tự như một thống đốc trên một chiếc xe hơi. Bạn có thể xem những cái nào có sẵn với lệnh này:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
powersave ondemand userspace performance
Bạn cũng có thể xem cái nào đang hoạt động:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
LƯU Ý: Các lệnh tôi đang hiển thị chỉ bao gồm cpu thứ nhất , cpu0
. Bạn có thể thay thế trong một *
đường dẫn để xem tất cả các lõi hoặc bạn có thể thấy có chọn lọc cpu1
, v.v.
Bạn có thể thấy tốc độ CPU tối đa và tối thiểu có sẵn cho hồ sơ của thống đốc của bạn:
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
2667000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
1199000
Chi tiết hơn có sẵn trong bài viết này, có tiêu đề: nhân rộng tần số CPU trong Linux với cpufreq .
Vậy còn cpuinfo_cur_freq thì sao?
Tham số này có liên quan nhiều hơn đến đặc điểm kỹ thuật của CPU và cấu hình hiện tại của nó, thay vì bất kỳ thứ gì hữu ích liên quan đến cách CPU hiện đang hoạt động. Đối với hoạt động từ xa thực tế, tôi sẽ sử dụng các bộ điều chỉnh scaling_*
hạt nhân.
Thí dụ
Tôi kết hợp các kịch bản sau đây để hiển thị cột CPU Lõi để có thể dễ dàng hơn để xem các bộ điều chỉnh Kernel khác nhau trông như thế nào:
#!/bin/bash
nthCore=$(lscpu|grep node0|cut -d"-" -f2)
for i in /sys/devices/system/cpu/cpu0/cpufreq/{cpuinfo,scaling}_*; do
pname=$(basename $i)
[[ "$pname" == *available* ]] || [[ "$pname" == *transition* ]] || \
[[ "$pname" == *driver* ]] || [[ "$pname" == *setspeed* ]] && continue
echo "$pname: "
for j in `seq 0 $nthCore`;do
kparam=$(echo $i | sed "s/cpu0/cpu$j/")
sudo cat $kparam
done
done | paste - - - - - | column -t
Khi bạn chạy nó, bạn nhận được đầu ra sau đây:
$ ./cpuinfo.bash
cpuinfo_cur_freq: 2667000 2667000 2667000 2667000
cpuinfo_max_freq: 2667000 2667000 2667000 2667000
cpuinfo_min_freq: 1199000 1199000 1199000 1199000
scaling_cur_freq: 2667000 2266000 1333000 2667000
scaling_governor: ondemand ondemand ondemand ondemand
scaling_max_freq: 2667000 2667000 2667000 2667000
scaling_min_freq: 1199000 1199000 1199000 1199000
Bạn có thể thấy rằng scaling_cur_freq
điều chỉnh được hiển thị chậm trong lõi # 1 & 2.
/proc/cpuinfo
báo cáo giống nhưcpuinfo_cur_freq
? Rõ ràng là không! Trọng tâm của câu hỏi của tôi vẫn chưa được giải quyết. Tôi đã phát hiện ra công cụ này có vẻ như bằng cách nào đó báo cáo "tần số thực", nhưng tôi không chắc nó hoạt động chính xác. Nó cung cấp một số nguồn cho thuật toán của nó, nhưng không thực sự cung cấp một lời giải thích tuyệt vời cho sự khác biệt.