Puncte:1

Cum să depanați blocarea CPU HW în Ubuntu 18.04

drapel cn

Am cumpărat un computer nou acum câteva luni. Am instalat Ubuntu 18.04 și funcționează bine, cu excepția cazului în care compilez codul c++: se îngheață greu de îndată ce există un vârf de utilizare ridicată a CPU (10+ nuclee).

Singura soluție de lucru este să compilați cu -j8. Merge -j10 sau mai sus va face ca sistemul să se blocheze de cele mai multe ori. -j16 se blochează 100% din timp cu proiecte mari (și fără ccache).

Detalii despre configurarea mea:

  • Computer de jocuri Asus: Asus Strix GT15 - Link Best Buy. Ai ghicit, l-am cumparat pentru GPU... altfel l-as fi construit eu cu componente de buna calitate (in special PSU si radiator).
  • MB: Asus strix B460-G Gaming
  • CPU: Intel Core i7-10700KF
  • Alimentare: Necunoscut OEM 500W 80 PLUS
  • Blocarea are loc atunci când GPU-ul este inactiv (desktop).
  • Nu pot instala versiuni mai recente de Ubuntu din cauza mediului de lucru necesar.

Ce am încercat, dar nu am rezolvat problema (este puțin mai puțin frecvent, dar încă se întâmplă):

Bios:

  • Am redus Turbo-ul la minim (1s în loc de 60s), radiatorul CPU pare foarte ineficient pentru acest procesor cuptor.
  • S-a redus numărul de amperi ȘI puterea maximă pe care procesorul/placa de bază este permisă să o folosească, în cazul în care alimentatorul este prea slab.
  • Am crescut viteza ventilatorului mai devreme, când temperatura procesorului atinge 50C (temperaturile nu sunt mult mai bune, dar acum este foarte tare la compilare)
  • A înlocuit „pasta termică” OEM cu o pastă de înaltă calitate (temperatură redusă cu 2-3C)

Note despre accident:

  • journalctl -b -1 nu are nicio urmă despre un accident, așa că cred că este o prăbușire a procesorului HW...
  • Tastele Ctrl-Alt-F* nu funcționează
  • Nu se poate conecta prin ssh după accident
  • De asemenea, audio se blochează atunci când se întâmplă
  • Nu cred că PSU este problema pentru că pot folosi stres -c 16 și ./gpu_burn 300 în același timp și sistemul nu se blochează. Stresul folosește doar sqrt()...

Mulțumesc anticipat!

Actualizare #1

Temps:

  • fără aceste moduri de setări Bios, ar merge cu ușurință până la 90C după o utilizare susținută de 100% a procesorului. Cu aceste temperaturi, nu l-am lăsat să meargă suficient de mult.
  • după modificări, temperaturile trec rar peste 80C.
  • Înghețarea pare să fie legată de creșterea bruscă a utilizării procesorului, nu de temperaturile ridicate ale procesorului.
  • temperatura camerei este de 20-22C
  • Temperatura inactiv a procesorului este de 27-28C

Nucleul actual:

uname -a
Linux rog 5.4.0-87-generic #98~18.04.1-Ubuntu SMP miercuri 22 sept 10:45:04 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
drapel hu
Poate fi necesar să monitorizați temperatura procesorului sau să resetați radiatorul cu pastă termică nouă.
Doug Smythies avatar
drapel gn
@mikewhatever: OP sa schimbat deja la pastă termică de înaltă calitate și pretinde o îmbunătățire de 2-3 grade. Sunt de acord cu monitorizarea temperaturilor CPU și sugerez (ca întotdeauna) `sudo /turbostat --Summary --quiet --show Busy%,Bzy_MHz,IRQ,PkgWatt,PkgTmp,RAMWatt,GFXWatt,CorWatt --interval 6`. I5-10600K meu este din aceeași epocă și a trebuit să activez HWE pe serverul 20.04 pentru a utiliza un nucleu mai nou. Vă sugerăm să încercați un nucleu mai nou, doar ca test.
drapel cn
@DougSmythies Mulțumesc pentru sugestii, voi încerca un nucleu mai nou și voi vedea despre ieșirea turbostat!
Doug Smythies avatar
drapel gn
O creștere a utilizării procesorului ar putea provoca, de asemenea, o creștere a temperaturii procesorului, care are loc atât de repede încât nu o vedeți în niciun program de monitorizare. Executați vreun daemon de reglare termică? Vă place termică sau folosiți offset TCC?
drapel cn
@DougSmythies thermald nu a recunoscut acest procesor, așa că nu rulează...
Doug Smythies avatar
drapel gn
Sugerați un fișier simplu de configurare termică. vezi [aici](https://askubuntu.com/questions/1373324/cpu-temperature-spike-in-90c-only-when-plugged-in) de exemplu (este la fel cum am sugerat înainte). Rețineți că starea systemctl s-ar putea plânge, se întâmplă pe computerul meu, dar de fapt funcționează bine.
drapel cn
@DougSmythies Pare să funcționeze! Am folosit exemplul foarte simplu și generic cu o temperatură de 60C. Voi reveni peste o săptămână să spun dacă chiar funcționează bine.Dacă creezi un răspuns cu acest link, îl voi accepta. Nu a actualizat încă nucleul, încă la 5.4 (cea mai recentă versiune implicită).
Puncte:1
drapel gn

Toată lumea ar trebui să înțeleagă caracteristicile termice ale computerului său și să ofere o protecție adecvată. Adesea, utilizatorii nu sunt conștienți de cât de rapidă poate crește temperatura pachetului procesorului cu o încărcare a funcției în trepte. Un exemplu de pe serverul meu de testare 20.04:

doug@s19:~$ sudo turbostat --quiet --Summary --show PkgWatt,PkgTmp --interval 0.1
PkgTmp PkgWatt
33 1,88    
33 1,69    
33 1,56    
33 1,74    
49 24,99 800 de grade pe secundă
57 133,28 80 de grade pe secundă
61 133,66 40 de grade pe secundă
61 132,58 0 grade pe secundă
63 133,57  
64 134.12

Sarcina a fost aplicată aproximativ 4/5 din parcurs de-a lungul timpului de eșantionare (25 / (133,5 - 1,7) ~= 20%, sau 4/5 părți) și temperatura a crescut deja cu 16 grade sau 800 de grade pe secundă. Sarcina aici a fost testul de tortură prime95, subtestul de căldură maximă. Exemplul de computer este răcit cu apă cu pompa de apă mereu pornită la ritmul maxim. Procesor i5-10600K.

Pentru plăcile de bază ASUS, vă rugăm să știți că senzorul ventilatorului CPU este de fapt un termistor extern care va întârzia temperatura actuală a pachetului procesorului atât în ​​timp, cât și în valoare. Pe placa mea de bază ASUS, sub sarcină grea, senzorul ventilatorului CPU întârzie temperatura actuală a procesorului cu 12 grade.

În cele din urmă, este posibil ca temperatura pachetului procesorului să atingă limita de oprire atât de repede încât diferite programe de monitorizare sau demoni nici măcar să nu observe. Uneori, protecția termică trebuie să reacționeze mai devreme pentru a avea timp să aibă efect înainte ca orice temperatură depășită să declanșeze o oprire.

Metoda 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 -->

Notă: folosesc un punct de declanșare ridicol de scăzut de 41 de grade, deoarece sistemul meu este răcit cu apă și nu pot ajunge la temperaturile de exemplu dorite.

doug@s19:~$ sudo systemctl start thermald
doug@s19:~$ sudo systemctl status thermald
â thermald.service - Thermal Daemon Service
     Încărcat: încărcat (/lib/systemd/system/thermald.service; dezactivat; prestabilit furnizor: activat)
     Activ: activ (în rulare) din vineri 2021-11-05 07:41:45 PDT; acum 17 ani
   PID principal: 3461 (termal)
      Sarcini: 2 (limită: 38214)
     Memorie: 2,2 M
     CGroup: /system.slice/thermald.service
             ââ3461 /usr/sbin/thermald --systemd --dbus-enable --adaptive

05 noiembrie 07:41:45 s19 systemd[1]: Se pornește serviciul Thermal Daemon...
05 noiembrie 07:41:45 s19 systemd[1]: Serviciul Thermal Daemon a pornit.
Nov 05 07:41:45 s19 thermald[3461]: 22 nivele CPUID; family:model:stepping 0x6:a5:5 (6:165:5)
Nov 05 07:41:45 s19 thermald[3461]: 22 nivele CPUID; family:model:stepping 0x6:a5:5 (6:165:5)
Nov 05 07:41:45 s19 thermald[3461]: Modul de sondare este activat: 4
Nov 05 07:41:45 s19 thermald[3461]: ID senzor 5: Fără sistem de temperatură pentru citirea temperaturii brute
Nov 05 07:41:45 s19 thermald[3461]: ID senzor 5: Fără sistem de temperatură pentru citirea temperaturii brute
Nov 05 07:41:45 s19 thermald[3461]: ID senzor 5: Fără sistem de temperatură pentru citirea temperaturii brute
05 noiembrie 07:41:45 s19 thermald[3461]: zonă XML: tip senzor nevalid []

În timp ce starea termică arată unele plângeri, de fapt funcționează corect, deși este puțin lent să răspundă:

doug@s19:~$ sudo turbostat --quiet --Summary --show PkgWatt,PkgTmp --interval 1
PkgTmp PkgWatt
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

Reglați punctul de declanșare după cum este necesar pentru a profita la maximum de sistemul dvs., prevenind în același timp depășirea punctului maxim care provoacă o oprire. A avea un punct de declanșare prea scăzut ar putea reduce performanța sistemului la niveluri nedorite.

Metoda 2: TCC Offset

Mai întâi, găsiți ce dispozitiv de răcire:

doug@s19:~$ grep . /sys/devices/virtual/thermal/cooling_device*/type
/sys/devices/virtual/thermal/cooling_device0/type:Fan
/sys/devices/virtual/thermal/cooling_device10/type:Procesor
/sys/devices/virtual/thermal/cooling_device11/type:Procesor
/sys/devices/virtual/thermal/cooling_device12/type:Procesor
/sys/devices/virtual/thermal/cooling_device13/type:Procesor
/sys/devices/virtual/thermal/cooling_device14/type:Procesor
/sys/devices/virtual/thermal/cooling_device15/type:Procesor
/sys/devices/virtual/thermal/cooling_device16/type:Procesor
/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:Fan
/sys/devices/virtual/thermal/cooling_device2/type:Fan
/sys/devices/virtual/thermal/cooling_device3/type:Fan
/sys/devices/virtual/thermal/cooling_device4/type:Fan
/sys/devices/virtual/thermal/cooling_device5/type:Procesor
/sys/devices/virtual/thermal/cooling_device6/type:Procesor
/sys/devices/virtual/thermal/cooling_device7/type:Procesor
/sys/devices/virtual/thermal/cooling_device8/type:Procesor
/sys/devices/virtual/thermal/cooling_device9/type:Procesor

Este dispozitivul 18. Setați offset-ul și apoi verificați-l prin turbostat fără opțiunea --quiet:

doug@s19:~$ echo 59 | sudo tee /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
versiunea turbostat 21.05.04 - Len Brown <[email protected]>
CPUID(0): niveluri CPUID GenuineIntel 0x16
CPUID(1): familie:model:pasare 0x6:a5:5 (6:165:5) microcod 0xec
...
cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x3b641422 (41 C) (100 implicit - 59 offset)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x883f0800 (37 C)
...
Bzy_MHz PkgTmp PkgWatt
800 33 1,35
800 33 1,34
800 34 1,40
4187 49 86,23
4100 52 91,72
4100 53 91,29
...

Observați că accelerarea este practic imediată, 4,8 GHz ar fi fost frecvența CPU nelimitată. Rețineți că limita de accelerare pentru procesorul meu (nu toate procesoarele) este frecvența maximă de ceas non-turbo de 4,1 GHz și, prin urmare, nu poate atinge limita ridicol de joasă de 41 de grade.

drapel cn
Am folosit configurația termică generică pe care mi-ați sugerat-o și încă nu m-am blocat (limitat la 60C deocamdată). O sa fac mai multe teste sa aflu la ce temperatura se blocheaza... Multumesc!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.