web-dev-qa-db-fra.com

Comment surveiller la tension VCore

J'ai construit un nouveau PC et, étant bon marché, je n'ai pas acheté Windows. J'essaie donc Linux pour la première fois avec Ubuntu 16.04. Je comprends que lm-sensors est la méthode standard pour accéder aux informations que je veux, qui ne concerne que les tensions, en particulier VCore. J'aimerais pouvoir surveiller la tension du VCore pour faciliter l'overclocking (ma carte mère ne permettant pas une tension fixe, je ne peux pas surveiller les tensions dangereuses avec le VID automatique).

J'ai les packages appropriés suivants installés: lm-sensors (version 1: 3.4.0-2), libsensors4 (version 3: 4.0-2), libsensors-applet-plugin0 (version 3.0.0 + git5-0.1ubuntu1 )

Le processeur est i5-6600K et la carte mère est ASRock Z170A-X1/3.1

J'ai exécuté sensors-detect et le seul capteur détecté était coretemp. Cela a été ajouté à mes modules et cela fonctionne bien pour les températures. Voici un exemple de sortie de capteurs en cours d'exécution:

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +47.0°C  (high = +80.0°C, crit = +100.0°C)
Core 0:         +46.0°C  (high = +80.0°C, crit = +100.0°C)
Core 1:         +47.0°C  (high = +80.0°C, crit = +100.0°C)
Core 2:         +34.0°C  (high = +80.0°C, crit = +100.0°C)
Core 3:         +45.0°C  (high = +80.0°C, crit = +100.0°C)

J'aimerais atteindre le comportement standard (plus d'informations), tel que montré ici ou ici .

Je soupçonne qu'un capteur supplémentaire est nécessaire pour accéder aux tensions, car la plupart des guides indiquent sensors-detect, ce qui entraîne l'ajout de modules autres que coretemp. Dans mon cas, il y avait un dispositif inconnu découvert, qui pourrait être un capteur ...

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): y
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor/ITE'...               No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               Yes
Found unknown chip with ID 0xd121
    (logical device B has address 0x290, could be sensors)
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor/ITE'...               No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               No
Trying family `ITE'...                                      No

J'ai utilisé dmesg pour regarder l'adresse mentionnée 0x290 dans le tampon en anneau du noyau et j'ai trouvé cette ligne, qui est pour la plupart incompréhensible pour moi, mais je mets ici pour votre information.

[    0.206389] system 00:00: [io  0x0290-0x029f] has been reserved

De plus, j'ai d'autres applications dont les informations sont limitées. Par exemple, I-NEX, qui ressemble un peu à CPU-Z sous Windows (suggère quelque chose de mieux si vous le connaissez), est limité à des éléments de base de CPUID tels que la chaîne d'id du processeur, la lithographie, le type de socket, les fonctionnalités prises en charge, etc. Rien est signalé pour le CPU VCore et d'autres champs. La vitesse d'horloge, la vitesse BLCK, le multiplicateur et le turboclock sont indiqués comme valeurs de stock, quels que soient les paramètres d'overclockage de mon BIOS (incorrect car je suis en mesure de surveiller la vitesse du processeur avec le Moniteur système). Des outils comme celui-ci reposent probablement tous sur des capteurs lm, ce qui, à mon avis, est à la base de mon problème ici, ce n'est donc pas trop surprenant.

J'ai aussi essayé d'utiliser CPU-Z avec WINE, mais la situation est essentiellement la même: affiche les informations de base sur le CPUID, mais pas les informations plus détaillées sur les capteurs que je recherche. Cela se produit après qu'une erreur se soit produite lors de l'initialisation: code d'erreur 0x2 (2).

Est-ce juste une carte mère non supportée? Si oui, un support sera-t-il jamais ajouté? Existe-t-il un moyen d'ajouter manuellement un support? Existe-t-il une alternative aux capteurs lm? Existe-t-il un autre moyen, par exemple, de se rapprocher manuellement du niveau matériel et d’accéder à la tension d’une manière ou d’une autre via bash? Devrais-je essentiellement essayer de réinstaller différentes versions/distributions? Si oui, vais-je nécessairement perdre cette installation et ses fichiers?

3
not-a-robot

Wine ne vous laissera pas atteindre le ring0 de votre processeur. L'endroit où les instructions de privilège peuvent être exécutées.

Linux fournit un module de noyau msr.ko qui permet de lire/écrire des registres spécifiques aux modèles décrits dans les manuels du développeur de logiciels Intel Architectures. Idem avec AMD dans son BIOS et le guide du développeur du noyau

https://software.intel.com/en-us/articles/intel-sdm

http://developer.AMD.com/resources/developer-guides-manuals/

Pour le 6600K, vous pouvez heureusement trouver des informations sur la tension dans ses fiches techniques. PCI sera interrogé pour obtenir des valeurs.

Vous programmez des algorithmes à l'aide des registres MSR et des feuilles de l'instruction CPUID pour obtenir les rapports Turbo du processeur et vous estimerez le BCLK avec deux lectures TSC, échantillonnées sur un intervalle.

La fréquence turbo est le produit du ratio et de l'horloge de base

J'ai programmé CoreFreq qui, à côté de vcore, affichera les fréquences et les états inactifs. N'hésitez pas à creuser les algorithmes dans le code source:

https://github.com/cyring/CoreFreq

2
CyrIng