Jak znaleźć temperatury bez oprogramowania innych firm?

12

Korzystam sensors-detectz mojego systemu, lm-sensorsponieważ mój system wyłącza się, gdy oglądam filmy z YouTube

Zastanawiam się więc, w jaki sposób mogę ręcznie sprawdzić temperaturę wentylatora i procesora bez oprogramowania innej firmy, takiego jak lm-sensors? Po prostu nie jestem pewien, gdzie są przechowywane.

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

wjandrea
źródło
Jaką wersję Ubuntu używasz?
wjandrea
1
To zależy od twojego procesora. W przypadku wielu najnowszych procesorów Intela program turbostatyczny odczyta MSR (rejestry specyficzne dla maszyny) i wyświetli temperaturę paczki i rdzenia. Edytuj swoje pytanie i dodaj swój procesor do stworzenia modelu. Jeśli to wiem, odpowiem, jak to zrobić ręcznie.
Doug Smythies
czy dodatkowa pamięć RAM, którą dodałem, ma problem .., pamięć RAM wynosi 1333 megatransfery na sekundę, a procesor wynosi maks. MHz: 2800.0000
11
Co rozumiesz przez firmę zewnętrzną? Jak myślisz, ile Ubuntu to oprogramowanie własne?
muru
1
Nie jestem do końca pewien, z ilu stron korzysta Ubuntu, zanim użytkownik przejmie dystrybucję do użytku. Wiem w ogólnym aspekcie, że Ubuntu to system operacyjny Linux, o którym mówiłem, że to pierwsza strona, a następnie moje i następne pytanie, pozostawiając mój wątpliwy program trzeciej, zamiast wypowiadać się na pierwszy rzut oka. lub po sponsorach ubtunu i / lub ochotniczych programistach, więc nie wiem dokładnie.

Odpowiedzi:

12

Brzmi jak chcesz /sys/class/hwmoni /sys/class/thermal.

Oba zapewniają prosty dostęp do żądanych danych w oparciu o powłokę (katalog hwmon będzie również zawierał inne typy czujników). Każdy ma jeden katalog dla każdego interfejsu czujnika w systemie (który może mieć więcej niż jeden czujnik).

Warto jednak zwrócić uwagę na trzy inne rzeczy:

  • Chyba że masz naprawdę zły system, uruchomienie sensorspolecenia nawet raz na sekundę nie powinno mieć żadnego zauważalnego efektu. W rzeczywistości regularne czytanie plików w wyżej wymienionych katalogach może mieć większy wpływ.
  • Wykresy są tutaj twoim przyjacielem. Sugerowałbym uzyskanie czegoś takiego jak netdata lub kolekcjonowanie, abyś miał dane w czasie rzeczywistym (lub prawie w czasie rzeczywistym) do obejrzenia.
  • Sprawdź też swoje napięcia. To, co opisujesz, może również wynikać z posiadania zasilacza, który nie jest w stanie sprostać wymaganiom energetycznym twojego systemu. Wskazuje na to znaczny spadek napięcia, gdy system jest pod dużym obciążeniem.
Austin Hemmelgarn
źródło
Powinna to być zaakceptowana odpowiedź, ponieważ dotyczy rzeczywistego zadanego pytania: „jak ręcznie znaleźć temperatury [...] ręcznie [...]? Po prostu nie jestem pewien, gdzie są przechowywane”. Następnie niektóre /proc/cpuinfoprzedstawiają procesor AMD. Nie jestem pewien, dlaczego OP zaakceptował odpowiedź specyficzną dla Intela, która wymaga zainstalowania innego narzędzia.
Aaron F,
@AaronF: Nie zgadzam się. Napisałem odpowiedź specyficzną dla Intela, ponieważ OP mnie o to poprosiła. Żadne inne narzędzie nie musi być instalowane? Powodem, dla którego czytam temperatury pakietów bezpośrednio za pomocą MSR, a nie za pośrednictwem, /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_inputjest to, że większość mojej pracy jest z bardzo nieużywanymi systemami, a ta druga metoda ma o wiele więcej kosztów ogólnych, co daje spójny wynik 4 do 5 stopni wyższy. Oczywiście nie ma różnicy w przypadku mocno obciążonego systemu.
Doug Smythies,
1
@DougSmythies Myślałem, że twoja odpowiedź była bardzo dobra i kompletna, dlatego nie głosowałem ani nie pozostawiam pod nią negatywnego komentarza :-) Program rdmsr jest częścią msr-tools, która nie jest domyślnie instalowana na moim Intelie komputer (z systemem Ubuntu, być może inne dystrybucje instalują się domyślnie, jeśli wykryją Intel?)
Aaron F
@AaronF: Zapomniałem, że msr-tools to potrzebny dodatkowy pakiet. Więc moja metoda potrzebuje także dodatkowego narzędzia, które nie jest tym, czego chciał PO.
Doug Smythies,
2
Cześć @ DougSmythies i Aaron F. Pierwotnie wybrałem DougSmythies jako główną odpowiedź, ponieważ jako pierwszy udzielił pomocy, a jego odpowiedź była bardzo jasna, jak ręcznie szukać Temperatury, a także używać ręcznego rozwiązania w łatwym w użyciu program z obsługą mdmsr. To była trudna decyzja, ponieważ obie odpowiedzi były bardzo pouczające, ale skoro oboje zgodziliście się, że ta odpowiedź była najlepsza. Cofnąłem pierwotną odpowiedź do Aarona, dziękuję za wsparcie.
9

Ta odpowiedź dotyczy jednego ze sposobów ręcznego monitorowania temperatury procesora w przypadku niektórych procesorów Intel poprzez bezpośredni dostęp do rejestrów specyficznych dla maszyny (MSR).

Pierwszą rzeczą, na którą należy zwrócić uwagę, w tym przypadku, to, co jest odczytywane z MSR, odnosi się do Tcc, temperatury granicznej, więc wymagane są dodatkowe obliczenia w celu ustalenia rzeczywistej temperatury.

Zapoznaj się z Instrukcją obsługi oprogramowania Intel® 64 i IA-32 Architectures lub w twoim przypadku odpowiednikiem AMD.

W moim przypadku chcę bity 22-16 MSR w 0x1B1, czyli IA32_PACKAGE_THERM_STATUS. Tcc dla mojego starszego i7-2600K wynosi 98 stopni.

Oto prosty skrypt do ręcznego monitorowania temperatury (i częstotliwości procesora):

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

A oto kilka przykładowych danych wyjściowych, w których po pewnym czasie dodaję obciążenie procesora (temperatura wzrasta z 31 do 73 stopni):

$ 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
Doug Smythies
źródło
Dlaczego używacie eval?
wjandrea
@Doug: Świetna odpowiedź na użycie msr! Jednak czy właściwy rejestr msr 0x19c nie jest odpowiedni ? A temperatura wynosi TEMP = TCC - [0x19c bitów 22:16]. Dlatego najpierw należy przeczytać TCC.
abu_bua
@abu_bua: Nie wiem, czy 0x19c działa, czy nie, ale działa to, czego używam. I tak, na stałe zapisałem TCC dla mojego procesora, a nie lepsze rozwiązanie, które można odczytać z procesora.
Doug Smythies,
1
zainstalowałeś sudo apt install msr-tools?
abu_bua
1
msr-tools to pakiet. Byłoby man rdmsri man wrmsrdla dwóch pojedynczych poleceń w pakiecie.
Doug Smythies,
6

Nie wiem, czego naprawdę chcesz. Program lm-sensor (a zatem sensorspolecenie) korzysta z biblioteki libsensor ; w przypadku korzystania z Ubuntu 18.04 jest to libsensors4 , wersja 3.4.0-4. Jest to ta sama biblioteka, która odczytuje temperaturę widoczną w syskatalogu.

Podsumowując, czujniki to dobry wybór. Aby stale obserwować temperaturę, używaj

watch -n 1 sensors

Jeśli chcesz napisać program, musisz rzucić okiem na libsensory man libsensorslub spojrzeć na /usr/share/doc/. Musisz dołączyć #include <sensors/sensors.h>. Będzie korzystać z sensors.confplików /etc/sensors3.conf i / lub /etc/sensors.conf . Dalszą konfigurację (użytkowników) można znaleźć /etc/sensors.d/, jeśli jest używana.

Jeśli uważasz, że brakuje niektórych czujników, spójrz na katalog /sys/class/thermallub link do niego /sys/devices/virtual/thermal.

Aby uzyskać temperatury wszystkich stref termicznych, użyj

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

77000
66000
67000

Temperatura jest mierzona w miliCelcius (mC), w przypadku powyżej 77,0, 66,0, 67,0 ° C.

Aby oglądać ciągle korzystać

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

W tym katalogu można również znaleźć informacje o urządzeniach chłodzących (wentylatorach) i sposobie programowania regulatorów PID.

Chciałbym również stwierdzić, że niektóre zabezpieczenia przed przegrzaniem są kodowane bardzo sprzętowo (jest to dobry pomysł), gdzie dane są umieszczane w twoich bios.

abu_bua
źródło
wiem, że są programy, ale szukałem sposobu, aby ręcznie znaleźć te etemps
1
Co masz na myśli mówiąc ręcznie? Wszystko, co drukuje temperaturę, to programy.
abu_bua
nie mam strefy termicznej, wszystko, co mam, to urządzenie_ chłodzące0 1 i 2, ale nie przechowują temperatury pliku, tylko urządzenie cur_state urządzenie max_state typ podsystemu zasilania uevent
stan cur i max to 0 i 10
Czym dokładnie są thermal_zones? Mój 4-rdzeniowy procesor Intel wydaje się mieć tylko jeden thermal_zone( sensorsjednak poprawnie wyświetla wszystkie 4 temperatury rdzenia).
Gwyneth Llewelyn
5

Zainstaluj Psensor ( psensor ) z domyślnych repozytoriów Ubuntu i skonfiguruj Psensor, aby automatycznie odtwarzał dźwięk alarmu, gdy temperatura wzrośnie powyżej określonego przez użytkownika maksimum. Ma to na celu umożliwienie usłyszenia sygnału ostrzegawczego przed zamknięciem systemu bez dodawania dodatkowego obciążenia aplikacji do systemu.

Psensor wyświetla się na pulpicie jako mała ikona termometru w obszarze powiadomień w prawym górnym rogu pulpitu obok zegara. W dowolnym momencie możesz kliknąć prawym przyciskiem myszy ikonę termometru, aby wyświetlić temperatury sprzętu.

Karel
źródło