Forum Linux.général Undercloking sous Linux - Pourquoi ya pas ?

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
4
1
août
2013

Bonjour,

Utilisateur confirmé de linux, je me retrouve confronté à un problème étrange :
J'ai un vieux Dell Core 2 sous windows 7, que j'underclock avec un petit freeware (RmClock, bien connu). En le passant sous linux (debian), je cherche à reproduire la chose et… et bien c'est impossible. Après pas mal de recherches, la seul solution est phctool, un patch pour le kernel, mais je ne suis pas parvenu à le faire fonctionner chez moi, et de toute façon, vue la quantité de python derrière, c'est une solution bien compliquée.

N'existe t-il aucune interface pour modifier à la volée (ou même après reboot !) les voltages, en étant root ? Est ce windows qui est trop "permissif" ?

Je gagne tout de même plus de 15°c avec cette astuce, et ne suis probablement pas le seul intéressé de pouvoir regarder un film sans avoir un grille pain sur les genoux, sans compter la batterie et le bruit.

Si vous avez une idée ou une piste, je suis preneur !

Oxedion

  • # cpufreq ou cpupower

    Posté par  (site web personnel) . Évalué à 3.

    J'ai pas de solution mais quelques pistes.

    Dans mes souvenirs il existait un outil cpufreq qui permet de modifier le comportement du processeur. Après je ne sais pas s'il change le voltage mais il pouvait brider le CPU sur une fréquence plus faible et donc chauffe moins.

    J'ai fouillé sur la Fedora 19 que j'ai sous la main et j'ai vu que le paquet était devenu kernel-tools et que la commande devenait cpupower (https://docs.fedoraproject.org/en-US/Fedora/19/html/Power_Management_Guide/Core_Infrastructure.html)

    À explorer sous Debian parce que là j'ai que du Suse ou du Fedora mais ça existe cpufreq ou cpupower à rechercher…

    • [^] # Re: cpufreq ou cpupower

      Posté par  (site web personnel) . Évalué à 1.

      Dans le bios (peut-être, ça dépend du bios) ou une option du kernel (c'est sûr).
      Tu peux demander au bios ou au kernel (me demande plus l'option ni où la mettre) de mettre ton cpu en mode "powersave" ce qui fait qu'il n'ira pas plus haut que sa fréquence minimale (http://www.mjmwired.net/kernel/Documentation/cpu-freq/governors.txt)

      Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.

    • [^] # Re: cpufreq ou cpupower

      Posté par  . Évalué à 8. Dernière modification le 01 août 2013 à 18:21.

      Changement de la fréquence : :en:Dynamic frequency scaling

      cpufreq existe toujours, dans le noyau c'est contrôlé par les paramètres d'ACPI (documentation). Si tu utilises un noyau de distribution c'est très probablement activé.

      L'utilitaire cpufreq-info donne la liste des fréquences supportées par ton processeur et le gouverneur utilisé. Il existe plusieurs gouverneurs : performance (fréquence au max), powersave (fréquence au min), ondemand (choix dynamique par le noyau en fonction de la charge) et userspace (fréquence choisie par l'utilisateur). Tu peux changer le gouverneur ou directement choisir la fréquence avec cpufreq-set. Note qu'il y avait eu une étude de faite qui avait montré qu'en général mettre la fréquence au minimum n'économisait pas d'énergie ; en effet il est plus efficace que le processeur fasse ce qu'il a à faire très rapidement (fréquence élevée) puis entre en état de veille, plutôt que de devoir rester éveillé plus longtemps à basse fréquence. Pour ta charge spécifique faut tester.

      Anciennement il y avait aussi le « CPU Throttling » (documentation) qui allume/éteint le processeur avec un certain rapport cyclique (p.ex. 50 % du temps) mais sur mon proc. récent ce n'est pas supporté.

      Changement de la tension : :en:Dynamic voltage scaling

      Il existe des patches : http://www.eecg.toronto.edu/~tamda/csc2228/ Mais apparemment rien dans la branche principale du noyau.

  • # CPu- VOltage

    Posté par  . Évalué à 2.

    Merci pour ces retours. L'idée est effectivement de jouer à la fois sur la fréquence et le voltage.
    Lorsque l'on regarde un film ou qu'on code, le CPU peut être à 600mhz, cela n'a pas d’impact et économise la batterie et on évite les pics qui consomment. Lorsque l'on navigue ou travail sous Latex/Office, il faut effectivement toute la puissance pour économiser la batterie.

    Sous RmClok, il est possible de régler le voltage pour chaque échelon de fréquence.
    Par exemple, pour mon Core 2 cadencé à 2.6Ghz, je suis descendu à :

    SuperLFM :
    6x, 0.9v
    Normal :
    6x, 0.95v
    7x, 0.9625v
    8x, 0.9875v
    9x, 1.0v
    10x, 1.0v

    D'ailleurs, il y a une option de Throttling, et je me demandais bien à quoi ça servait, merci pour l'info.

    Il doit être possible d'aller encore plus loin, je n'ai pas eu le courage de chercher entre le 10x et le SuperLFM, mais ces deux valeurs (10x et 6x SLFM) sont les optimums stable, après cela j'ai des BSOD sous windows. Le voltage de référence pour les 10x est de 1.25V. J'ai donc gagné 0.25V, sois 20% de gain en terme de dissipation thermique. Pour les opérations lourdes (calcul, compilation, etc), je conserve toute la puissance, et la machine chauffe nettement moins.

    cpufreq se base sur les tables standards des processeurs, qui ne descendent pas aussi bas. Quand à mon BIOS… c'est un Dell, pas grand chose de réglable, comme beaucoup de portables malheureusement.

    Je vais regarder du côté des patchs.

    • [^] # Re: CPu- VOltage

      Posté par  . Évalué à 3. Dernière modification le 04 août 2013 à 15:25.

      J'ai essayé d'installer phctool sur ma machine (i7-2600K, linux-3.10.4, gentoo). Le code est dans les dépôts, ça compile le module (sys-power/phc-intel-0.3.2.12.1-r5) et les outils utilisateurs (sys-power/phctool-0.5.2.2-r2). J'arrive à insérer le module (rmmod -f acpi_cpufreq mperf processor && modprobe hpc-intel mperf processor), mais l'application utilisateur me dit processeur non reconnu. Je n'ai donc pas plus de chance que toi pour la tension.

      Quant au changement de fréquence, il est probable que tu utilises déjà le gouverneur « ondemand » sans le savoir (c'est du moins le cas sur une Debian 7.1 fraichement installée sur mon netbook de test), donc la fréquence est déjà aussi basse que possible en l'absence de charge.

  • # le bruit du grille-pain

    Posté par  . Évalué à 1. Dernière modification le 01 août 2013 à 20:47.

    Je gagne tout de même plus de 15°c avec cette astuce, et ne suis probablement pas le seul intéressé de pouvoir regarder un film sans avoir un grille pain sur les genoux, sans compter la batterie et le bruit.

    Quid de la saleté/poussière ?
    Bon ça va rien changer pour la batterie, mais au cas où…

    "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

    • [^] # Re: le bruit du grille-pain

      Posté par  . Évalué à 1.

      La pâte thermique surtout je pense. Mais l'encrassement est effectivement la première cause d'échauffement. Le soucis, c'est que certaines machines ont le même système pour core i3/i5/i7. Ca vas pour le i3, ca chauffe pour le i5, et le i7 est un vrai grille pain.

  • # comme mes amis plus haut, cpufreq et ses derivés

    Posté par  . Évalué à 1.

    ainsi pour core2Duo E8400 (2Ghz à bas regime, 3Ghz à haut regime)
    peut regler ses performances "on-demand" meme sur une tour sans question de batterie,
    juste que ca sert à rien de faire tourner le processeur à fond si c'est pas utile.

    cpufreq, et pour les ordinateurs portable laptop-mode peuvent aider à gerer tout ca.
    on ne se pose plus la question de regler un voltage ou une frequence, on laisse faire le systeme et il fait ca tres bien.

    • [^] # Re: comme mes amis plus haut, cpufreq et ses derivés

      Posté par  . Évalué à 3.

      on ne se pose plus la question de regler un voltage ou une frequence, on laisse faire le systeme et il fait ça très bien.

      Justement, c'est cet automatisme que je remet en question. La preuve par l'exemple, en modifiant les voltages de référence, j'ai gagné 15°c. Le système se cale sur les voltages de référence constructeurs, ce qui est parfait pour le commun des mortels, mais pour des questions d'économie d'énergie ou d'échauffement, il devrait être possible de baisser ces voltages temps que cela ne ralentis pas la machine. Je pense que les voltages minimums vont varier d'un proc à l'autre, mais on doit pouvoir descendre pas mal, et proposer un petit soft qui test les voltages pour toi. (Kernel Panic = Pas bon).

      • [^] # Re: comme mes amis plus haut, cpufreq et ses derivés

        Posté par  . Évalué à 1.

        heu, avec cpufreq sur mon core2duo du portable, j'ai 4 reglages :
        - conservateur
        - economie d'energie
        - à la demande
        - performances

        et sur une frequence nominale de 2Ghz, il me propose les frequences
        2Ghz, 1,6Ghz, 1,2Ghz, 800Mhz

        si je demande à me mettre en mode powersave
        ca fait tourner mon proc à 800Mhz, tout le temps

        ca me suffit bien comme ralentissement.

        maintenant tu peux aller explorer les reglages de cpufreq ou tu definis les 4 niveaux possibles,
        voire carrement dans le code de cpufreq pour savoir comment il fait pour mettre le processeur à cette frequence/voltage là

        et si sa methode par defaut ne te plait pas, tu peux toujours forké le code, le modifier pour proposer des reglages plus fin.

        • [^] # Re: comme mes amis plus haut, cpufreq et ses derivés

          Posté par  . Évalué à 2.

          je viens de passer du core2duo à un core i3,
          l'applet cpufreqd me dit que je peux choisir entre les valeurs suivantes :

          0,930Ghz
          1,07Ghz
          1,20
          1,33
          1,47
          1,60
          1,73
          1,87
          2,00
          2,13
          2,27
          2,40
          2,53Ghz

          et sinon en reglage automatique, j'ai toujours le choix entre
          conservative
          performance
          economique
          à la demande

  • # Commentaire supprimé

    Posté par  . Évalué à -5.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # et sinon, l'underclocking, c'est un truc de vieux

    Posté par  . Évalué à 4.

    bah oui, ca date de l'epoque des frequences/voltages fixes, ou il fallait modifier, comme pour loverclock, les reglages dans le bios pour faire tourner la machine moins vite.

    depuis intel et amd ont fait des processeurs adaptatifs, avec le speedstep, le C1E et d'autres technos.
    ces technos sont prises en charge par les outils linux precedemment cités.

    • [^] # Re: et sinon, l'underclocking, c'est un truc de vieux

      Posté par  (site web personnel) . Évalué à 2.

      Le monsieur se trompe dans son titre, il ne veut pas faire que de "l'underclocking", il veut surtout faire de "l'undervolting".
      C'est à dire que pour chaque step de fréquence, il réduit les mV. Après il plafonne également la fréquence mais ce n'est qu'un plus.
      Et "l'undervolting" sous Linux je cherche encore depuis 10 ans.

      Un très bon tuto qui explique bien ce que c'est (valable que pour les core 2 duo) http://www.overclock.net/t/308654/undervolt-laptop-guide-intel-c2d-t7500 . Mais c'est pour Windows

      Rien qu'en undervolting sur mon R61/T9500 je gagne 15° à pleine charge, sans pour autant "underclocker" ni affecter la stabilité…

      Is it a Bird? Is it a Plane?? No, it's Super Poil !!!

      • [^] # Re: et sinon, l'underclocking, c'est un truc de vieux

        Posté par  . Évalué à 2.

        en fait, autant je comprend comment le bios peut gerer les tensions et les horloges,
        autant j'ai du mal à comprendre comment un logiciel peut simplement aller modifier les tensions de la carte mere

      • [^] # Re: et sinon, l'underclocking, c'est un truc de vieux

        Posté par  . Évalué à 1.

        Pourtant dans le noyau, dans Device Drivers, il y a une rubrique Voltage and Current Regulator support :

        CONFIG_REGULATOR:
        
        Generic Voltage and Current Regulator support.
        
        This framework is designed to provide a generic interface to voltage
        and current regulators within the Linux kernel. It's intended to
        provide voltage and current control to client or consumer drivers and
        also provide status information to user space applications through a
        sysfs interface.
        
        The intention is to allow systems to dynamically control regulator
        output in order to save power and prolong battery life. This applies
        to both voltage regulators (where voltage output is controllable) and
        current sinks (where current output is controllable).
        
        This framework safely compiles out if not selected so that client
        drivers can still be used in systems with no software controllable
        regulators.
        
        If unsure, say no.
        
        --- Voltage and Current Regulator Support
        [ ]   Regulator debug support (NEW)
        [ ]   Provide a dummy regulator if regulator lookups fail (NEW)
        < >   Fixed voltage regulator support (NEW)
        < >   Virtual regulator consumer support (NEW)
        < >   Userspace regulator consumer support (NEW)
        < >   Analog Devices AD5398/AD5821 regulators (NEW)
        < >   Fairchild FAN53555 Regulator (NEW)
        < >   Intersil ISL6271A Power regulator (NEW)
        < >   Maxim 1586/1587 voltage regulator (NEW)
        < >   Maxim 8649 voltage regulator (NEW)
        < >   Maxim 8660/8661 voltage regulator (NEW)
        < >   Maxim MAX8952 Power Management IC (NEW)
        < >   Maxim MAX8973 voltage regulator  (NEW)
        < >   National Semiconductors LP3971 PMIC regulator driver (NEW)
        < >   National Semiconductors LP3972 PMIC regulator driver (NEW)
        [ ]   TI/National Semiconductor LP8720/LP8725 voltage regulators (NEW)
        < >   TI LP8755 High Performance PMU driver (NEW)
        < >   TI TPS51632 Power Regulator (NEW)
        < >   TI TPS6236x Power Regulator (NEW)
        < >   TI TPS65023 Power regulators (NEW)
        < >   TI TPS6507X Power regulators (NEW)
        

        On doit donc pouvoir faire quelque chose avec tout ça.

        • [^] # Re: et sinon, l'underclocking, c'est un truc de vieux

          Posté par  . Évalué à 2.

          oui, donc c'est bien parce que les composants electroniques sont pilotables qu'on peut le faire.

          et depuis, on a fait des pilotes noyaux pour gerer ca,
          mais on prefere utiliser cpufreq qui gere tension et frequence pour nous.

          • [^] # Re: et sinon, l'underclocking, c'est un truc de vieux

            Posté par  (site web personnel) . Évalué à 3.

            C'est exactement ça.
            Notons que le système d'exploitation utilise la table de BIOS pour de nombreuses opérations élémentaires et peut y passer pour l'ACPI et la gestion du courant dans le matériel en question. C'est souvent le pont entre le matériel et le noyau dans de nombreux cas.

            • [^] # Re: et sinon, l'underclocking, c'est un truc de vieux

              Posté par  . Évalué à 1.

              Effectivement, je me suis trompé dans le titre. Il s'agit bien d'undervolting, pas d'underclocking.

              Je suis parvenu à dialoguer avec la MSR de mon CPU, et à réduire le voltage pour la fréquence max. Cependant, avec les nouveaux kernels, pas moyen d'avoir le voltage du CPU, lm-sensors ne donne que la temp, et l'astuce du acpi_enforce_resources=lax ne marche pas ! Je ramène demain un appareil pour mesurer la conso à la prise, je dois pouvoir voir les fluctuations si ca marche réellement.

              J'ai eu des Kernel Panics en réduisant trop le Vid, c'est bon signe _^

              Si ca marche, je code un outil pour qu'on ai enfin un équivalent d'RmClock sous notre OS préféré.

              • [^] # Re: et sinon, l'underclocking, c'est un truc de vieux

                Posté par  . Évalué à 3.

                Ca fonctionne :

                CPU : E8500 3.16Ghz. Consommation système complet au repos : 48W.

                Benchmark : sysbench --num-threads=2 --test=cpu --cpu-max-prime=40000 run

                Capture à la prise, fréquence de rafraichissement 2s.

                - Test1, voltage natif :
                Fid : 73 : 3.16Ghz
                Vid : 38 : UCpu = 800 mV + vid*12.5 mV = 1275 mV

                Temps total : 26.44s

                Valeurs relevées à la prise durant le test : 75W 77W 79W 78W

                - Test2, voltage modifié :
                A noter que ce voltage est arbitraire, je peut descendre encore bien plus bas.
                Fid : 73 : 3.16Ghz
                Vid : 30 : UCpu = 800 mV + vid*12.5 mV = 1175 mV

                Temps total : 26.42s

                Valeurs relevées à la prise durant le test : 68W 69W 70W 69W

                Gain d'environ 12.5% donc. Cela ne fonctionne que pour la fréquence max pour le moment, il faut que je mette la main sur les adresses msr qui contrôlent la fréquence et que je test avec des valeurs plus faible de vid (jusqu'au plantage).

  • # Turion Power Control

    Posté par  . Évalué à 2.

    pour les processeurs AMD.

    Seulement.

    • [^] # Re: Turion Power Control

      Posté par  . Évalué à 1.

      Bien vu. Je n'ai pas d'AMD sous la main, mais si création d'outil il y a, il faudra l'étendre aux AMD. Merci pour l'info.

  • # Powerclamp

    Posté par  (site web personnel) . Évalué à 2.

    Il y aurait bien powerclamp, qui est une petite merveille pour faire ce que tu veux : https://lwn.net/Articles/528131/
    Elle demande au CPU de dormir pendant X% du temps, même si il aurait des trucs à faire.

    Par contre, je crains que ton processeur soit trop vieux pour être supporté (à vérifier).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.