ทุกคนควรเข้าใจลักษณะความร้อนของคอมพิวเตอร์ และเตรียมการป้องกันที่เหมาะสม บ่อยครั้งที่ผู้ใช้ไม่ทราบว่าอุณหภูมิของแพ็คเกจตัวประมวลผลสามารถเพิ่มขึ้นได้เร็วมากเพียงใดเมื่อโหลดฟังก์ชันขั้นตอน ตัวอย่างจากเซิร์ฟเวอร์ทดสอบ 20.04 ของฉัน:
doug@s19:~$ sudo turbostat --เงียบ --สรุป --แสดง PkgWatt, PkgTmp --ช่วง 0.1
PkgTmp Pkgวัตต์
33 1.88
33 1.69
33 1.56
33 1.74
49 24.99 800 องศาต่อวินาที
57 133.28 80 องศาต่อวินาที
61 133.66 40 องศาต่อวินาที
61 132.58 0 องศาต่อวินาที
63 133.57
64 134.12
โหลดถูกนำไปใช้ประมาณ 4 ใน 5 ของเวลาตัวอย่าง (25 / (133.5 - 1.7) ~= 20% หรือ 4/5) และอุณหภูมิก็เพิ่มขึ้น 16 องศาหรือ 800 องศาต่อวินาที ภาระที่นี่คือการทดสอบการทรมานของ Prime95 ซึ่งเป็นการทดสอบย่อยความร้อนสูงสุด คอมพิวเตอร์ตัวอย่างระบายความร้อนด้วยน้ำโดยเปิดปั๊มน้ำที่อัตราสูงสุดเสมอ โปรเซสเซอร์ i5-10600K.
สำหรับเมนบอร์ด ASUS โปรดทราบว่าเซ็นเซอร์พัดลม CPU เป็นเทอร์มิสเตอร์ภายนอกซึ่งจะทำให้อุณหภูมิของแพ็คเกจโปรเซสเซอร์ล่าช้าทั้งในด้านเวลาและมูลค่า บนเมนบอร์ด ASUS ของฉัน ภายใต้ภาระหนัก เซ็นเซอร์พัดลม CPU จะหน่วงอุณหภูมิโปรเซสเซอร์จริง 12 องศา
ในท้ายที่สุด เป็นไปได้ที่อุณหภูมิแพ็คเกจโปรเซสเซอร์จะถึงขีดจำกัดการปิดระบบอย่างรวดเร็วจนโปรแกรมตรวจสอบหรือดีมอนต่างๆ ไม่ทันสังเกตด้วยซ้ำ บางครั้งการป้องกันความร้อนจำเป็นต้องตอบสนองเร็วกว่านี้เพื่อให้มีเวลามีผลก่อนที่อุณหภูมิที่สูงเกินไปจะทำให้เกิดการปิดเครื่อง
วิธีที่ 1: Thermald
<?xml version="1.0"?>
<!--
use "man thermal-conf.xml" for details
-->
<!-- BEGIN -->
<ThermalConfiguration>
<Platform>
<Name>Overide CPU default passive</Name>
<ProductName>*</ProductName>
<Preference>QUIET</Preference>
<ThermalZones>
<ThermalZone>
<Type>cpu</Type>
<TripPoints>
<TripPoint>
<Temperature>41000</Temperature>
<type>passive</type>
</TripPoint>
</TripPoints>
</ThermalZone>
</ThermalZones>
</Platform>
</ThermalConfiguration>
<!-- END -->
หมายเหตุ: ฉันใช้จุดตัดที่ต่ำอย่างเหลือเชื่อที่ 41 องศา เนื่องจากระบบของฉันระบายความร้อนด้วยน้ำและฉันไม่สามารถไปถึงอุณหภูมิตัวอย่างที่ต้องการได้
doug@s19:~$ sudo systemctl เริ่มการระบายความร้อน
doug@s19:~$ sudo systemctl สถานะ Thermald
â thermald.service - บริการภูตความร้อน
โหลดแล้ว: โหลดแล้ว (/lib/systemd/system/thermald.service; ปิดใช้งาน; ค่าที่ตั้งไว้ล่วงหน้าของผู้ขาย: เปิดใช้งาน)
ใช้งานอยู่: ใช้งานอยู่ (ทำงาน) ตั้งแต่ ศ. 2021-11-05 07:41:45 PDT; 17s ที่ผ่านมา
PID หลัก: 3461 (ความร้อน)
งาน: 2 (จำกัด: 38214)
หน่วยความจำ: 2.2M
CGroup: /system.slice/thermald.service
ââ3461 /usr/sbin/thermald --systemd --dbus-enable --adaptive
05 พ.ย. 07:41:45 น. s19 systemd[1]: กำลังเริ่มบริการ Thermal Daemon...
05 พ.ย. 07:41:45 s19 systemd[1]: เริ่มบริการ Thermal Daemon
05 พ.ย. 07:41:45 น. s19 thermald[3461]: 22 ระดับ CPUID; ครอบครัว:รุ่น:ก้าว 0x6:a5:5 (6:165:5)
05 พ.ย. 07:41:45 น. s19 thermald[3461]: 22 ระดับ CPUID; ครอบครัว:รุ่น:ก้าว 0x6:a5:5 (6:165:5)
05 พ.ย. 07:41:45 น. s19 thermald[3461]: เปิดใช้งานโหมดการสำรวจ: 4
05 พ.ย. 07:41:45 น. s19 thermald[3461]: เซ็นเซอร์ id 5 : ไม่มี sysfs อุณหภูมิสำหรับการอ่านอุณหภูมิดิบ
05 พ.ย. 07:41:45 น. s19 thermald[3461]: เซ็นเซอร์ id 5 : ไม่มี sysfs อุณหภูมิสำหรับการอ่านอุณหภูมิดิบ
05 พ.ย. 07:41:45 น. s19 thermald[3461]: เซ็นเซอร์ id 5 : ไม่มี sysfs อุณหภูมิสำหรับการอ่านอุณหภูมิดิบ
05 พ.ย. 07:41:45 s19 thermald[3461]: โซน XML: ประเภทเซ็นเซอร์ไม่ถูกต้อง []
แม้ว่าสถานะของ Thermald จะแสดงอาการบ่นบ้าง แต่ก็ใช้งานได้จริงแม้ว่าจะตอบสนองช้าเล็กน้อย:
doug@s19:~$ sudo turbostat --เงียบ --สรุป --แสดง PkgWatt, PkgTmp --ช่วง 1
PkgTmp Pkgวัตต์
33 1.44
33 1.34
33 1.33
58 63.26
61 114.43
61 114.68
48 86.59
47 55.48
47 55.53
41 42.77
43 33.43
41 34.30 น
41 28.04 น
43 33.63
40 34.45
44 33.57
41 34.40 น
44 33.85
34 14.50 น
34 1.33
34 1.33
ปรับจุดตัดตามความจำเป็นเพื่อให้ได้ประโยชน์สูงสุดจากระบบของคุณ ในขณะที่ยังคงป้องกันไม่ให้จุดสูงเกินที่กำหนดทำให้เกิดการปิดระบบ การมี trip point ต่ำเกินไปอาจลดประสิทธิภาพของระบบให้อยู่ในระดับที่ไม่ต้องการ
วิธีที่ 2: การชดเชย TCC
ขั้นแรก ค้นหาว่าอุปกรณ์ระบายความร้อนใด:
doug@s19:~$ grep /sys/devices/virtual/thermal/cooling_device*/type
/sys/devices/virtual/thermal/cooling_device0/type:พัดลม
/sys/devices/virtual/thermal/cooling_device10/type:โปรเซสเซอร์
/sys/devices/virtual/thermal/cooling_device11/type:โปรเซสเซอร์
/sys/devices/virtual/thermal/cooling_device12/type:โปรเซสเซอร์
/sys/devices/virtual/thermal/cooling_device13/type:โปรเซสเซอร์
/sys/devices/virtual/thermal/cooling_device14/type:โปรเซสเซอร์
/sys/devices/virtual/thermal/cooling_device15/type:โปรเซสเซอร์
/sys/devices/virtual/thermal/cooling_device16/type:โปรเซสเซอร์
/sys/devices/virtual/thermal/cooling_device17/type:intel_powerclamp
/sys/devices/virtual/thermal/cooling_device18/type:TCC Offset
/sys/devices/virtual/thermal/cooling_device1/type:พัดลม
/sys/devices/virtual/thermal/cooling_device2/type:พัดลม
/sys/devices/virtual/thermal/cooling_device3/type:พัดลม
/sys/devices/virtual/thermal/cooling_device4/type:พัดลม
/sys/devices/virtual/thermal/cooling_device5/type:โปรเซสเซอร์
/sys/devices/virtual/thermal/cooling_device6/type:โปรเซสเซอร์
/sys/devices/virtual/thermal/cooling_device7/type:โปรเซสเซอร์
/sys/devices/virtual/thermal/cooling_device8/type:โปรเซสเซอร์
/sys/devices/virtual/thermal/cooling_device9/type:โปรเซสเซอร์
เป็นอุปกรณ์ 18 ตั้งค่า offset แล้วตรวจสอบผ่าน turbostat โดยไม่มีตัวเลือก --quiet:
doug@s19:~$ เสียงสะท้อน 59 | sudo ที /sys/devices/virtual/thermal/cooling_device18/cur_state
59
doug@s19:~$ sudo /home/doug/temp-k-git/linux/tools/power/x86/turbostat/turbostat --Summary --show Bzy_MHz,PkgWatt,PkgTmp --interval 0.1
turbostat เวอร์ชัน 21.05.04 - Len Brown <[email protected]>
CPUID(0): ระดับ CPUID ของแท้ของ Intel 0x16
CPUID(1): family:model:stepping 0x6:a5:5 (6:165:5) ไมโครโค้ด 0xec
...
cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x3b641422 (41 C) (ค่าเริ่มต้น 100 - ออฟเซ็ต 59)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x883f0800 (37 C)
...
Bzy_MHz PkgTmp Pkg วัตต์
800 33 1.35
800 33 1.34
800 34 1.40
4187 49 86.23
4100 52 91.72
4100 53 91.29
...
สังเกตว่าการควบคุมปริมาณจะเกิดขึ้นแทบจะทันที 4.8 GHz จะเป็นความถี่ของ CPU ที่ไม่ได้ควบคุม โปรดทราบว่าขีดจำกัดการควบคุมสำหรับโปรเซสเซอร์ของฉัน (ไม่ใช่โปรเซสเซอร์ทั้งหมด) คือความถี่สัญญาณนาฬิกาสูงสุดที่ไม่ใช่เทอร์โบที่ 4.1 GHz ดังนั้นจึงไม่สามารถเข้าถึงขีดจำกัดต่ำสุดที่น่าขันที่ 41 องศา