Habilitando o Controle de Fan(Fan Control) das placas NVidia no Ubuntu 14.04 x64

Iniciado por platao, 09 de Junho de 2015, 23:54

tópico anterior - próximo tópico

platao

Ola, estava dando uma olhada no painel de controle da Nvidia, antigamente havia a opção de, alem do overclock, controlar os fans da placa de video para mais ou para menos pelo painel da nvidia, o nvidia settings.

Pelo que eu li por cima, ainda existe a possibilidade de overclocar a placa no Ubuntu via linha de comando, e tbm o controle dos ventiladores, e controle de fans da placa e uma coisa que pode fazer muita falta principalmente para series anteriores a Maxwell que esquentavam um pouco mais, chegando aos 80 graus nas placas de referencia que nao tinham um dissipador personalizado. Entao vamos trazer de volta essa função!

http://imagizer.imageshack.com/img661/5886/CJqioU.png

Primeiro vamos deixar para quem quiser por ventura, compilar o nvidia-settings para uma nova versao e so adicionar;

sudo apt-get build-dep nvidia-settings

E o sistema se encarrega de buscar as dependencias necessarias.

Vamos baixar do Git Hub entao o aplicativo para controlar as ventoinhas;

https://github.com/MisterPup/Nvidia-Dynamic-Fan-Control

*atenção -> driver usado no tutorial nvidia 349.16

Clicar em download zip no canto direito. Vamos agora instalar as dependencias para ele funcionar;

DEPENDENCIES

python
matplotlib

Install python
   
sudo apt-get install python

Install matplotlib
 
sudo apt-get install python-matplotlib

*lembrando que o controle de fan so funciona nos drivers proprietario ate onde eu sei.
**Nao testei em SLI se finciona ou nao o controle das fans

Agora sera necessario criar um Xorg.conf para podermos editar, vc pode criar esse arquivo de duas formas, indo ate o painel da nvidia em xserver display configuration->save to X configuration file e vc pode ir ate o /etc/X11 e o xorg.conf vai estar la, ou vc pode fazer de uma forma mais "segura";

control+alt+f1

sudo /etc/init.d/lightdm stop

sudo nvidia-xconfig

e vai estar criado, depois para voltar a sessao do ubuntu;

sudo service lightdm restart

ou reinicie.

Va ate o /etc/X11 e veja;

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 352.09  (buildd@lcy01-07)  Thu May 21 09:21:59 UTC 2015

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 349.16  (buildmeister@swio-display-x86-rhel47-06)  Wed Apr  8 00:52:19 PDT 2015

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "BenQ RL2455"
    HorizSync       30.0 - 83.0
    VertRefresh     50.0 - 76.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 750 Ti"
    Option         "Coolbits" "4"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-1"
    Option         "metamodes" "nvidia-auto-select +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Abrao arquivo como root e Clique na "lupa" e procure por;

Section "Device"

De um espaço e coloque como na imagem acima     Option         "Coolbits" "4" e reinicie o sistema.

Agora vc ja vai poder controlar a sua ventoinha, e so selecionar "enable gpu fan settings" e ajustar ao seu gosto. Porem ao reiniciar a maquina as configuraçoes se perdem e o cooler volta a ficar em "auto" ou seja a placa e quem vai decidir os incrementos de velocidade do cooler conforme a demanda da placa.

1 -

Seria interessante, nao deixar ela fixa, ou seja, conforme o sistema detecta que precisa de mais resfriamento, ele ativa um aumento no cooler da palca de video e e isso que nos vamos fazer, conforme a temperatura aumenta colocamos um incremento de 10, 30 40 por cento de aumento de velocidade, e nao uma velocidade fixa como esta. Por isso vamos usar o Nvidia-Dynamic-Fan-Control que baixamos.

A correção de velocidade dos fans no perfil padrao da placa e bastante conservadora.

Agora vamos descompactar o arquivo que baixamos extraia para a sua home, a pasta Nvidia-Dynamic-Fan-Control-master entre nela e procure pelo arquivo;

nvidiafanspeed.py

Dentro dele va ate aproximadamente a linha  186;

def setFanSpeed(self, speed):
        #watch -n0 aticonfig --adapter=0 --od-gettemperature
        #that's the line to get ati fan speed
      process = Popen("nvidia-settings -a [gpu:0]/GPUFanControlState=1 -a [fan:0]/GPUTargetFanSpeed={0}".format(speed), shell=True, stdin=PIPE, stdout=PIPE)
      return

   def setCurve(self, *args, **kwargs):
      self.curve_lock.acquire()
      print "Fan Speed Curve updated"

Vc vai trocar GPUCurrentFanSpeed troque por GPUTargetFanSpeed deixe como esta ai em cima, do contrario nao ira funcionar, dando erro ao aplicar as configs.

http://imagizer.imageshack.com/img912/8457/dqf8B0.png

**atenção -> driver usado no tutorial nvidia 349.16 talvez se vc estiver usando uma versao mais antiga essa correção nao sera necessaria.

Feita a correção, para garantir que nao vai haver problemas de permissao de arquivos, clique com o direito em cima dos arquivos da pasta e em permissoes, de deixe leitura e escrita e executar como um programa.

Vamos testar pelo terminal;

nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan-0]/GPUTargetFanSpeed=20"

teste com outra velocidade;

nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan-0]/GPUTargetFanSpeed=80"

Agora vamos usar o programa Nvidia-Dynamic-Fan-Control para adicionar uma curva de desempenho para o nossos coolers da placa de video;

Va ate a pasta Nvidia-Dynamic-Fan-Control-master execute o arquivo nvidia-gui.py ele ira mostrar um grafico e uma tabela, toda vez que necessitar alterar a curva de performance vc vai terque entrar nesse aplicativo.

http://imagizer.imageshack.com/img661/2565/ooxuB3.png

O sistema so aceita incrementos razoaveis, pode exemplo, ele nao aceita que vc aumente a velocidade de 10 para 80 por exemplo, tem que ser feito paulatinamente, 10 ,15,25,30 e vc vai criando o grafico, aguarde um pouco e clique em "aply" se a velocidade que vc setou esta de acordo, ele vai aplicar imediatamente, do contrario ele vai voltar a velocidade anterior. entao e interessante vc deixar o nvidia settings aberto e ir acompanhando.

Outra coisa interessante e que vc pode criar um script simples para vc nao precisar deixar o programa aberto com a tabela, vc pode criar um script simples assim;

nvidiafan.sh

#!/bin/bash
cd /home/platao/Nvidia-Dynamic-Fan-Control-master ; alltray python nvidia-gui.py

*O programa so starta se vc o chamar dentro da pasta dele, entao cd /home/platao/Nvidia-Dynamic-Fan-Control-master para ir ate o diretorio do executavel python;
**de as permissoes de leitura e escrita e executar como programa

alltray

O que e o alltray?

O alltray vc usa quando vc nao quer que um aplicativo apareça quando iniciar o ubuntu, entao vc coloca alltray antes do executavel, desse modo ele vai iniciar minimizado e nao vai encher o seu saco.

sudo apt-get install alltray -y

Pronto agora e so colocar ele nos aplicativos de sessao, ele vai iniciar silenciosamente e vai manter o cooler na velocidade da tabela que vc definiu e com os incrementos de velocidade tbm definidos na sua tabela.

Agora vc pode rodar alguns benckmarks como o heaven engine para ver se esta tudo funcionando.

http://imagizer.imageshack.com/img537/6504/c4W4AY.png



Platao
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

platao

Vamos brincar agora com o controle de fan da Nvidia !!! ; )

A sugestao agora e nao usar o NvidiaDynamic Fan control, vamos fazer por demanda de programa, por exemplo, eu deixo a maquina em idle** entao o controle dos fans da placa de video fica no automatico, ok.

Agora eu vou usar a placa para rodar um game pesado, e eu quero assumir o controle das fans, entao eu crio um script simples assim;

!/bin/bash

# seto a velocidade que eu quero
nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan-0]/GPUTargetFanSpeed=80"

# programa que vai ser executado, executavel ou alem do executavel tbm  pode ser necessario colocar o caminho completo
snes9x-gtk

#desativo o controle das fans
nvidia-settings -a "[gpu:0]/GPUFanControlState=0"

#sai do script
exit 0

O que vai acontercer? Ao executar o emulador de super nintendo snes9x, os coolers vao operar em 80 por cento da sua capacidade como indicado aqui "[fan-0]/GPUTargetFanSpeed=80"(vc pode diminuir ou aumentar para qualquer valor) e ao terminar a emulação do seu game o controle dos fans volta ao automatico novamente nvidia-settings -a "[gpu:0]/GPUFanControlState=0" .

Entao da apra criar um script para cada game que vc tem e personalizar de acordo com a sua vontade, se o game demanda de processamento vc pode colocar os fans para trabalhar mais rapido se o game e mais leve, vc pode definir umavelocidade mais amena.

Video simples para ilustrar;

https://www.youtube.com/watch?v=gKm9kB4QMsg

\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997