ฉันจะค้นหาอุณหภูมิที่ไม่มีซอฟต์แวร์ของบุคคลที่สามได้อย่างไร


12

ฉันกำลังทำงานsensors-detectในระบบของฉันด้วยlm-sensorsเพราะระบบของฉันปิดต่อเมื่อฉันดูวิดีโอ youtube

ดังนั้นฉันสงสัยว่าฉันสามารถหาอุณหภูมิของพัดลมและซีพียูด้วยตนเองโดยไม่ต้องมีซอฟแวร์ของบุคคลที่ 3 เช่นlm-sensors? ฉันไม่แน่ใจว่าเก็บไว้ที่ไหน

processor   : 0
vendor_id   : AuthenticAMD
cpu family  : 16
model       : 6
model name  : AMD Athlon(tm) II X2 240e Processor
power management: ts ttp tm stc 100mhzsteps hwpstate

x86_64


คุณใช้ Ubuntu รุ่นใด
wjandrea

1
ขึ้นอยู่กับโปรเซสเซอร์ของคุณ สำหรับโปรเซสเซอร์ Intel ล่าสุดหลายตัวโปรแกรมเทอร์โมสแตทจะอ่าน MSRs (การลงทะเบียนเครื่องเฉพาะ) และแสดงแพ็คเกจและอุณหภูมิแกนกลาง แก้ไขคำถามของคุณและเพิ่มตัวประมวลผลของคุณสร้างแบบจำลอง หากเป็นสิ่งที่ฉันรู้ฉันจะตอบด้วยวิธีการทำด้วยตนเอง
Doug Smythies

แรมเพิ่มเติมที่ฉันเพิ่มมีปัญหาหรือไม่ .. RAM คือ 1,333 เมกะบิตต่อวินาทีและซีพียูเป็น MHz สูงสุด: 2800.0000

11
บุคคลที่สามหมายถึงอะไร อูบุนตูคุณคิดว่าซอฟต์แวร์ของบุคคลที่หนึ่งมากแค่ไหน?
muru

1
ฉันไม่แน่ใจว่าจะมีกี่ฝ่ายที่ Ubuntu ใช้ก่อนที่ผู้ใช้จะขัดขวางการแจกจ่ายเพื่อใช้งาน ฉันรู้ในแง่ทั่วไปว่า Ubuntu เป็นระบบปฏิบัติการ Linux ที่ฉันเรียกว่าเป็นฝ่ายแรกตามด้วยฉันแล้วคำถามในมือออกจากโปรแกรมที่น่าสงสัยของฉันบุคคลที่สามมากกว่าที่จะพูดออกมาเป็นบุคคลที่ 6 หรือหลังจากที่สปอนเซอร์ของ ubtunu และหรือโปรแกรมเมอร์ซอฟต์แวร์ชั่วคราวดังนั้นฉันไม่รู้แน่ชัด

คำตอบ:


12

มันเสียงเหมือนสิ่งที่คุณต้องการเป็นและ/sys/class/hwmon/sys/class/thermal

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

สามสิ่งอื่น ๆ ที่ควรทราบว่า:

  • ยกเว้นว่าคุณมีระบบที่ไม่ดีจริงๆให้รันsensorsคำสั่งแม้ครั้งที่สองจะไม่มีผลกระทบใด ๆ อันที่จริงแล้วการอ่านไฟล์ในไดเรกทอรีดังกล่าวข้างต้นอย่างสม่ำเสมออาจมีผลกระทบมากกว่า
  • กราฟเป็นเพื่อนของคุณที่นี่ ฉันขอแนะนำให้รับบางสิ่งเช่น netdata หรือ collectd ทำงานเพื่อให้คุณมีข้อมูลเรียลไทม์ (หรือใกล้เคียงกับเรียลไทม์) เพื่อดู
  • ตรวจสอบแรงดันไฟฟ้าของคุณด้วย สิ่งที่คุณอธิบายอาจเป็นเพราะมีแหล่งจ่ายไฟที่ไม่สามารถตอบสนองความต้องการพลังงานของระบบของคุณ สิ่งนี้จะถูกระบุโดยแรงดันไฟฟ้าลดลงอย่างมีนัยสำคัญเมื่อระบบอยู่ภายใต้การโหลดสูง

นี่ควรเป็นคำตอบที่ยอมรับได้เพราะมันเกี่ยวข้องกับคำถามจริงที่ถามว่า: "ฉันจะหาอุณหภูมิ [... ] ด้วยตนเอง [... ] ได้อย่างไร? ฉันแค่ไม่แน่ใจว่าพวกเขาเก็บไว้ที่ไหน" จากนั้นบางส่วนก็/proc/cpuinfoแสดงโปรเซสเซอร์ AMD ไม่แน่ใจว่าทำไม OP จึงยอมรับคำตอบเฉพาะของ Intel ซึ่งต้องการเครื่องมืออื่นที่จะติดตั้ง
Aaron F

@AaronF: ฉันไม่เห็นด้วย ฉันเขียนคำตอบเฉพาะของ Intel เพราะ OP ขอให้ฉันทำ ไม่จำเป็นต้องติดตั้งเครื่องมืออื่น เหตุผลที่ฉันอ่านอุณหภูมิแพคเกจโดยตรงผ่าน MSR แทนที่จะ/sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_inputเป็นเพราะงานส่วนใหญ่ของฉันคือระบบที่ไม่ได้ใช้งานเป็นอย่างมากและวิธีการหลังมีค่าใช้จ่ายมากขึ้นทำให้ได้ผลลัพธ์ที่สูงขึ้น 4 ถึง 5 องศาอย่างสม่ำเสมอ แน่นอนไม่มีความแตกต่างสำหรับระบบที่โหลดหนัก
Doug Smythies

1
@DougSmythies ฉันคิดว่าคำตอบของคุณดีมากและสมบูรณ์ซึ่งเป็นสาเหตุที่ฉันไม่ได้ลงคะแนนหรือแสดงความคิดเห็นเชิงลบด้านล่าง :-) โปรแกรม rdmsr เป็นส่วนหนึ่งของ msr-tools ซึ่งไม่ได้ติดตั้งไว้ใน Intel เครื่อง (ใช้งาน Ubuntu, อาจติดตั้ง distros อื่น ๆ ตามค่าเริ่มต้นหากตรวจพบ Intel)
Aaron F

@AaronF: ฉันลืมว่า msr-tools เป็นแพ็คเกจเพิ่มเติมที่จำเป็น ดังนั้นวิธีการของฉันยังต้องการและเครื่องมือเพิ่มเติมซึ่งไม่ใช่สิ่งที่ OP ต้องการ
Doug Smythies

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

9

คำตอบนี้เป็นวิธีหนึ่งในการตรวจสอบอุณหภูมิโปรเซสเซอร์ด้วยตนเองสำหรับโปรเซสเซอร์ Intel บางรุ่นผ่านการเข้าถึง Machine Specific Registers (MSR) โดยตรง

สิ่งแรกที่ควรทราบคือในกรณีนี้สิ่งที่อ่านจาก MSR นั้นสัมพันธ์กับ Tcc อุณหภูมิ จำกัด ดังนั้นจำเป็นต้องมีการคำนวณเพิ่มเติมเพื่อกำหนดอุณหภูมิที่แท้จริง

อ้างถึงคู่มือผู้พัฒนาซอฟท์แวร์สถาปัตยกรรมIntel® 64 และ IA-32หรือในกรณีของคุณเทียบเท่ากับ AMD

ในกรณีของฉันฉันต้องการบิต 22-16 ของ MSR ที่ 0x1B1 หรือที่เรียกว่า IA32_PACKAGE_THERM_STATUS Tcc สำหรับ i7-2600K ที่เก่ากว่าของฉันคือ 98 องศา

นี่เป็นสคริปต์ง่าย ๆ ในการตรวจสอบอุณหภูมิ (และความถี่ของ CPU) ด้วยตนเอง:

#! /bin/dash
#
# temp_mon3 Smythies 2016.10.05
#       a simplified version of temp_mon2,
#       for monitoring temp.
#       Note: it is on purpose that -a is not used.
#       Also CPU0 frequency (1 is good enough, when all
#       are loaded).
#
# temp_mon2 Smythies 2016.09.29
#       Monitor Package temperatures.
#       Use clock modulation to control temps.
#       i.e. simulate the second to last level
#       of defense.
#       Use simple primatives.
#       run as sudo
#       hardcoded for my tcc of 98 degrees.
#
echo ... begin package temperature monitoring ...

#
# In case I forgot (which I often do)

modprobe msr

#
# first let the drastic effect of the sudo command decay
# Done later in temp_mon3.

#
# some stuff

COMMAND="rdmsr --bitfield 22:16 -u 0x1B1"
COMMAND2="cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq"

#
# then get on with it

while [ 1 ];do
  sleep 4
  TEMP_RAW=$(eval $COMMAND)
  CPU0_FREQ=$(eval $COMMAND2)
  TEMP_ACT=$((98-TEMP_RAW))
  echo "$TEMP_ACT   $CPU0_FREQ"
done

และนี่คือเอาต์พุตตัวอย่างบางส่วนที่ฉันเพิ่มโหลด CPU บางอย่างหลังจากชั่วขณะหนึ่ง (อุณหภูมิลดลงจาก 31 เป็น 73 องศา):

$ sudo ./temp_mon3
[sudo] password for doug:
... begin package temperature monitoring ...
31   1605275
31   1605154
32   1605164
30   1605148
31   1605176
51   3511279
54   3511278
55   3511279
57   3511283
58   3511279
60   3511278
61   3511284
63   3511279
64   3511280
64   3511280
66   3511280
67   3511278
68   3511280
68   3511281
69   3511278
71   3511280
70   3511281
71   3511281
71   3511280
72   3511276
72   3511277
73   3511283
73   3511279
^C

ทำไมคุณใช้eval?
wjandrea

@Doug: คำตอบที่ดีในการใช้ msr! อย่างไรก็ตาม msr ที่ถูกต้องลงทะเบียน0x19cไม่ถูก? และอุณหภูมิคือ TEMP = TCC - [0x19c บิต 22:16] ดังนั้นจึงจำเป็นต้องอ่าน TCC ก่อน
abu_bua

@abu_bua: ฉันไม่รู้ว่า 0x19c ใช้งานได้หรือไม่ แต่สิ่งที่ฉันใช้อยู่นั้นทำ และใช่ฉันฮาร์ดโค้ด TCC สำหรับโปรเซสเซอร์ของฉันแทนที่จะเป็นโซลูชันที่ดีกว่าซึ่งจะอ่านจากโปรเซสเซอร์
Doug Smythies

1
คุณติดตั้งแล้วsudo apt install msr-toolsหรือยัง
abu_bua

1
เครื่องมือ msr เป็นแพ็คเกจ มันจะเป็นman rdmsrและman wrmsrสำหรับสองคำสั่งของแต่ละบุคคลภายในแพคเกจ
Doug Smythies

6

ฉันไม่รู้ว่าคุณต้องการอะไรจริงๆ โปรแกรม lm-sensor (และดังนั้นsensorsคำสั่ง) ใช้ประโยชน์จากไลบรารีlibsensor ในกรณีที่คุณใช้ Ubuntu 18.04 เป็นlibsensors4เวอร์ชัน 3.4.0-4 นี่คือไลบรารีเดียวกันซึ่งอ่านอุณหภูมิตามที่เห็นในsysไดเรกทอรี

สรุปแล้วเซ็นเซอร์เป็นตัวเลือกที่ดี เพื่อดูอุณหภูมิที่ใช้อย่างต่อเนื่อง

watch -n 1 sensors

หากคุณต้องการที่จะเขียนโปรแกรมที่คุณต้องดูที่ libsensors มีหรือจะดูในส่วนman libsensors คุณจะต้องรวมถึง/usr/share/doc/ #include <sensors/sensors.h>มันจะใช้sensors.confไฟล์/etc/sensors3.confและ / หรือ/etc/sensors.conf การกำหนดค่าเพิ่มเติม (ผู้ใช้) สามารถพบได้ใน/etc/sensors.d/ถ้าใช้

หากคุณคิดว่าคุณขาดเซ็นเซอร์บางตัวลองดูที่/sys/class/thermalหรือ/sys/devices/virtual/thermalไดเรกทอรีที่เชื่อมโยง

เพื่อให้ได้อุณหภูมิของเขตความร้อนทั้งหมดใช้

$ cat /sys/devices/virtual/thermal/thermal_zone?/temp

77000
66000
67000

อุณหภูมิวัดเป็น miliCelcius (mC) ในกรณีที่สูงกว่า 77.0, 66.0, 67,0 ° C

เพื่อรับชมการใช้งานอย่างต่อเนื่อง

watch -n 1 cat /sys/devices/virtual/thermal/thermal_zone?/temp

ในไดเรกทอรีนี้คุณสามารถค้นหาข้อมูลเกี่ยวกับอุปกรณ์ทำความเย็น (พัดลม) และวิธีการตั้งโปรแกรม PID

ฉันยังต้องการที่จะระบุว่าการป้องกันอุณหภูมิสูงเกินไปถูกเข้ารหัสตามฮาร์ดแวร์มาก (นี่เป็นความคิดที่ดี) ซึ่งเป็นข้อมูลที่วางไว้ในประวัติของคุณ


ฉันรู้ว่ามีโปรแกรม แต่ฉันกำลังมองหาวิธีการค้นหาด้วยตนเอง

1
คุณหมายถึงอะไรด้วยตนเอง? ทุกอย่างที่พิมพ์อุณหภูมิคือโปรแกรม
abu_bua

ฉันไม่มี thermal_zone ทั้งหมดที่ฉันมีคือ cooling_device0 1 และ 2 แต่พวกเขาไม่ได้เก็บไฟล์เทมเพลตอุปกรณ์ cur_state เฉพาะ max_state ระบบย่อยพลังงานประเภท uevent

cur และสถานะสูงสุดคือ 0 และ 10

อะไรกันแน่thermal_zones? ซีพียู Intel 4-core ของฉันดูเหมือนจะมีเพียงอันเดียวthermal_zone( sensorsอย่างไรก็ตามแสดงอุณหภูมิแกนกลางทั้ง 4 อย่างถูกต้อง)
Gwyneth Llewelyn

5

ติดตั้ง Psensor ( psensor ) จากคลังเก็บ Ubuntu เริ่มต้นและกำหนดค่า Psensor ให้เล่นเสียงเตือนโดยอัตโนมัติเมื่ออุณหภูมิสูงกว่าระดับสูงสุดที่ผู้ใช้กำหนด วัตถุประสงค์ของการทำเช่นนี้คือเพื่อให้คุณได้ยินเสียงเตือนก่อนที่ระบบของคุณจะปิดเครื่องโดยไม่ต้องเพิ่มโอเวอร์เฮดของแอปพลิเคชันเพิ่มเติมให้กับระบบของคุณ

Psensor แสดงตัวเองบนเดสก์ท็อปเป็นไอคอนเทอร์โมมิเตอร์เล็ก ๆ ในพื้นที่แจ้งเตือนที่มุมขวาบนของเดสก์ท็อปถัดจากนาฬิกา คุณสามารถคลิกขวาที่ไอคอนเทอร์โมมิเตอร์ได้ตลอดเวลาเพื่อแสดงอุณหภูมิของฮาร์ดแวร์

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