Warum ist die aktuelle CPU-Frequenz für root schreibgeschützt?

853
jww

Ich habe ein Programm, das Benchmarks liefert, aber das Betriebssystem agnostisch und kann nicht die CPU-Frequenzen lesen. Das Testprogramm wird durch ein Skript gesteuert. Wenn ich die CPU-Frequenz eingebe, kann das Programm den Durchsatz der Vorgänge berechnen.

Ich dachte, ich würde die aktuelle CPU-Frequenz angeben (für die genaueste Ablesung), aber es scheint, dass der Wert für root schreibgeschützt ist und für andere kein Zugriff:

$ 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 

Wie ls -lgezeigt, cpuinfo_cur_freqist das einzige Objekt mit dieser bestimmten ACL. Die anderen Einträge sind meistens 0444( 0644für einige).

Warum ist die aktuelle CPU-Frequenz für Root schreibgeschützt und für andere nicht zugänglich?

1
Ist die Datei `/ sys / devices / system / cpu / cpu0 / online` vorhanden? Andernfalls unterstützt Ihr System bestimmte Aktionen für diesen bestimmten Kern nicht (einige Architekturen hängen von cpu0 ab, daher können Sie sie nicht offline schalten usw.). Die yellowbox-Warnung finden Sie hier: http://www.cyberciti.biz/faq/debian-rhel-centos-redhat-suse-hotplug-cpu/#more-3555. Wenn die Berechtigungen für cpu1 nachsichtiger sind, ist es sehr wahrscheinlich, dass das Problem für diesen Kern spezifisch ist. Frank Thomas vor 8 Jahren 0
@Frank - es scheint, dass die Datei nicht existiert: *** `cat: / sys / devices / system / cpu / cpu0 / online: Keine solche Datei oder ein solches Verzeichnis` ***. jww vor 8 Jahren 0
Das bedeutet, dass der Kern gesperrt ist und das System niemanden ändern lässt. In den meisten Fällen handelt es sich bei den Dateien in / sys / devices / um kaum Dateien, da sie Daten aus dem laufenden Zustand der Box lesen, jedoch nicht generell steuern. Frank Thomas vor 8 Jahren 0

1 Antwort auf die Frage

1
Hydranix

Sie sollten lesen können

scaling_cur_freq 

Um die Frage zu beantworten:

Es scheint das Lesen

cpuinfo_cur_freq 

kommuniziert direkt mit der Hardware oder - je nach Implementierung - der Firmware, die offensichtlich nicht privilegiert sein darf.

Quelle

Danke @Hydranix. Die Maschine, auf der ich teste, hat EFI und nicht das BIOS. Die anderen Geräte, an denen ich häufig teste, sind IoT-Gadgets wie die von BananaPi's und BeagleBone. Einige von ihnen erzeugen falsche Ergebnisse mit *** `scaling_cur_freq` ***. Beispielsweise erzeugt mein [LeMaker HiKey] (http://www.amazon.com/dp/B019O3QTSA) (ARM64) mit zwei Cortex-A53s (acht Kerne), die mit 1,2 GHz arbeiten, den Wert "***" 432000` ***. Und mein [BananaPi Pro] (http://www.amazon.com/dp/B00RD86QPA) mit einem Cortext-A7, der mit 1 GHz läuft, erzeugt einen Wert von "600000". jww vor 8 Jahren 0
@ jww: Egal ob BIOS, EFI oder OFW. Der Punkt ist, dass der Wert _ von der Firmware erhalten wird, anstatt eingerichtet zu werden, an die Firmware gesendet zu werden. grawity vor 8 Jahren 0
Bearbeitet, um Fehlinterpretationen zu reduzieren. Hydranix vor 8 Jahren 0
Nochmals vielen Dank @Hydranix. Der Versuch, den Skalierungswert zu verwenden, führt zu schrecklichen Ergebnissen. Sie sind völlig unabhängig von der angegebenen CPU-Geschwindigkeit, unter der diese Prozessoren verkauft werden. Sogar "scaling_max_freq" *** macht keinen Sinn. Um das Ganze noch schlimmer zu machen, gibt es keine Manpage für *** `cpuinfo` *** oder ***` cpufreq` ***, daher bin ich mir nicht sicher, wie der Wert verwendet werden soll. Alle meine Suchanfragen führen zurück zu "nur X und verwende den Skalierungsfaktor" (und der Skalierungsfaktor wird nicht erklärt). jww vor 8 Jahren 0
cpufreq - https://www.kernel.org/doc/Documentation/cpu-freq/ Hydranix vor 8 Jahren 0