У меня есть программа, которая предоставляет бенчмарки, но она не зависит от ОС и не умеет считывать частоты ЦП. Тестовая программа управляется скриптом. Если я указываю частоту ЦП, то программа может рассчитать пропускную способность операций.
Я думал, что укажу текущую частоту процессора (для наиболее точного считывания), но, похоже, это значение доступно только для чтения root и недоступно для других:
$ 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
Какls -l
шоу,cpuinfo_cur_freq
единственный объект с этим конкретным ACL. Остальные записи в основном0444
(0644
для некоторых).
Почему текущая частота процессора доступна только для чтения пользователю root, а для других пользователей доступ закрыт?
решение1
Вы должны уметь читать
scaling_cur_freq
Чтобы ответить на вопрос:
Кажется, что чтение
cpuinfo_cur_freq
взаимодействует напрямую с оборудованием или — в зависимости от реализации — с прошивкой, что, очевидно, не должно быть непривилегированным.