Tenho um programa que fornece benchmarks, mas é independente do sistema operacional e não sabe ler as frequências da CPU. O programa de teste é conduzido por meio de um script. Se eu fornecer a frequência da CPU, o programa poderá calcular o rendimento das operações.
Pensei em fornecer a frequência atual da CPU (para uma leitura mais precisa), mas parece que o valor é somente leitura para root e sem acesso para outros:
$ ls -Al /sys/devices/system/cpu/cpu0/cpufreq/
total 0
-r--r--r-- 1 root root 4096 Jan 27 23:19 affected_cpus
-r-------- 1 root root 4096 Jan 27 23:19 cpuinfo_cur_freq
-r--r--r-- 1 root root 4096 Jan 27 23:19 cpuinfo_max_freq
-r--r--r-- 1 root root 4096 Jan 27 23:19 cpuinfo_min_freq
...
-rw-r--r-- 1 root root 4096 Jan 27 23:19 scaling_max_freq
-rw-r--r-- 1 root root 4096 Jan 27 23:19 scaling_min_freq
-rw-r--r-- 1 root root 4096 Jan 27 23:19 scaling_setspeed
Comols -l
mostra,cpuinfo_cur_freq
é o único objeto com essa ACL específica. As outras entradas são principalmente0444
(0644
para alguns).
Por que a frequência atual da CPU é somente leitura para root e não tem acesso para outros?
Responder1
Você deveria ser capaz de ler
scaling_cur_freq
Para responder à pergunta:
Parece que a leitura
cpuinfo_cur_freq
comunica-se diretamente com o hardware ou - dependendo da implementação - com o firmware que obviamente não deveria ser permitido sem privilégios.