Por que o / sys / devices / system / cpu / cpu0 / cpufreq / scaling_setspeed não é modificável pelo sudo emacs?

1

Gostaria de editar /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed para alterar seu conteúdo de 800000 para 1600000.

  1. Eu primeiro tentei com o emacs

    $ sudo emacs -nw /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
    

    No emacs eu mudei o valor para 1600000 no arquivo, e quando eu salve as alterações, o buffer de mensagem diz:

    Saving file /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed...
    Wrote /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
    

    Mas depois que eu saio do emacs e leio o arquivo novamente, o valor ainda é 800000

  2. Então eu tento de outra maneira

    $ sudo less /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
    

    em que eu pressionei v para invocar o editor padrão, que é nano, e então eu altere o valor. Depois que eu sair do nano e menos, e verificar o arquivo novamente, o arquivo foi alterado com sucesso.

Eu me pergunto por que o primeiro caminho não funciona enquanto o segundo funciona?

Estou executando o Ubuntu 16.04 em um Thinkpad T400. Obrigado.

    
por Tim 25.01.2018 / 23:10

2 respostas

2

Dos comentários:

When Emacs saves a file, it renames the old file so that it becomes a backup file, and then creates a new file with the original name. I don't know what happened in your case, and why Emacs didn't complain, but Emacs is clearly the wrong tool for this. – Johan Myréen

A ferramenta certa seria qualquer coisa que apenas substituísse o arquivo original (ou até mesmo anexasse a ele), em vez de tentar renomear o arquivo antigo.

Lembre-se: nada sob /sys é um arquivo real e persistente. Eles são todos os parâmetros do kernel e informações de status, apresentados na forma de arquivos. Você não deve poder movê-lo, renomeá-lo ou excluí-lo.

Havia comandos chamados cpufreq-info e cpufreq-set para manipular essas configurações; em versões mais recentes, os comandos podem agora (ou em breve) ser cpupower frequency-info e cpupower frequency-set , respectivamente.

    
por 26.01.2018 / 17:54
0

Como mencionado nos comentários, o método convencional para definir a velocidade de 1600 MHz é:

echo 1600000 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

Para verificar o efeito, use:

$ cd /sys/devices/system/cpu/cpu0/cpufreq/
$ paste <(ls *) <(cat *) | column -s $'\t' -t
affected_cpus                             0
cpuinfo_max_freq                          3500000
cpuinfo_min_freq                          800000
cpuinfo_transition_latency                4294967295
energy_performance_available_preferences  default performance balance_performance balance_power power 
energy_performance_preference             balance_performance
related_cpus                              0
scaling_available_governors               performance powersave
scaling_cur_freq                          807325
scaling_driver                            intel_pstate
scaling_governor                          powersave
scaling_max_freq                          3500000
scaling_min_freq                          800000
scaling_setspeed                          <unsupported>

Na minha máquina scaling_setspeed não pode ser definido porque tenho um i7-6700HQ. O mesmo acontece na minha terceira geração i7-3630QM.

Então, nessas plataformas, eu definiria scaling_min_freq e scaling_max_freq para o mesmo nível e p_state nunca flutuaria. A mesma configuração que eu provavelmente aplicaria em todas as CPUs em .../cpu0/... a .../cpu7/...

    
por 21.08.2018 / 00:56