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?
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.
/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.