Ich habe ein Programm, das Benchmarks liefert, aber es ist betriebssystemunabhängig und kann die CPU-Frequenz nicht lesen. Das Testprogramm wird über ein Skript gesteuert. Wenn ich die CPU-Frequenz angebe, kann das Programm den Durchsatz der Operationen berechnen.
Ich dachte, ich würde die aktuelle CPU-Frequenz angeben (für die genaueste Angabe), aber es scheint, dass der Wert für Root schreibgeschützt ist und für andere nicht zugänglich ist:
$ 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
Alsls -l
zeigt an,cpuinfo_cur_freq
ist das einzige Objekt mit dieser bestimmten ACL. Die anderen Einträge sind meist0444
(0644
für einige).
Warum ist die aktuelle CPU-Frequenz für Root schreibgeschützt und für andere nicht zugänglich?
Antwort1
Sie sollten lesen können
scaling_cur_freq
Um die Frage zu beantworten:
Es scheint, dass das Lesen
cpuinfo_cur_freq
kommuniziert direkt mit der Hardware oder - je nach Implementierung - der Firmware, was offensichtlich nicht ohne Privilegien zugelassen werden sollte.