Nadzor temperature procesora

U prošlom smo članku objasnili kako nadzirati temperaturu tvrdih diskova i automatski gasiti računalo u slučaju pregrijavanja. Preostaje nam pokazati kako nadzirati temperaturu raznih procesora u računalu koji imaju ugrađen senzor topline.

Što je CPU moćniji, to više struje troši i više se grije. To je jednostavno pravilo. Za mobilne uređaje proizvode se štedljivi procesori koji troše manje energije i manje se zagrijavaju, omogućujući time duži rad i sporije trošenje baterije. Cijena koja se plaća je manja procesorska snaga, ali s obzirom na sposobnosti današnjih procesora o tome ne treba previše brinuti, osim u slučaju kada vam radi posla, ili igranja :), treba zaista moćno računalo.

Primjera radi, Intelov procesor N5000 troši samo 6 W, što se pri opterećenju podiže na 15 W. CPU se pokazao sasvim dovoljan za rad notebooka koji služi za surfanje, čitanje maila, pisanje tekstova. Govorim iz vlastitog iskustva: lagani prijenosnik (samo 1,3 kg) s N5000 procesorom, Intelovom FullHD grafikom, SSD diskom i (za današnje pojmove) svega 4 GB RAM-a, veselo vrti Linux. Bateriju sam uspio isprazniti nakon 17 sati ležernog rada, bez gašenja, ali s povremenim spuštanjem ekrana dok radim druge stvari. Ali kad sam pokušao pogledati 4K video snimljem digitalnom kamerom, sve što sam dobio bio je niz zamrznutih kadrova. Ako bih počeo razmišljati o editiranju 4K videa trebalo bi mi mnogo snažnije računalo: CPU Intel i9 ili AMD Ryzen 7, barem 32 GB RAM-a i dobra grafička kartica koja može koštati više od skromnijeg računala. Intelovi i7 i i9 procesori pri normalnom radu troše oko 80 W, ali pri testovima koji ih natjeraju da rade punim gasom potrošnja raste i preko 200 W. Slično je s najjačim AMD Ryzenima. Naravno, ne govorimo o verzijama procesora za prijenosna računala, već o onima za stolna.

Ako pretpostavimo da se 95 % te energije pretvara u toplinu, shvatit ćemo potrebu za nadzorom temperature i dobrim hlađenjem računala. U velikim data centrima nastoje toplinu koju stvaraju serveri iskoristiti za grijanje prostorija, zagrijavanje tople vode, a ljeti za pogon chillera. Pronašao sam podatak da 123 servera "oklopljena" mineralnim uljem koje odvodi toplinu mogu pogoniti chiller od 10 tona koji troši 50 kW!

Kako nadzirati temperaturu procesora? Na Linuxu nam treba paket lm-sensors, koji koristi senzore ugrađene u hardverske komponente da bi nadzirao temperaturu. Instalira se ovako:

 $ sudo apt install lm-sensors

Pitat će vas kako je na računalu podešen mail servis, pa odgovorite na postavljena pitanja. Na notebooku taj dio možete preskočiti, nećete ga ostavljati upaljena preko noći.

Nakon uspješne instalacije treba pokrenuti skriptu koja će nastojati otkriti senzore koji su dostupni u hardveru računala, a zatim sugerirati koje module kernela treba pokrenuti da bi mogli komunicirati sa senzorima.

 $ sudo sensors-detect
 # sensors-detect revision $Revision$
 # System: Acer Swift SF114-32 [V1.03] (laptop)
 # Board: GLK Sapporo_GL
 # Kernel: 5.3.0-23-generic x86_64
 # Processor: Intel(R) Pentium(R) Silver N5000 CPU @ 1.10GHz (6/122/1)

 This program will help you determine which kernel modules you need
 to load to use lm_sensors most effectively. It is generally safe
 and recommended to accept the default answers to all questions,
 unless you know what you're doing.

 Some south bridges, CPUs or memory controllers contain embedded sensors.
 Do you want to scan for them? This is totally safe. (YES/no):
 Module cpuid loaded successfully.
 Silicon Integrated Systems SIS5595...                       No
 VIA VT82C686 Integrated Sensors...                          No
 VIA VT8231 Integrated Sensors...                            No
 AMD K8 thermal sensors...                                   No
 AMD Family 10h thermal sensors...                           No
 AMD Family 11h thermal sensors...                           No
 AMD Family 12h and 14h thermal sensors...                   No
 AMD Family 15h thermal sensors...                           No
 AMD Family 16h thermal sensors...                           No
 AMD Family 17h thermal sensors...                           No
 AMD Family 15h power sensors...                             No
 AMD Family 16h power sensors...                             No
 Intel digital thermal sensor...                             Success!
     (driver `coretemp')
 Intel AMB FB-DIMM thermal sensor...                         No
 Intel 5500/5520/X58 thermal sensor...                       No
 VIA C7 thermal sensor...                                    No
 VIA Nano thermal sensor...                                  No
 ...

Nakon ovoga pitat će vas za dodatna skeniranja kojima pokušava otkriti senzore u različitim čipovima.

 Some Super I/O chips contain embedded sensors. We have to write to
 standard I/O ports to probe them. This is usually safe.
 Do you want to scan for Super I/O sensors? (YES/no):
 /dev/port: Operation not permitted
 ...

Skratit ćemo ispis, što će skripta pronaći ovisi o tome što je ugrađeno u vaše računalo. Na kraju slijedi sažetak i sugestija koje module treba pokrenuti. Ako ste lijeni, skripta će vas pitati da li da to uradi umjesto vas. Uspješno će nazive modula upisati u /etc/modules.

 Now follows a summary of the probes I have just done.
 Just press ENTER to continue:
 Driver `coretemp':
   * Chip `Intel digital thermal sensor' (confidence: 9)

 To load everything that is needed, add this to /etc/modules:
 #----cut here----
 # Chip drivers
 coretemp
 #----cut here----
 If you have some drivers built into your kernel, the list above will
 contain too many modules. Skip the appropriate ones!

 Do you want to add these lines automatically to /etc/modules? (yes/NO)
 Monitoring programs won't work until the needed modules are
 loaded. You may want to run '/etc/init.d/kmod start'
 to load them.

Ljubazna skripta nam je sve objasnila. Dakle:

 $ sudo /etc/init.d/kmod start
 [ ok ] Starting kmod (via systemctl): kmod.service.

Provjerimo je li modu coretemp pokrenut:

 $ lsmod | grep coretemp
 coretemp               20480  0

Sad možemo pogledati koliko se griju čipovi koji imaju svoje senzore.

 $ sensors
 coretemp-isa-0000
 Adapter: ISA adapter
 Package id 0:  +41.0°C  (high = +105.0°C, crit = +105.0°C)
 Core 0:        +41.0°C  (high = +105.0°C, crit = +105.0°C)
 Core 1:        +41.0°C  (high = +105.0°C, crit = +105.0°C)
 Core 2:        +41.0°C  (high = +105.0°C, crit = +105.0°C)
 Core 3:        +41.0°C  (high = +105.0°C, crit = +105.0°C)

 BAT0-acpi-0
 Adapter: ACPI interface
 in0:         +11.80 V 
 curr1:        +0.51 A 

 iwlwifi-virtual-0
 Adapter: Virtual device
 temp1:        +30.0°C 

 acpitz-acpi-0
 Adapter: ACPI interface
 temp1:        +40.0°C  (crit = +104.0°C)

S ovim štedljivim notebookom nema problema, temperatura komponenti je daleko ispod kritične granice. Na drugim računalima, pogotovo na serverima, računalima za igranje ili grafičkim radnim stanicama nećete dobiti ovakve idilične rezultate. Tamo gdje imate moćne grafičke kartice dobit ćete očitanja i za njihov GPU, jer će i njihovi senzori biti detektirani i očitani.

Umjesto ovako lijepo formatiranog ispisa možete zatražiti i onaj sirovi (raw):

hombre@kupina:~$ sensors -u
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:
  temp1_input: 41.000
  temp1_max: 105.000
  temp1_crit: 105.000
  temp1_crit_alarm: 0.000
Core 0:
  temp2_input: 41.000
  temp2_max: 105.000
  temp2_crit: 105.000
  temp2_crit_alarm: 0.000
Core 1:
  temp3_input: 41.000
  temp3_max: 105.000
  temp3_crit: 105.000
  temp3_crit_alarm: 0.000
Core 2:
  temp4_input: 41.000
  temp4_max: 105.000
  temp4_crit: 105.000
  temp4_crit_alarm: 0.000
Core 3:
  temp5_input: 41.000
  temp5_max: 105.000
  temp5_crit: 105.000
  temp5_crit_alarm: 0.000

BAT0-acpi-0
Adapter: ACPI interface
in0:
  in0_input: 11.753
curr1:
  curr1_input: 0.368

iwlwifi-virtual-0
Adapter: Virtual device
temp1:
  temp1_input: 33.000

acpitz-acpi-0
Adapter: ACPI interface
temp1:
  temp1_input: 42.000
  temp1_crit: 104.000

Otkrivamo nove varijable, na primjer temp_crit_alarm, kojima je inicijalno dodijeljena ista vrijednost kao temp_max. Pretpostavljamo da se te vrijednosti mogu podesiti na nižu vrijednost, kako bi se mogle iskoristiti za ranije usporavanje rada ili gašenje računala.

Konfiguraciju potražite u /etc direktoriju. Tu se nalazi sensors.conf, u mom slučaju sensors3.conf i podirektorij /etc/sensors.d. U sensors3.conf su zadane vrijednosti koje vrijede za sva računala, dok se u poddirektorij sprema konfiguracija koju ćete vi sami dodati, kako bi izmijenili zadane vrijednosti.

I ovdje možemo iskoristiti watch za nadzor:

 $ watch -n 20 -d sensors



Parametar -d traži da se istakne diferencija, ako se temperatura promijeni ta će vrijednost biti ispisana inverzno, da se lakše vidi što se promijenilo od zadnjeg očitanja. Otvorite si mali terminal u kutu ekrana i pokrenite ovu naredbu. Dobro će vam doći kad preko vikenda ležite na trosjedu i gledate utakmicu, pokriveni dekom, s notebookom na krilu. CPU će pregrijati jer ste dekom zatvorili rešetku ventilatora. :)

I ovdje bi se mogla napisati skripta koju pogonimo iz crontaba, a koja bi gasila računalo kad se procesori pregriju.

Nudi se i nekoliko appleta koji bi nam u taskbaru mogli prikazivati temperature, ali ovdje se nećemo njima baviti.

Toliko o lm-sensors, ali time nismo iscrpili temu. u nastavku ćemo obraditi thermal daemona, čiji je zadatak automatsko reguliranje temperature računala.


Kuharice: 
Kategorije: 
Vote: 
0
No votes yet