Tengo un programa que proporciona puntos de referencia, pero es independiente del sistema operativo y no sabe cómo leer las frecuencias de la CPU. El programa de prueba se controla mediante un script. Si proporciono la frecuencia de la CPU, entonces el programa puede calcular el rendimiento de las operaciones.
Pensé en proporcionar la frecuencia actual de la CPU (para una lectura más precisa), pero parece que el valor es de solo lectura para root y no tiene acceso para otros:
$ 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
muestra,cpuinfo_cur_freq
es el único objeto con esa ACL en particular. Las otras entradas son en su mayoría0444
(0644
para algunos).
¿Por qué la frecuencia actual de la CPU es de solo lectura para root y no tiene acceso para otros?
Respuesta1
Deberías poder leer
scaling_cur_freq
Para responder a la pregunta:
Parece que leer
cpuinfo_cur_freq
se comunica directamente con el hardware o, según la implementación, con el firmware, lo que obviamente no debería permitirse sin privilegios.