Criar programa para controlar CPU Skylake e Kaby Lake [RESOLVIDO]

1. Criar programa para controlar CPU Skylake e Kaby Lake [RESOLVIDO]

FurretUber
FurretUber

(usa Ubuntu)

Enviado em 17/01/2017 - 15:02h

Boa tarde

Eu gostaria de desenvolver um programa com interface bem simples que permita o controle das velocidades dos processadores Skylake e Kaby Lake. Como agora eles usam uma forma diferente de configuração, que é por porcentagem da frequência máxima, não se pode configurar esses processadores como os anteriores (cpufrequtils não funciona).

Conforme o conteúdo de https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt, eu consegui realizar as configurações através do terminal como root, mas eu queria fazer um programinha com uma interface gráfica que permitisse essa configuração. Como eu posso fazê-lo?

Eu sei alguma coisa de C# e GTK#, será que só com isso seria o suficiente, ou eu teria de escrever scripts que são executados pelo programa em si? Obviamente, o programa tem de rodar com autorizações de root.

Obrigado.


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 17/01/2017 - 19:24h

Se - por exemplo - a configuração consiste basicamente em escrever conteúdo em um arquivo (tipo: echo 1 > /sys/kernel/arquivo), não é preciso de script bash. Pode usar os recursos da própria linguagem de leitura/escrita de arquivos.

Quanto ao acesso root, no aplicativo você só faz a validação do usuário (pegando o valor de $UID por exemplo), se não for root exibe uma mensagem e pede para o usuário executar a aplicação com o sudo.

C# é mais focado em ambiente da M$, mas com o GTK# você pode construir uma interface bacana. O Banshee (music player) foi feito em C# + GTK#
--
Linux Counter: #596371

3. Re: Criar programa para controlar CPU Skylake e Kaby Lake [RESOLVIDO]

FurretUber
FurretUber

(usa Ubuntu)

Enviado em 19/01/2017 - 19:24h

Olá

O programa já consegue ler os parâmetros atuais e consegue alterar a porcentagem da frequência do processador com sucesso. Mas tem um problema, o programa para de funcionar depois de um tempo. Eu usei System.Threading.Timer para fazer um timer que a cada 1000 milissegundos atualiza qual é a porcentagem mínima e máxima, já que outros programas e configurações podem influenciar. Mas ele para de funcionar do nada.

Essa coisa de saber se ele está executando como super usuário eu não sei como fazer ainda, nunca precisei escrever um programa que precisasse de permissões diferentes das do usuário atual. Mas vou providenciar isso. A coisa mais crítica, no momento, é fazer com que ele não pare de funcionar depois de um tempo.


4. Re: Criar programa para controlar CPU Skylake e Kaby Lake [RESOLVIDO]

FurretUber
FurretUber

(usa Ubuntu)

Enviado em 26/01/2017 - 15:59h

Após muitas visitas ao site StackOverflow, o download e instalação do flatpak e MonoDevelop 6 e muita leitura de documentações, consegui resolver o problema de o programa parar de funcionar.

Eu tentei usar System.Threading.Timer e System.Timers.Timer para criar um temporizador que atualizasse a interface. Eu não sabia que a GLib tinha um temporizador próprio, muito mais fácil de usar e que não trava.

A interface não para mais de funcionar, então ele finalmente está funcionando direito. Está simplíssimo, o dado não é salvo para a próxima inicialização (teria de mexer em outras configurações), mas cumpre o que promete. Pretendo enriquecê-lo um pouco mais, mostrando a frequência mínima e máxima do processador configuradas, talvez até a opção para ativar e desativar o modo turbo (pena que no meu i3 não posso comprovar isso).

Coisas mais avançadas, como ícones de notificação, já devem ser bem mais complicados, então no momento não tenho essa meta.

O nome escolhido para o programa foi SklPorcent.


5. Re: Criar programa para controlar CPU Skylake e Kaby Lake [RESOLVIDO]

FurretUber
FurretUber

(usa Ubuntu)

Enviado em 30/01/2017 - 00:06h

Após tentar aprimorar o programa, aprendi a utilizar melhor as possibilidades do C# e do MonoDevelop. Obviamente, procurei de forma desesperada na internet como fazer os aprimoramentos desejados. Eu peguei os exemplos e os desfigurei para atender a minha necessidade.

Consegui criar um ícone na área de notificação para o programa, levei um baile para fazê-lo funcionar. O problema era uma linha de código mal posicionada. Aprendi que pode-se separar o código fonte do C# em mais de um arquivo .cs, o que diminuiu grandemente o caos que existia no único arquivo gigante com absolutamente tudo.

O programa SklPorcent pode ser visto na área de notificação, ao lado do Discord e da data nessa imagem: http://i.imgur.com/4xifHOd.png Como pode-se ver, ele fica extremamente discreto, não atrapalhando o uso do computador.

Aqui: http://i.imgur.com/zvMFRzy.png pode-se ver o que aparece quando é passado o mouse por cima do ícone do programa. Ele apresenta o máximo e o mínimo configurados.

Por fim, essa imagem: http://i.imgur.com/hvYVTOp.png apresenta o programa restaurado, após um clique com o botão esquerdo do mouse. A interface do programa pode ser vista, onde são apresentadas informações relevantes a respeito do processador (infelizmente, mudar a política do processador ainda não foi implementado).

Eu testei o programa em um computador que não tem processador Skylake ou Kaby Lake (processador Banias) e, após um segundo (o tempo para a primeira leitura), o programa dá crash, como o esperado no momento. Vou adicionar uma mensagem avisando que não é compatível sem dar crash, mas para o Lenovo Ideapad 310 com processador i3-6100U, ele está fazendo tudo o que eu precisava. Para i5 ou i7, precisa-se adicionar o controle sobre o modo turbo, mas como só tenho o i3-6100U, não tenho como testar isso. :(

Obs.: O endereço de onde obtive o ícone, que obviamente não será o final: http://members.jcom.home.ne.jp/mozunatto/rivi_02.png






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts