วิธีที่ถูกต้องในการดูความเร็ว CPU ของคุณบน Linux คืออะไร?


20

ผมพบว่าทั้งสองคำสั่งไปยังข้อมูลการส่งออกเกี่ยวกับ CPU ของฉันและcat /proc/cpuinfo แสดงให้เห็นว่าความเร็ว CPU ของฉันคือ 2.1 Ghz ในขณะที่บอกว่ามันคือ 3167 Mhz อันไหนที่ถูก?lscpu/proc/cpuinfolspcu

นี่คือผลลัพธ์ที่แน่นอนจากcat /proc/cpuinfoความเร็วโปรเซสเซอร์ของฉัน:

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

และนี่คือจากlscpu:

CPU MHz:               3225.234

(ด้วยเหตุผลบางอย่างlscpuผลลัพธ์ที่แตกต่างกันทุกครั้งจะแตกต่างกันระหว่าง 3100 และ 3300 MHz)


3
คุณ/proc/cpuinfoควรมีบรรทัดที่ระบุว่าcpu MHZ: ...เป็นความเร็วปัจจุบัน 2.1 หลังจากนั้น@คือความเร็วฐาน (ไม่มีเทอร์โบบูสต์)
don_crissti

Turbo Boost คืออะไร? และนี่ก็หมายความว่าความเร็วของฉันอยู่ที่ประมาณ 3.2 GHz?
Rohan

2
เป็นวิธีของ Intel ในการ "โจมตีก๊าซ" เมื่อจำเป็น ฉันเดาว่าความเร็วจริงของคุณในตอนนั้นอยู่ที่ประมาณ 3.2 GHz คุณสามารถลองเช่นสำหรับ cpu0 ด้วยcat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq(ตามรูท)
don_crissti

2
Turbo Boostเป็นเทคโนโลยีที่เปลี่ยนความถี่ของโปรเซสเซอร์ขึ้นอยู่กับจำนวนคอร์ที่คุณใช้ หากคุณใช้คอร์ไม่กี่คอร์ความถี่จะเพิ่มขึ้นเพื่อเพิ่มประสิทธิภาพและรักษาอุณหภูมิต่ำ คุณสามารถตรวจสอบตารางความถี่เทอร์โบบูสต์เพื่อตรวจสอบว่ามันเพิ่มขึ้นได้อย่างไร
Jaime

คำตอบ:


35

หากต้องการดูความเร็วปัจจุบันของแต่ละแกนฉันทำได้ดังนี้:

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

บันทึก:

หากwatchคำสั่งของคุณใช้ไม่ได้กับช่วงเวลาที่เล็กกว่าหนึ่งวินาทีให้ปรับเปลี่ยนช่วงเวลาดังนี้:

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

สิ่งนี้แสดงให้เห็นถึงcpu speedแต่ละคอร์ตามเวลาจริง

โดยการเรียกใช้คำสั่งต่อไปนี้หนึ่งครั้งหรือมากกว่าจากเทอร์มินัลหนึ่งสามารถดูการเปลี่ยนแปลงความเร็วด้วยwatchคำสั่งข้างต้นสมมติว่าSpeedStepเปิดใช้งาน ( Cool'n'QuietสำหรับAMD)

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

(คำสั่งนี้ใช้bcในการคำนวณpiถึง 10,000 แห่ง)


ฉันต้องลบ.คำสั่งในคำสั่งแรกของคุณเพื่อให้มันทำงาน:watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""
n1k31t4

1
นี่เป็นวิธีที่ดีในการทำ แต่ฉันควรระมัดระวังในการรันคำสั่งใด ๆ ทุก. 1 วินาทีนั่นคือตัวเองจะส่งผลกระทบต่อรายงานความเร็ว cpu 1 วินาทีมีมากมาย
Lizardx

@ Lizardx ปกติฉันเห็นด้วย แต่ในกรณีนี้ความเร็วของ CPU สามารถเพิ่มและลดได้เร็วกว่าช่วงเวลา 1 วินาทีทำให้ขาดการเปลี่ยนแปลงความเร็วที่มองเห็นได้ เนื่องจากตัวประมวลผลสมัยใหม่นั้นเร็วฉันจึงเริ่มคิดว่าฉันSpeedStepไม่ทำงานเมื่อใช้ 1 วินาทีเป็นช่วงเวลา อย่างน้อยที่สุด.5ควรจะใช้อย่างใดอย่างหนึ่งไม่ได้ต้องการที่จะไปให้เร็วที่สุดเท่า.1 second(แม้ว่าฉันได้ยังคงพลาดเห็นจำนวนมากของการเปลี่ยนแปลงความเร็วในอัตราที่.
ทิโมธีมาร์ติน

1
ลองวิ่งบนตัวจับเวลาด้วยการตั้งค่าตัวจับเวลาน้อยกว่า 1 วินาทีคุณจะเห็นการใช้งาน cpu อย่างชัดเจน ฉันเดาว่าสิ่งที่คุณอาจเห็นจริง ๆ คือระบบสร้างข้อมูลความเร็ว cpu ของคุณนั่นคือการสร้างความเร็วเอาต์พุต cpu ทำให้เกิดการเคลื่อนไหวของ cpu ฉันพบว่าสิ่งที่น้อยกว่าหนึ่งวินาทีเริ่มที่จะทำให้ความเร็วซีพียูที่คุณกำลังดูอยู่โดยตรง ตัวอย่างเช่น top ที่ -d5 คือ 1% ของ cpu ที่ -d2 ประมาณ 5% คุณอาจพบว่าคุณหลอกตัวเองโดยคิดว่าซีพียูกำลังทำสิ่งที่คุณกำลังทำอยู่ใช่ไหม การส่งออกไปยังเปลือกหอยก็มีราคาแพงเช่นกัน
Lizardx

ลองwatch -n0.1ได้อาจใช้งานได้ ความล้มเหลวนั้นwhile true; do cat /proc/cpuinfo | grep MHz; sleep 0.1; clear; doneมันกะพริบมากกว่าการดู
Steven Lu

7

สำหรับ intel i3, i5 และ i7 ที่ใช้ซีพียูมีเครื่องมือเฉพาะที่เรียกว่าi7zที่แสดงความเร็วปัจจุบันสำหรับแกนประมวลผลทั้งหมด

จากหน้าคน (คำอธิบาย):

i7z รัน i7z, ncurses, โปรแกรมโดยไม่มีตัวเลือกใด ๆ i7z จะพิมพ์ C-state และอุณหภูมิสำหรับโปรเซสเซอร์ Core ที่ใช้ i3, i5 และ i7 จาก Intel (รวมถึง Nehalems, Sandy Bridge และ Ivy Bridge)

สำหรับการกระจายบน Ubuntu คุณสามารถติดตั้งได้โดยใช้คำสั่งนี้:

sudo apt-get install i7z

จากนั้นให้เรียกใช้งาน (เครื่องมือจำเป็นต้องเรียกใช้ด้วย sudo):

sudo i7z

4
นี่เป็นทางออกที่ดีที่สุดหากคุณมี Intel CPU Cat'ing the cpuinfo ให้ความเร็วสัญญาณนาฬิกาที่ไม่ถูกต้อง เพียงแค่ทราบคุณลืมใส่รีบใน "ฉลาด - รับ"
fgblomqvist

อืม ... มันใช้งานได้กับโปรเซสเซอร์ Xeon ของฉันเท่านั้นเอาต์พุตที่อ่านไม่ออกอาจเป็นเพราะฉันมี CPU สองตัว (ฉันมีเมนบอร์ด Xeon คู่)
Alexis Wilke

4

Intel Core i7-4600U Processorสนับสนุนเทคโนโลยี Turbo Boost มันมีความถี่พื้นฐาน 2.10GHz และ Max Turbo Frequency 3.30GHz นั่นหมายความว่า

  • หากคุณปิดการใช้งาน Turbo Boost (ในเมนูการตั้งค่า BIOS) CPU จะทำงานที่ 2.10GHz ตลอดเวลา
  • เมื่อเปิดใช้งาน Turbo Boost และมีเพียงแกนเดียวเท่านั้นที่ทำงาน CPU จะทำงานได้สูงสุด 3.30GHz
  • หากเปิดใช้งาน Turbo Boost และแกนทั้งหมดทำงาน CPU จะทำงานที่ 2.10GHz

รับความถี่ปัจจุบัน

เพื่อตรวจสอบว่า Boost Turbo cpupower frequency-infoที่มีการเปิดใช้งานและซึ่งเป็นความถี่ปัจจุบันคุณสามารถใช้ ตัวอย่างเช่นสำหรับ Intel Core i5-660 รุ่นเก่าที่เปิดใช้งาน Turbo Boost คุณจะได้รับสิ่งต่อไปนี้

$ 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

โปรดทราบว่าข้อมูลระบุขีด จำกัด ของฮาร์ดแวร์ ( 1.20 GHz - 3.47 GHz), ความถี่ที่เป็นไปได้ ( 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz) และความถี่ปัจจุบัน ( 1.87 GHz) คุณอาจพบข้อมูลทางเทคนิคของความถี่เหล่านี้ได้ที่เว็บไซต์ของอินเทล

ความถี่เมื่อปิดใช้งาน TurboBoost

หมายเหตุ: ความแตกต่างเมื่อคุณเรียกใช้คำสั่งเดียวกันกับ Turbo Boost ปิดการใช้งาน: ในboost state supportส่วนค่าสำหรับSupportedและมีActive noที่นี่ซีพียูจะมีค่าน้อยที่สุด (1.20Ghz) ตลอดเวลา

$ 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

คุณสามารถปิด Boost Turbo โดยใช้ BIOS หรือลินุกซ์ตัวเลือก / คำสั่ง การสนับสนุนเคอร์เนลสามารถเปิด / ปิดการใช้งานโดยใช้/sys/devices/system/cpu/cpufreq/boostไฟล์


Haypo มีรายการบล็อกพร้อมข้อมูลเพิ่มเติมเกี่ยวกับไดรเวอร์ Intel p-state, C-state, Turbo Boost และคำสั่งเพื่อรับข้อมูลความถี่
Jaime

ลิงก์นั้นเสียแล้ว ...
มิคาอิลต.

1
ลิงก์สำหรับรายการบล็อก haypo ใช้งานไม่ได้ คุณอาจพบสำเนาในหมายเหตุประกอบวิกเตอร์ Stinner ของ: ส่วนที่ 1และส่วนที่ 2
ไจ

4

ความถี่ของซีพียูจะถูกเก็บไว้ในเคอร์เนล แต่ก็สามารถ "ปิด" ได้เล็กน้อย คุณสามารถดูได้โดยใช้:

$ 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 # นั้นใช้เพียง:

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

วิธีนี้ดูเหมือนจะใช้ได้กับราสเบอร์รี่ pi ที่รัน Raspbian
Jon

3

ในการรับข้อมูลเกี่ยวกับ CPU ของคุณให้พิมพ์คำสั่งต่อไปนี้:

dmidecode -t 4

2
Cuspy ตอนนี้ฉันเห็นตัวเลขต่างกัน4ตัวที่นี่ ;-)
vonbrand

นอกจากนี้ "ความเร็วปัจจุบัน" ดูเหมือนว่าจะทำให้เข้าใจผิดเนื่องจากความเร็วปัจจุบันนั้นรายงานเป็นจำนวนมากเสมอ (3.7GHz) เมื่อเครื่องไม่ได้ใช้งาน
ragerdl

@ vonbrand บุคคลที่มีหนึ่งนาฬิการู้ว่าเวลาเท่าไหร่ คนที่มีนาฬิกาสองเรือนไม่สามารถมั่นใจได้อย่างแน่นอน
Kusalananda

0

ขึ้นอยู่กับสิ่งที่คุณใช้ข้อมูลสำหรับ; บรรทัดเอาต์พุตจาก cat / proc / cpuinfo` คือความเร็ว "โฆษณา" ความเร็วในโบรชัวร์ ฯลฯ หากคุณเปรียบเทียบเซิร์ฟเวอร์ A กับเซิร์ฟเวอร์ B นั่นอาจเพียงพอ หากคุณกำลังตรวจสอบปริมาณงานในระบบความคิดเห็นสำหรับคำถามของคุณและคำตอบโดย @ gad3r จะเป็นสิ่งที่ควรพิจารณา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.