Permalänk
Medlem

Visa CPU-spänning i Linux

Jag behöver något som kan visa på CPU i Linux. Har testat med lm_sensors och CPU-X, men de ger mig inte den informationen.

Vet inte om det är beroende av hårdvara och/eller eventuella program som saknas. Kör iaf en 13600K på ett Asus Z790-F.

Har ni några idéer?

Permalänk
Medlem

Mangohud

Permalänk
Medlem

Vad är det för information som du saknar from lm_sensors?

Visa signatur

We are the music makers, and we are the dreamers of dreams.
Youtube | Spotify Playlists | Soft | Rapp | Rytm | Kött | Kalas |

Permalänk
Medlem
Skrivet av Cloudstone:

Vad är det för information som du saknar from lm_sensors?

Vcore...

Permalänk
Medlem
Skrivet av DasIch:

Ah! Kanske en dum fråga, my bad. Antar att du testat med dmidecode?

sudo dmidecode --type processor | grep Voltage

Kanske saknar precision dock..

Edit:
My bad - dmidecode visar inte aktuell använding, utan vad CPUn är specad för.

Visa signatur

We are the music makers, and we are the dreamers of dreams.
Youtube | Spotify Playlists | Soft | Rapp | Rytm | Kött | Kalas |

Permalänk
Medlem

Misstänker att lm_sensors måste lägga in något slags stöd för moderkortet. Tyvärr gör det Linux rätt oanvändbart för närvarande, då jag inte kan bekräfta att allt funkar som det ska.

Permalänk
Medlem

Får man fråga vad du kör för version på kärnan?

Visa signatur

We are the music makers, and we are the dreamers of dreams.
Youtube | Spotify Playlists | Soft | Rapp | Rytm | Kött | Kalas |

Permalänk
Medlem

Kör 6.0.12-zen.

Permalänk
Avstängd

Har du lagt till "acpi_enforce_resources=lax" i kernel command line?

Permalänk
Medlem

Har du kört sensors-detect ?
Där kan man scanna igenom din dators sensorer och skapa en konfigurationsfil. Men det kan vara lite lurigt att veta vilken sensor som är vad och om man lyckats klurat ut det kan man vilja döpa om dem till vettigare namn.

https://www.linux.com/topic/desktop/advanced-lm-sensors-tips-...
https://wiki.archlinux.org/title/Lm_sensors

Hittade inte just ditt moderkort men ett exempel som kanske funkar:
https://github.com/petersulyok/asrock_z690_extreme
Inte att du ska kopiera rakt av men du ser principen hur man kör sensors-detect och sedan mappar om givarnas namn.

Permalänk
Avstängd
Skrivet av ronnylov:

Har du kört sensors-detect ?
Där kan man scanna igenom din dators sensorer och skapa en konfigurationsfil. Men det kan vara lite lurigt att veta vilken sensor som är vad och om man lyckats klurat ut det kan man vilja döpa om dem till vettigare namn.

https://www.linux.com/topic/desktop/advanced-lm-sensors-tips-...
https://wiki.archlinux.org/title/Lm_sensors

Hittade inte just ditt moderkort men ett exempel som kanske funkar:
https://github.com/petersulyok/asrock_z690_extreme
Inte att du ska kopiera rakt av men du ser principen hur man kör sensors-detect och sedan mappar om givarnas namn.

Är man osäker på vilka sensorer som skall vara aktiva kan man använda:

sensors-detect --auto

Så kommer det att efter man kört kommandot stå hur man skall skapa konfigurations filen.

Går även se späningen med bl.a dmidecode:

dmidecode -t processor \ |grep -i "voltage" \ |sed -e 's/^[ \t]*//' Voltage: 0.8 V

Permalänk
Medlem

Jag har gjort allt detta och allt jag lyckats få fram, som bäst, är en rad okända spänningar samt en del värden som ter sig en aning orimliga. Gissningsvis är det en drivrutin för NCT6798D som saknas.

Permalänk
Medlem

Saknas inte, men verkar ha fastnat i vinkelvolten https://bugzilla.kernel.org/show_bug.cgi?id=204807

Permalänk
Avstängd
Skrivet av Jimi84:

Saknas inte, men verkar ha fastnat i vinkelvolten https://bugzilla.kernel.org/show_bug.cgi?id=204807

Precis det som står där tipsade jag om tidigare och TS säger sig ha provat allt så vet inte vad som kan vara fel.

Permalänk
Medlem
Skrivet av wuseman:

Precis det som står där tipsade jag om tidigare och TS säger sig ha provat allt så vet inte vad som kan vara fel.

Du menar lägga till "acpi_enforce_resources=lax" i kernel cmd line? Problemet verkar ju tyvärr vara mer komplicerat än så. Och "acpi_enforce_resources=lax" kan vara osäkert att köra.

Permalänk
Avstängd
Skrivet av DasIch:

Du menar lägga till "acpi_enforce_resources=lax" i kernel cmd line? Problemet verkar ju tyvärr vara mer komplicerat än så. Och "acpi_enforce_resources=lax" kan vara osäkert att köra.

Ja precis, det kan lösa ditt problem.

Varför tror du det skulle vara mer komplicerat än så?

grep "." /sys/class/dmi/id/board_name

Vad har du för board enligt ovan kommando exakt?

Permalänk
Medlem
Skrivet av wuseman:

Ja precis, det kan lösa ditt problem.

Varför tror du det skulle vara mer komplicerat än så?

grep "." /sys/class/dmi/id/board_name

Vad har du för board enligt ovan kommando exakt?

Eftersom det inte funkar så är problemet de facto mer komplicerat än så. Jag får samma resultat med och utan det.
https://pastebin.com/BethD7CA

Det säger ROG STRIX Z790-F GAMING WIFI.

Permalänk
Avstängd
Skrivet av DasIch:

Eftersom det inte funkar så är problemet de facto mer komplicerat än så. Jag får samma resultat med och utan det.
https://pastebin.com/BethD7CA

Det säger ROG STRIX Z790 GAMING WIFI.

Kan du prova att köra nct6775 modulen istället och kolla även om dmesg rapporterar något error.

rmmod nct6798 modprobe nct6775

Edit: Vad visade dmidecode för värde? dmidecode använder sig av ohms lag för att räkna ut effekten från spänningen samt strömmen så det skulle vara kul att veta vad för volt som dmidecode skriver ut annars stämmer ju inte effekten heller isf (detta frågar jag av ren nyfikenhet vad dmidecode visar)

Permalänk
Medlem

Det är NCT6775 modulen som körs. Finns ingen NCT6798 modul. Dmesg visar alltid ACPI-fel, så tror inte det leder någonstans.

dmesg --level=emerg,alert,crit,err
https://pastebin.com/TcVYcLLV

Dmidecode visar bara 1.3V. Det kan inte gärna vara aktuell spänning då den inte förändras beroende på last, och vid konstant 1.3V borde datorn krascha.

Permalänk
Avstängd
Skrivet av DasIch:

Det är NCT6775 modulen som körs. Finns ingen NCT6798 modul. Dmesg visar alltid ACPI-fel, så tror inte det leder någonstans.

dmesg --level=emerg,alert,crit,err
https://pastebin.com/TcVYcLLV

Dmidecode visar bara 1.3V. Det kan inte gärna vara aktuell spänning då den inte förändras beroende på last, och vid konstant 1.3V borde datorn krascha.

Du har laddat fel modul i sensors3.conf isåfall, sensors använder i din output: nct6798-isa-0290 som modul och inte nct6775

Citat:

chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" "nct6775-*" "nct6776-*" \
"nct6779-*" "nct6791-*" "nct6795-*" "nct6796-*"

Kolla vad ´pwmconfig´ ger dig för modul.

Vad ger:

sensors -u 'nct6798-*'

samt

sensors -u 'nct6775-*'

för svar?

Permalänk
Medlem
Skrivet av wuseman:

Du har laddat fel modul i sensors3.conf isåfall, sensors använder i din output: nct6798-isa-0290 som modul och inte nct6775

Jag vet inte om nct6775-modulen kan hantera nct6798, men det finns ingen nct6798 modul. Kör jag sensors-detect får jag:

Citat:

Driver `nct6775':
* ISA bus, address 0x290
Chip `Nuvoton NCT6798D Super IO Sensors' (confidence: 9)

Så, det ser i varje fall ut som nct6775-modulen hanterar nct6798-chipet. Det verkar dock tyvärr inte funka särskilt bra:
https://bugzilla.kernel.org/show_bug.cgi?id=204807

Citat:

Kolla vad ´pwmconfig´ ger dig för modul.

Den ger ingen modul utan listar olika enheter/sensorer.

Citat:

Found the following devices:
hwmon0 is acpitz
hwmon1 is nvme
hwmon2 is nvme
hwmon3 is coretemp
hwmon4 is nct6798
hwmon5 is iwlwifi_1
hwmon6 is asus
hwmon7 is asus

Citat:

Vad ger:

sensors -u 'nct6798-*'

Samma som i output för lm_sensors.

Citat:

samt

sensors -u 'nct6775-*'

Den säger att sensorn inte går att hitta.

Permalänk
Avstängd
Skrivet av DasIch:

Jag vet inte om nct6775-modulen kan hantera nct6798, men det finns ingen nct6798 modul. Kör jag sensors-detect får jag:

Så, det ser i varje fall ut som nct6775-modulen hanterar -chipet. Det verkar dock tyvärr inte funka särskilt bra:
https://bugzilla.kernel.org/show_bug.cgi?id=204807

Den ger ingen modul utan listar olika enheter/sensorer.
Samma som i output för lm_sensors.

Den säger att sensorn inte går att hitta.

Prova att köra modprobe nct6775 före, vad har du för kernel? Detta var då rätt märkligt. Är du verkligen säker på du provat köra nct6775? Provade du det jag skrev förut?

rmmod nct6798 modprobe nct6775

Prova ovan och se så den blir laddad efteråt för sakerhets skull. Dyker nct6775 upp när du kollar i /proc/modules?

grep -i '^nct' /proc/modules

Hur har du installerat nct6798 sensor modulen? Den finns inte i den senaste kerneln versionen vad det verkar vad jag kan se i alla fall.

grep -i ^config_sensors_nct /usr/src/linux/.config CONFIG_SENSORS_NCT6683=m CONFIG_SENSORS_NCT6775=m CONFIG_SENSORS_NCT7802=m CONFIG_SENSORS_NCT7904=m

Tror att ifall om du får sensors att köra rätt modul så kommer det dyka upp rätt värden, du skulle ha fått något liknande denna outputen om det var korrekt så jag tror i alla fall på nct6775 modulen du får lägga till så sensors3.conf är uppdaterad också och inte bara systemet.

Vad har du i filen: /etc/modules-load.d/lm_sensors.conf? Ifall om det är fel i den så prova ändra där och sedan reloada modules.

Systemd:

systemctl restart systemd-modules-load.service

OpenRC

/etc/init.d/modules restart

Jag håller tummarna!

Permalänk
Medlem

Alltså, nct6775-modulen är laddad. Nct6798 finns däremot inte, utan det chipet ser ut att hanteras av nct6775-modulen. Jag får ju också liknande output som du länkar till - kolla min tidigare pastebin-länk. Värdena jag får ser däremot inte vettiga ut och det går inte att utläsa någon Vcore.

Permalänk
Avstängd

Alright, tyvärr varierar resistorvärdena mellan moderkortstyper. Därför måste du räkna ut de korrekta motståndsvärdena för ditt eget moderkort och ställa in detta i sensors konfigurationen manuellt, just detta beskrivs i manualen du kan plocka ut rätt stycke med nedan sedan kan sensors räkna ut detta själv med det fasta värdet som även dmidecode skriver ut som som en annan medlem skrev tidigare med dmidecode.

man sensors.conf|sed -n '/^VOLTAGE/,/chips,/p

Det var ju hwmon4, så får du ställa in det typ:

Citat:

Real-world examples for the positive voltage reference case:
compute <mon4> @*(1+232/56) - 4.096*232/56, (@ + 4.096*232/56)/(1+232/56)

Finns bra exempel i manualen där, meckigt värre dock.

Permalänk
Medlem
Skrivet av wuseman:

Är man osäker på vilka sensorer som skall vara aktiva kan man använda:

sensors-detect --auto

Så kommer det att efter man kört kommandot stå hur man skall skapa konfigurations filen.

Går även se späningen med bl.a dmidecode:

dmidecode -t processor \ |grep -i "voltage" \ |sed -e 's/^[ \t]*//' Voltage: 0.8 V

Testade detta. Jag har ett MSI MAG Z690 Tomahawk WiFi DDR4 moderkort och intel i7 13700K CPU.
sensors-detect --auto skrev över konfigurationsfilen utan varning så det kan vara bra att göra backup på denna fil först.
Sensors visade sedan temperaturer för alla processorkärnor och lite annat som nvme diskar och GPU.
Men LM sensors gav inga processorspänningar.

Körde sedan dmidecode kommandot och fick:
Voltage: 1.0 V

Har inte ansträngt mig så mycket mera då jag är nöjd med att få ut temperaturen på CPU.

Permalänk
Medlem
Skrivet av wuseman:

Alright, tyvärr varierar resistorvärdena mellan moderkortstyper. Därför måste du räkna ut de korrekta motståndsvärdena för ditt eget moderkort och ställa in detta i sensors konfigurationen manuellt, just detta beskrivs i manualen du kan plocka ut rätt stycke med nedan sedan kan sensors räkna ut detta själv med det fasta värdet som även dmidecode skriver ut som som en annan medlem skrev tidigare med dmidecode.

man sensors.conf|sed -n '/^VOLTAGE/,/chips,/p

Det var ju hwmon4, så får du ställa in det typ:

Finns bra exempel i manualen där, meckigt värre dock.

Tyvärr faller det, om inte annat, på att dmidecode inte ger vettiga värden. Processorn ska inte köra 1.3V konstant. Om den gjorde det skulle systemet krascha när den går upp i 5.8Ghz i Geekbench. Dessutom ska det värdet ändras, vilket det inte gör. RAM ligger inte heller på 1.1V. Där ska det vara konstant på 1.4V.

Sen kan jag ju inte bara köra det på hwmon4, utan jag måste räkna ut vilken av inX som är Vcore. Om ens någon av dem är det.

Skrivet av ronnylov:

Testade detta. Jag har ett MSI MAG Z690 Tomahawk WiFi DDR4 moderkort och intel i7 13700K CPU.
sensors-detect --auto skrev över konfigurationsfilen utan varning så det kan vara bra att göra backup på denna fil först.
Sensors visade sedan temperaturer för alla processorkärnor och lite annat som nvme diskar och GPU.
Men LM sensors gav inga processorspänningar.

Körde sedan dmidecode kommandot och fick:
Voltage: 1.0 V

Har inte ansträngt mig så mycket mera då jag är nöjd med att få ut temperaturen på CPU.

Kan du lita på temperaturerna då? Mina temperaturer är suspekt låga. Det är dock något jag själv inte bryr mig lika mycket om. Jag har ju testat kylningen så jag vet att den är adekvat, och skulle det mot förmodan bli för varmt vid något tillfälle kommer den bara throttla.

Problemet med spänningen kan lätt illustreras genom Windows. Jämför Vcore mellan power plan satt till balanced och performance. Det senare kommer hålla Vcore konstant vid max.

Frågan är: Hur ser det ut i Linux? Jag vill då inte sitta och köra Vcore maxad hela tiden. Skalar den som den ska, kör den på max hela tiden eller är det bara rent YOLO? Eftersom jag inte kan få ut några vettiga värden på något sätt är det inget jag bara vill lita blint på.

Permalänk
Medlem
Skrivet av DasIch:

Tyvärr faller det, om inte annat, på att dmidecode inte ger vettiga värden. Processorn ska inte köra 1.3V konstant. Om den gjorde det skulle systemet krascha när den går upp i 5.8Ghz i Geekbench. Dessutom ska det värdet ändras, vilket det inte gör. RAM ligger inte heller på 1.1V. Där ska det vara konstant på 1.4V.

Sen kan jag ju inte bara köra det på hwmon4, utan jag måste räkna ut vilken av inX som är Vcore. Om ens någon av dem är det.

Kan du lita på temperaturerna då? Mina temperaturer är suspekt låga. Det är dock något jag själv inte bryr mig lika mycket om. Jag har ju testat kylningen så jag vet att den är adekvat, och skulle det mot förmodan bli för varmt vid något tillfälle kommer den bara throttla.

Problemet med spänningen kan lätt illustreras genom Windows. Jämför Vcore mellan power plan satt till balanced och performance. Det senare kommer hålla Vcore konstant vid max.

Frågan är: Hur ser det ut i Linux? Jag vill då inte sitta och köra Vcore maxad hela tiden. Skalar den som den ska, kör den på max hela tiden eller är det bara rent YOLO? Eftersom jag inte kan få ut några vettiga värden på något sätt är det inget jag bara vill lita blint på.

Jag testade köra cinebench R23 i wine. Fick ett par grader högre temperatur i Linux men också några hundra högre poäng än i Windows (har dual boot). Det verkar rimligt och får duga. Hade den maxat vcore hade den throttlat och gett lägre poäng tänker jag.

Permalänk
Medlem
Skrivet av ronnylov:

Jag testade köra cinebench R23 i wine. Fick ett par grader högre temperatur i Linux men också några hundra högre poäng än i Windows (har dual boot). Det verkar rimligt och får duga. Hade den maxat vcore hade den throttlat och gett lägre poäng tänker jag.

Kör du en all-core last kommer Vcore sjunka. Frågan är ju vad Vcore landar på vid lättare laster. Min Vcore kan toppa runt 1.48V. Det är lugnt under kortare stunder, men det är inget jag vill ligga på konstant.

Permalänk
Medlem
Skrivet av DasIch:

Kör du en all-core last kommer Vcore sjunka. Frågan är ju vad Vcore landar på vid lättare laster. Min Vcore kan toppa runt 1.48V. Det är lugnt under kortare stunder, men det är inget jag vill ligga på konstant.

Jag trodde det styrdes av hårdvaran och inställningarna i BIOS? Var aldrig över 1,31 V i Windows med singeltrådat.
Nu har jag snarare undervoltat än överklockat. Finns någon "CPU Lite Load" i MSI bios.
Enda som är "överklockat" är att jag kör XMP profil 3600 MHz på minnena.

Hittade denna wiki; https://wiki.archlinux.org/title/CPU_frequency_scaling
Hittade inget där om att läsa ut spänning men kunde se frekvenserna åtminstone.

[root@desktop power]# cpupower monitor | Nehalem || Mperf || Idle_Stats CPU| C3 | C6 | PC3 | PC6 || C0 | Cx | Freq || POLL | C1_A | C2_A 0| 0,00| 92,94| 0,00| 0,00|| 0,45| 99,55| 1615|| 0,00| 1,12| 98,47 1| 0,00| 92,94| 0,00| 0,00|| 0,02| 99,98| 1400|| 0,00| 0,00| 99,98 2| 0,00| 96,43| 0,00| 0,00|| 3,44| 96,56| 5081|| 0,00| 0,00| 96,55 3| 0,00| 96,43| 0,00| 0,00|| 0,01| 99,99| 1110|| 0,00| 0,00| 99,99 4| 0,00| 99,69| 0,00| 0,00|| 0,19| 99,81| 3154|| 0,00| 0,04| 99,78 5| 0,00| 99,69| 0,00| 0,00|| 0,01| 99,99| 1100|| 0,00| 0,00| 99,99 6| 0,00| 99,65| 0,00| 0,00|| 0,17| 99,83| 1171|| 0,00| 0,07| 99,77 7| 0,00| 99,65| 0,00| 0,00|| 0,01| 99,99| 1103|| 0,00| 0,00| 99,99 8| 0,00| 98,61| 0,00| 0,00|| 1,09| 98,91| 2115|| 0,00| 0,18| 98,74 9| 0,00| 98,61| 0,00| 0,00|| 0,01| 99,99| 1107|| 0,00| 0,00| 99,99 10| 0,00| 97,92| 0,00| 0,00|| 1,76| 98,24| 2355|| 0,00| 0,14| 98,11 11| 0,00| 97,92| 0,00| 0,00|| 0,02| 99,98| 1114|| 0,00| 0,00| 99,98 12| 0,00| 93,34| 0,00| 0,00|| 3,59| 96,41| 4284|| 0,00| 0,11| 96,29 13| 0,00| 93,34| 0,00| 0,00|| 0,01| 99,99| 1132|| 0,00| 0,00| 99,99 14| 0,00| 99,59| 0,00| 0,00|| 0,31| 99,69| 3414|| 0,00| 0,00| 99,70 15| 0,00| 99,59| 0,00| 0,00|| 0,01| 99,99| 2003|| 0,00| 0,00| 99,99 16| 0,00| 99,22| 0,00| 0,00|| 0,40| 99,60| 944|| 0,00| 0,00| 99,63 17| 0,00| 99,91| 0,00| 0,00|| 0,01| 99,99| 806|| 0,00| 0,00| 99,99 18| 0,00| 99,86| 0,00| 0,00|| 0,05| 99,95| 803|| 0,00| 0,00| 99,95 19| 0,00| 99,91| 0,00| 0,00|| 0,01| 99,99| 801|| 0,00| 0,00| 99,99 20| 0,00| 99,88| 0,00| 0,00|| 0,02| 99,98| 804|| 0,00| 0,02| 99,95 21| 0,00| 99,89| 0,00| 0,00|| 0,02| 99,98| 802|| 0,00| 0,00| 99,98 22| 0,00| 99,91| 0,00| 0,00|| 0,01| 99,99| 803|| 0,00| 0,00| 99,99 23| 0,00| 99,92| 0,00| 0,00|| 0,01| 99,99| 801|| 0,00| 0,00| 99,99

Sedan hur man ska tolka allt det andra i tabellen vet jag inte.
Klurade ut att jag kör intel_pstate i active_mode och powersave scaling governor

[root@desktop ~]# cat /sys/devices/system/cpu/intel_pstate/status active [root@desktop ~]# cpupower frequency-info analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 800 MHz - 5.30 GHz available cpufreq governors: performance powersave current policy: frequency should be within 800 MHz and 5.30 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 3.40 GHz (asserted by call to kernel) boost state support: Supported: yes Active: yes

https://docs.kernel.org/admin-guide/pm/intel_pstate.html#oper...

Edit: Är ganska säker på att jag sett frekvensen på enstaka kärnor nå 5,4 GHz i Windows. Kanske är med "boost"?

Permalänk
Medlem

Operativsystemet kan ha kontroll över vilka P-states och C-states som körs. Windows "performance"-läge ser exempelvis till att det hela tiden körs P0, vilket innebär full boost clock. Det kan i sin tur innebära hög spänning beroende på vad du kör för frekvens, justeringar på spänning och/eller pf-kurvor, samt LLC.

Det är inte nödvändigtvis så att spänningen blir farligt hög, men det kanske inte är något man vill köra 24/7. Dessutom tar det ju bort hela poängen med att ha en CPU som dynamiskt kan reglera spänning och frekvens. Om man tänkt köra så kan man ju lika gärna ställa in en fast spänning i BIOS, och förmodligen hamna på en lägre spänning.

Du kan ju testa köra Geekbench (det är rätt bra eftersom det köra lite olika laster) och kolla spänningen i HWinfo (ställ även in HWinfo på ett kortare uppdateringsintervall än default). Då ser du hur spänningen ändras. Ställ sen in Windows i performance-läget och testa igen.

Det här blir ju som sagt lite jobbigt i Linux då det inte verkar finnas något sätt att bekräfta att allt funkar som avsett.