मैं बिना 3 पार्टी सॉफ्टवेयर के तापमान कैसे पता करूं?


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


उबंटू का कौन सा संस्करण चल रहा है?
वेजेंड्रिया

1
यह आपके प्रोसेसर पर निर्भर करता है। कई हालिया इंटेल प्रोसेसर के लिए टर्बोटैट प्रोग्राम MSRs (मशीन स्पेसिफिक रजिस्टर्स) को पढ़ेगा और पैकेज और कोर तापमान को प्रदर्शित करेगा। अपने प्रश्न को संपादित करें और अपने प्रोसेसर को एक मॉडल बनाएं। यदि यह एक ऐसा है जिसे मैं जानता हूं, तो मैं इसका जवाब दूंगा कि इसे मैन्युअल रूप से कैसे किया जाए।
डग स्माइथ्स

जोड़ा अतिरिक्त RAM मैं एक समस्या है .., RAM प्रति सेकंड 1333 मेगाट्रांसफर है, और सीपीयू अधिकतम मेगाहर्ट्ज है:

11
तृतीय-पक्ष से आपका क्या अभिप्राय है? आपको लगता है कि उबंटू का कितना हिस्सा प्रथम-पक्षीय सॉफ़्टवेयर है?
मूरू

1
उपयोगकर्ता द्वारा उपयोग के लिए वितरण को स्वीकार करने से पहले उबंटू कितने दलों का उपयोग करता है, मुझे बिल्कुल यकीन नहीं है। मुझे एक सामान्य पहलू में पता है कि उबंटू एक लिनक्स ऑपरेटिंग सिस्टम है जिसे मैंने पहली पार्टी के रूप में संदर्भित किया है, मेरे द्वारा और फिर हाथ पर सवाल, मेरे संदिग्ध कार्यक्रम को 3 पार्टी छोड़कर एक दीवार के 6 वें संस्करण के रूप में कहा गया है या ubtunu के प्रायोजकों और स्वैच्छिक प्रोग्रामर सॉफ्टवेयर्स के बाद, तो मैं बिल्कुल नहीं जानता।

जवाबों:


12

ऐसा लगता है कि आप क्या चाहते हैं /sys/class/hwmonऔर /sys/class/thermal

ये दोनों आपके इच्छित डेटा तक सरल शेल आधारित पहुँच प्रदान करते हैं (hwmon निर्देशिका में अन्य सेंसर प्रकार भी शामिल होंगे)। आपके सिस्टम में प्रत्येक सेंसर इंटरफ़ेस के लिए प्रत्येक की एक निर्देशिका है (जिसमें एक से अधिक सेंसर हो सकते हैं)।

तीन अन्य बातों पर ध्यान दें:

  • जब तक आपके पास वास्तव में खराब व्यवस्था नहीं होती है, तब तक sensorsकमांड को एक बार चलाने के बाद भी दूसरा कोई प्रभाव नहीं होना चाहिए। वास्तव में, नियमित रूप से उपर्युक्त निर्देशिकाओं में फ़ाइलों को पढ़ने से प्रभाव अधिक हो सकता है।
  • रेखांकन यहाँ आपका मित्र है। मेरा सुझाव है कि नेटडाटा या कलेक्ट रनिंग जैसा कुछ हो ताकि आपके पास देखने के लिए रियलटाइम (या रियलटाइम के पास) डेटा हो।
  • अपने वोल्टेज की भी जाँच करें। बिजली की आपूर्ति होने के कारण आपका वर्णन क्या हो सकता है जो आपके सिस्टम की बिजली की आवश्यकताओं को पूरा नहीं कर सकता है। जब सिस्टम उच्च भार के तहत होता है, तो यह महत्वपूर्ण रूप से उतार-चढ़ाव द्वारा इंगित किया जाएगा।

यह स्वीकृत उत्तर होना चाहिए, क्योंकि यह पूछे गए वास्तविक प्रश्न से संबंधित है: "मैं तापमान [...] मैन्युअल रूप से कैसे पा सकता हूं [...]? मुझे यकीन नहीं है कि वे कहाँ संग्रहीत हैं।" तब कुछ /proc/cpuinfoएएमडी प्रोसेसर दिखाते हैं। यह सुनिश्चित नहीं है कि ओपी ने फिर एक इंटेल-विशिष्ट उत्तर को स्वीकार कर लिया है जिसे स्थापित करने के लिए एक और उपकरण की आवश्यकता होती है।
आरोन एफ

@AaronF: मैं असहमत नहीं हूं। मैंने एक इंटेल विशिष्ट जवाब लिखा क्योंकि ओपी ने मुझसे पूछा। किसी अन्य उपकरण को स्थापित करने की आवश्यकता नहीं है? जिस कारण मैंने पैकेज तापमान को सीधे MSRs के माध्यम से पढ़ा है, उसके बजाय यह /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_inputहै कि मेरा अधिकांश काम बेहद बेकार प्रणालियों के साथ है, और बाद की विधि में बहुत अधिक ओवरहेड है, जिसके परिणामस्वरूप लगातार 4 से 5 डिग्री अधिक परिणाम प्राप्त होता है। बेशक, एक बहुत भरी हुई प्रणाली के लिए कोई अंतर नहीं है।
डग स्माइथिज

1
@DougSmythies मुझे लगा कि आपका उत्तर बहुत अच्छा और पूर्ण था, यही कारण है कि मैंने इसे नकारा नहीं और न ही कोई नकारात्मक टिप्पणी छोड़ दी :-) rdmsr कार्यक्रम msr-tools का एक हिस्सा है, जो किसी इंटेल पर डिफ़ॉल्ट रूप से स्थापित नहीं होता है मशीन (उबंटू चल रहा है, शायद अन्य डिस्ट्रोफ डिफ़ॉल्ट रूप से स्थापित होते हैं यदि वे इंटेल का पता लगाते हैं?)
एरोन एफ

@AaronF: मैं भूल गया कि msr-tools एक अतिरिक्त अतिरिक्त पैकेज है। तो मेरी विधि को भी और अतिरिक्त उपकरण की आवश्यकता है, जो ओपी नहीं चाहता था।
डग स्माइथिज

2
नमस्कार @ डगस्मिथीज़ और आरोन एफ, मैंने मूल रूप से डगस्मिथीज़ को प्राथमिक उत्तर के रूप में चुना था क्योंकि वह सहायता प्रदान करने वाले पहले व्यक्ति थे और उनका उत्तर बेहद स्पष्ट था कि कैसे तापमान को मैन्युअल रूप से खोजने के साथ-साथ मैन्युअल समाधान का उपयोग करना आसान है। mdmsr समर्थन के साथ कार्यक्रम, यह वास्तव में एक कठिन निर्णय था क्योंकि दोनों उत्तर बहुत जानकारीपूर्ण थे, लेकिन चूंकि आप दोनों सहमत थे कि यह उत्तर सबसे अच्छा था। मैंने हारून को प्राथमिक उत्तर दिया, आपके समर्थन के लिए धन्यवाद। हैप्पी शिकार

9

यह उत्तर मशीन इंटेलिजेंट रजिस्टरों (MSR) तक सीधे पहुंच के माध्यम से कुछ इंटेल प्रोसेसर के लिए मैन्युअल रूप से प्रोसेसर के तापमान की निगरानी करने का एक तरीका है।

ध्यान देने वाली पहली बात यह है कि इस मामले में, एमएसआर से बाहर जो पढ़ा जाता है, वह Tcc, सीमा के तापमान के सापेक्ष होता है, इसलिए वास्तविक तापमान को निर्धारित करने के लिए एक अतिरिक्त गणना की आवश्यकता होती है।

Intel® 64 और IA-32 आर्किटेक्चर सॉफ़्टवेयर डेवलपर के मैनुअल का संदर्भ लें , या आपके मामले में AMD समतुल्य है।

मेरे मामले में, मैं 0x1B1, उर्फ ​​IA32_PACKAGE_THERM_STATUS पर MSR के 22-16 बिट्स चाहता हूं। मेरे पुराने i7-2600K के लिए Tcc 98 डिग्री है।

यहां तापमान (और सीपीयू आवृत्ति) को मैन्युअल रूप से मॉनिटर करने के लिए एक सरल स्क्रिप्ट है:

#! /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

और यहाँ कुछ नमूना आउटपुट है, जहां मैं थोड़ी देर के बाद कुछ सीपीयू लोड जोड़ता है (अस्थायी 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

@ डग: एमएसआर का उपयोग करने के लिए शानदार जवाब! हालाँकि, सही msr 0x19c रजिस्टर नहीं है ? और तापमान टीईएमपी = टीसीसी है - [0x19c बिट्स 22:16]। इसलिए पहले टीसीसी को पढ़ना आवश्यक है।
abu_bua

@abu_bua: मुझे नहीं पता कि 0x19c काम करता है या नहीं, लेकिन मैं जो उपयोग कर रहा हूं वह नहीं है। और हाँ, मैंने बेहतर समाधान के बजाय अपने प्रोसेसर के लिए टीसीसी को हार्डकोड किया जो कि प्रोसेसर से इसे पढ़ना होगा।
डग स्माइथिज

1
क्या आपने स्थापित किया sudo apt install msr-tools?
abu_bua

1
msr-tools पैकेज है। यह हो सकता है man rdmsrऔर man wrmsrपैकेज के अलग-अलग आदेशों में से दो के लिए।
डग स्माइथिज

6

मैं नहीं जानता कि आप वास्तव में क्या चाहते हैं। एलएम-सेंसर प्रोग्राम (और इसलिए sensorsकमांड) लिबासेंसर लाइब्रेरी का उपयोग करता है ; यदि आप Ubuntu 18.04 का उपयोग करते हैं तो यह libsensors4 , संस्करण 3.4.0-4 है। यह वही पुस्तकालय है जो तापमान को पढ़ता है जैसा कि sysनिर्देशिका में देखा जा सकता है ।

इसे योग करने के लिए, सेंसर एक अच्छा विकल्प है। तापमान को लगातार देखने के लिए

watch -n 1 sensors

यदि आप एक प्रोग्राम लिखना चाहते हैं, तो आपको libsensors पर man libsensorsएक नज़र रखना होगा या एक नज़र रखना होगा /usr/share/doc/। आपको शामिल करना होगा #include <sensors/sensors.h>। यह /etc/sensors3.conf और / या /etc/sensors.confsensors.conf फ़ाइलों का उपयोग करेगा । आगे (उपयोगकर्ता) कॉन्फ़िगरेशन में पाया जा सकता है , यदि उपयोग किया जाता है।/etc/sensors.d/

अगर आपको लगता है कि आप कुछ सेंसर को याद कर रहे हैं /sys/class/thermalया लिंक की गई /sys/devices/virtual/thermalडायरेक्टरी पर एक नज़र डालते हैं ।

सभी तापीय क्षेत्रों के तापमान का उपयोग करने के लिए

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

77000
66000
67000

तापमान 77.0, 66.0, 67,0 ° C से ऊपर के मामले में miliCelcius (mC) में मापा जाता है।

लगातार देखने के लिए उपयोग करें

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

इस निर्देशिका में आप अपने शीतलन (प्रशंसक) उपकरणों के बारे में जानकारी पा सकते हैं, और पीआईडी ​​नियामकों को कैसे प्रोग्राम किया जा सकता है।

मैं यह भी बताना चाहूंगा कि कुछ ओवरटैंस प्रोटेक्शन को बहुत हार्डवेयर आधारित (यह एक अच्छा विचार है) कोडित किया गया है, जहां डेटा को आपके बायोस में रखा गया है।


मुझे पता है कि कार्यक्रम हैं, लेकिन मैं वें etemps को मैन्युअल रूप से खोजने का एक तरीका ढूंढ रहा था

1
आप मैन्युअल रूप से क्या मतलब है? तापमान को प्रिंट करने वाली सभी चीजें प्रोग्राम हैं।
abu_bua

मेरे पास एक थर्मल_ज़ोन नहीं है, मेरे पास सभी कूलिंग_देवाइस0 1 और 2 हैं, लेकिन वे एक फ़ाइल अस्थायी नहीं रखते हैं, केवल cur_state डिवाइस max_state पावर सबसिस्टम प्रकार uevent


वास्तव में क्या हैं thermal_zones? मेरा 4-कोर इंटेल सीपीयू लगता है कि एक एकल thermal_zone( sensorsहालांकि, सही ढंग से सभी 4 कोर तापमानों को सूचीबद्ध करता है)।
ग्वेनेथ लेलेवेन 10

5

डिफ़ॉल्ट उबंटू रिपॉजिटरी से Psensor ( Psensor ) स्थापित करें और जब भी तापमान अधिकतम निर्धारित उपयोगकर्ता के ऊपर जाता है तब Psensor को स्वचालित रूप से एक अलर्ट ध्वनि चलाने के लिए कॉन्फ़िगर करता है। इसका उद्देश्य यह है कि आपके सिस्टम पर अतिरिक्त एप्लिकेशन को जोड़े बिना आपके सिस्टम के बंद होने से पहले आपको एक चेतावनी ध्वनि सुनाई दे ।

Psensor डेस्कटॉप पर अपने आप को घड़ी के बगल में डेस्कटॉप के ऊपरी दाएं कोने में अधिसूचना क्षेत्र में एक छोटे थर्मामीटर आइकन के रूप में प्रदर्शित करता है। हार्डवेयर तापमान प्रदर्शित करने के लिए आप किसी भी समय थर्मामीटर आइकन पर राइट-क्लिक कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.