Score:-1

ฉันจะทำให้ CPU ของฉันทำงานด้วยความเร็วสูงสุดโดยหลีกเลี่ยงการปรับขนาด CPU ได้อย่างไร

ธง sa

ฉันใช้ CentOS 7 (7.9.2009) (เคอร์เนล 3.10.0-1160.49.1.el7.x86_64) บนแล็ปท็อปที่ค่อนข้างเก่า (Lenove T61) พร้อมซีพียูดูอัลคอร์ (Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz) ไดรเวอร์สำหรับการปรับขนาด CPU คือ acpi-cpufreq และเมื่ออยู่บน ประสิทธิภาพ ผู้ว่าราชการ ฉันสามารถให้ CPU ทำงานที่ความเร็ว CPU สูงสุดตามที่ระบุไว้ใน /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freqและสังเกตสิ่งนี้โดยทำ:

$ grep -i mhz /proc/cpuinfo 
ซีพียู MHz : 2001.000
ซีพียู MHz : 2001.000

และมันก็นิ่งในระดับความเร็วนี้ ฉันสามารถตรวจสอบได้โดยทำดังนี้

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
2001000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq 
2001000

ฉันกำลังพยายามรันด้วยความถี่คงที่สำหรับโปรแกรมแบบเรียลไทม์ที่นับรอบสัญญาณนาฬิกาของ CPU เพื่อจับเวลา ฉันรวบรวมเคอร์เนลที่กำหนดเอง (5.10.83-rt58) เพื่อรองรับชิ้นส่วนของฮาร์ดแวร์ที่ไม่รองรับในเคอร์เนล CentOS เริ่มต้น (3.10.0) การปรับขนาด CPU มักจะทำให้ความถี่สัญญาณนาฬิกากระโดดไปมา แต่ฉันพบว่าฉันสามารถรับความถี่ที่คงที่ได้โดยการตั้งค่าทั้งหมดใน /sys/devices/system/cpu/cpu*/cpuidle/state*/disable ถึง 1. เมื่อฉันตรวจสอบความถี่:

$ grep -i mhz /proc/cpuinfo 
ซีพียู MHz : 1995.106
ซีพียู MHz : 1995.106

มันไม่ได้อยู่ที่ 2001MHz เท่าที่เห็นในเคอร์เนล 3.10.0 คำสั่งต่อไปนี้ตรวจสอบสิ่งนี้:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
2538106

แต่ผลลัพธ์ของ:

$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
2001000

แตกต่างกัน คำถามของฉันคือไม่มีใครรู้ว่าเหตุใด CPU ของฉันจึงไม่ทำงานที่ความถี่สูงสุด (2001MHz) แต่น้อยกว่า ~6MHz มีการเปลี่ยนแปลงอย่างมากในการปรับขนาดซีพียูระหว่างเคอร์เนล 3.10 และ 5.10 หรือไม่

Paul Gear avatar
cn flag
คำถามนี้ควรถามใน [Super User](https://superuser.com/)
Score:1
ธง cn

ฉันพยายามรันด้วยความถี่คงที่สำหรับโปรแกรมเรียลไทม์ ที่นับรอบสัญญาณนาฬิกาของ CPU สำหรับกำหนดเวลา

วิธีการนี้เป็นปัญหาเนื่องจาก ซีพียูปรับขนาดประสิทธิภาพที่ทันสมัย จะไม่ทำงานที่ความถี่เดียว จำนวนรอบที่แน่นอนขึ้นอยู่กับสภาวะความร้อน บางทีซ็อกเก็ตของคุณอาจมีข้อบกพร่องเล็กน้อย และเคอร์เนลที่คุณกำหนดเองอาจมีความแตกต่างจาก Red Hat ตามอำเภอใจ ดังนั้นจึงเป็นไปได้ที่เคอร์เนล (หรือไมโครโค้ด) จะกระตุ้น CPU ด้วยวิธีต่างๆ

ใช้ API ตัวจับเวลาที่มีให้ ลีนุกซ์เรียลไทม์สรุป แอปพลิเคชันวงจรพื้นฐาน. สังเกตการใช้ clock_nanosleep() กับ CLOCK_MONOTONIC

การอ้างอิงโปรแกรมเวลาของ ESR เป็นประวัติที่ดีว่าเหตุใดจึงมีฟังก์ชั่นเวลามากมาย


หากต้องการปรับแต่ง CPU Governor และการปรับแต่งอื่นๆ ด้วยเหตุผลด้านความหน่วงและพลังงาน โปรดดูที่ tuned ตัวอย่างเช่น โปรไฟล์ประสิทธิภาพเวลาแฝง

Mitch avatar
sa flag
ขอบคุณสำหรับคำตอบ ลึกซึ้งมาก แต่ "ซีพียูปรับขนาดประสิทธิภาพสมัยใหม่จะไม่ทำงานที่ความถี่เดียว" ไม่เป็นความจริง ฉันสามารถให้ CPU ทำงานที่ 2001MHz คงที่โดยใช้เคอร์เนล 3.10 ฉันมีเครื่องอื่นที่ใช้ CentOS7 (Intel Core I5 ​​CPU) และฉันสามารถรับเคอร์เนล 3.10 เพื่อเรียกใช้ CPU ที่ความถี่คงที่ ฉันรู้สึกว่าอาจมีการตั้งค่าสถานะเคอร์เนลหรือบางอย่างสำหรับสิ่งนี้ที่ฉันไม่รู้เนื่องจากฉันไม่ใช่ผู้เชี่ยวชาญเคอร์เนล

โพสต์คำตอบ

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