Mam program, który zapewnia testy porównawcze, ale jego system operacyjny jest niezależny i nie wie, jak odczytać częstotliwości procesora. Program testowy jest sterowany przez skrypt. Jeśli podam częstotliwość procesora, program może obliczyć przepustowość operacji.
Myślałem, że podam bieżącą częstotliwość procesora (dla najdokładniejszego odczytu), ale wygląda na to, że wartość ta jest tylko do odczytu dla roota i nie ma dostępu dla innych:
$ 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
Jak ls -l
pokazuje, cpuinfo_cur_freq
jest to jedyny obiekt z tą konkretną listą ACL. Pozostałe wpisy to głównie 0444
( 0644
dla niektórych).
Dlaczego obecna częstotliwość CPU jest tylko do odczytu dla roota i nie ma dostępu dla innych?
/sys/devices/system/cpu/cpu0/online
istnieje? jeśli nie, to twój system nie obsługuje niektórych działań na tym konkretnym rdzeniu (niektóre architektury zależą od procesora, więc nie możesz go przełączyć w tryb offline itp.). zobacz ostrzeżenie o żółtym polu tutaj: cyberciti.biz/faq/debian-rhel-centos-redhat-suse-hotplug-cpu/… . Jeśli uprawnienia są łagodniejsze dla procesora cpu1, jest bardzo prawdopodobne, że problem jest specyficzny dla tego rdzenia.cat: /sys/devices/system/cpu/cpu0/online: No such file or directory
.sudo chmod a+r
zmiany uprawnień są w porządku. Widzimy także, że wartości scaling_cur_freq losowo podskakują dookoła - + 10% lub więcej, podczas gdy cpuinfo_cur_freq & / proc / cpuinfo i cpufreq_info są stałe i najwyraźniej poprawne.Odpowiedzi:
Powinieneś być w stanie czytać
Aby odpowiedzieć na pytanie:
Wydaje się, że czytanie
komunikuje się bezpośrednio ze sprzętem lub - w zależności od implementacji - oprogramowaniem układowym, które oczywiście nie powinno być zabronione.
Źródło
źródło
scaling_cur_freq
. Na przykład mój LeMaker HiKey (ARM64), z dwoma Cortex-A53 (osiem rdzeni) pracującymi z częstotliwością 1,2 GHz, wytwarza wartość432000
. A mój BananaPi Pro z Cortext-A7 działającym z częstotliwością 1 GHz wytwarza wartość600000
.scaling_max_freq
nie ma sensu. Co gorsza, nie ma strony podręcznika dlacpuinfo
lubcpufreq
, więc nie jestem pewien, w jaki sposób należy użyć tej wartości. Całe moje wyszukiwanie prowadzi do „po prostu zrób X i użyj współczynnika skalowania” (a współczynnik skalowania nie jest wyjaśniony).