Temat: FriendlyARM NanoPi NEO - Monitorowanie i sterowanie ustawieniami CPU

Platforma: FriendlyARM NanoPi NEO
System: OpenWRT 19.07.10

Cześć, chciałbym móc monitorować i zarządzać częstotliwościami na jakich pracuje CPU na NanoPi NEO. Zagadnienia mam następujące:

  1. Monitorowanie CPU

  2. Ustawianie częstotliwości z jaką ma pracować CPU

  3. Zarządzanie scaling_governorami procesora

Ad 1. Próbuję użyć modułu collectd-mod-cpufreq, ale przy wyborze w menuconfig nie widać go. Z tego co zdążyłem znaleźć to nie zgadza mu się TARGET w DEPENDENCIES

Symbol: PACKAGE_collectd-mod-cpufreq [=n]                                                                                                                
  │ Type  : tristate                                                                                                                                         
  │ Prompt: collectd-mod-cpufreq............................... CPU Freq input plugin                                                                         
  │   Location:                                                                                                                                             
  │     -> Utilities                                                                                                                                           
  │ (9)   -> collectd................. Lightweight system statistics collection daemon (PACKAGE_collectd [=y])                                                
  │   Defined at tmp/.config-package.in:145935                                                                                                               
  │   Depends on: (TARGET_x86 [=n] || TARGET_x86_64 [=n] || TARGET_mvebu [=n] || TARGET_ipq806x [=n] || TARGET_armvirt [=n] || TARGET_ipq40xx [=n] || TARGET_brcm2708_bcm2709 [=n]) && PACKAGE_collectd [=y] 
  │   Selects: PACKAGE_librt [=y] && PACKAGE_libpthread [=y] && PACKAGE_libssp [=n] && PACKAGE_libc [=y]                                                      

Czy jest jakaś możliwość dołączenia tego modułu do budowanego obrazu? Czy może użyć innego narzędzia do tego?

Ad 2. Czy jest jakieś miejsce/plik w którym mógłbym na sztywno ustalić częstotliwość pracy CPU?

Ad 3. Odnalazłem miejsce gdzie odblokowuje się governory w kernel_menuconfig, ustawienia mam następujące:

[*] CPU Frequency scaling                                                                                     
[*]   CPU frequency transition statistics                                                                     
      Default CPUFreq governor (performance)  --->                                                            
-*-   'performance' governor                                                                                  
<*>   'powersave' governor                                                                                    
<*>   'userspace' governor for userspace frequency scaling                                                    
<*>   'ondemand' cpufreq policy governor                                                                      
<*>   'conservative' cpufreq governor                                                                         
[ ]   'schedutil' cpufreq policy governor                                                                     
      *** CPU frequency scaling drivers ***                                                                   
<*>   Generic DT based cpufreq driver                                                                         
<*>   Generic ARM big LITTLE CPUfreq driver                                                                   
<*>   Generic probing via DT for ARM big LITTLE CPUfreq driver                                                
< >   CPU frequency scaling driver for Freescale QorIQ SoCs    

Natomiast nie widzę w wypalonym systemie plików odpowiedzialnych za governory (jak niżej). Czego jeszcze może tu brakować?

root@OpenWrt:/# ls -al  /sys/devices/system/cpu/cpufreq/
drwxr-xr-x    2 root     root             0 Apr 16 15:19 .
drwxr-xr-x   10 root     root             0 Jan  1  1970 ..

root@OpenWrt:/# ls -al  /sys/devices/system/cpu/cpu*
/sys/devices/system/cpu/cpu0:
drwxr-xr-x    5 root     root             0 Jan  1  1970 .
drwxr-xr-x   10 root     root             0 Jan  1  1970 ..
-rw-r--r--    1 root     root          4096 Apr 16 15:19 cpu_capacity
-r--------    1 root     root          4096 Apr 16 15:19 crash_notes
-r--------    1 root     root          4096 Apr 16 15:19 crash_notes_size
drwxr-xr-x    2 root     root             0 Apr 16 15:19 hotplug
lrwxrwxrwx    1 root     root             0 Apr 16 15:19 of_node -> ../../../../firmware/devicetree/base/cpus/cpu@0
drwxr-xr-x    2 root     root             0 Apr 16 15:19 power
lrwxrwxrwx    1 root     root             0 Apr 16 15:19 subsystem -> ../../../../bus/cpu
drwxr-xr-x    2 root     root             0 Apr 16 15:19 topology
-rw-r--r--    1 root     root          4096 Apr 16 15:19 uevent

/sys/devices/system/cpu/cpu1:
drwxr-xr-x    5 root     root             0 Jan  1  1970 .
drwxr-xr-x   10 root     root             0 Jan  1  1970 ..
-rw-r--r--    1 root     root          4096 Apr 16 15:19 cpu_capacity
-r--------    1 root     root          4096 Apr 16 15:19 crash_notes
-r--------    1 root     root          4096 Apr 16 15:19 crash_notes_size
drwxr-xr-x    2 root     root             0 Apr 16 15:19 hotplug
lrwxrwxrwx    1 root     root             0 Apr 16 15:19 of_node -> ../../../../firmware/devicetree/base/cpus/cpu@1
-rw-r--r--    1 root     root          4096 Apr 16 15:19 online
drwxr-xr-x    2 root     root             0 Apr 16 15:19 power
lrwxrwxrwx    1 root     root             0 Apr 16 15:19 subsystem -> ../../../../bus/cpu
drwxr-xr-x    2 root     root             0 Apr 16 15:19 topology
-rw-r--r--    1 root     root          4096 Apr 16 15:19 uevent

/sys/devices/system/cpu/cpu2:
drwxr-xr-x    5 root     root             0 Jan  1  1970 .
drwxr-xr-x   10 root     root             0 Jan  1  1970 ..
-rw-r--r--    1 root     root          4096 Apr 16 15:19 cpu_capacity
-r--------    1 root     root          4096 Apr 16 15:19 crash_notes
-r--------    1 root     root          4096 Apr 16 15:19 crash_notes_size
drwxr-xr-x    2 root     root             0 Apr 16 15:19 hotplug
lrwxrwxrwx    1 root     root             0 Apr 16 15:19 of_node -> ../../../../firmware/devicetree/base/cpus/cpu@2
-rw-r--r--    1 root     root          4096 Apr 16 15:19 online
drwxr-xr-x    2 root     root             0 Apr 16 15:19 power
lrwxrwxrwx    1 root     root             0 Apr 16 15:19 subsystem -> ../../../../bus/cpu
drwxr-xr-x    2 root     root             0 Apr 16 15:19 topology
-rw-r--r--    1 root     root          4096 Apr 16 15:19 uevent

/sys/devices/system/cpu/cpu3:
drwxr-xr-x    5 root     root             0 Jan  1  1970 .
drwxr-xr-x   10 root     root             0 Jan  1  1970 ..
-rw-r--r--    1 root     root          4096 Apr 16 15:19 cpu_capacity
-r--------    1 root     root          4096 Apr 16 15:19 crash_notes
-r--------    1 root     root          4096 Apr 16 15:19 crash_notes_size
drwxr-xr-x    2 root     root             0 Apr 16 15:19 hotplug
lrwxrwxrwx    1 root     root             0 Apr 16 15:19 of_node -> ../../../../firmware/devicetree/base/cpus/cpu@3
-rw-r--r--    1 root     root          4096 Apr 16 15:19 online
drwxr-xr-x    2 root     root             0 Apr 16 15:19 power
lrwxrwxrwx    1 root     root             0 Apr 16 15:19 subsystem -> ../../../../bus/cpu
drwxr-xr-x    2 root     root             0 Apr 16 15:19 topology
-rw-r--r--    1 root     root          4096 Apr 16 15:19 uevent

2

Odp: FriendlyARM NanoPi NEO - Monitorowanie i sterowanie ustawieniami CPU

https://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO

Zobacz na ich githubie czego oni używają, bo na wiki się do tego przyznają.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: FriendlyARM NanoPi NEO - Monitorowanie i sterowanie ustawieniami CPU

Cezary, masz może jeszcze jakąś podpowiedź gdzie tego szukać? Widziałem to wiki jeszcze przed napisaniem tego posta, szukałem narzędzia cpu_freq, nie widzę go w menuconfig, nie znalazłem go też jako paczka opkg na wiki openwrt. Zaciągnąłem do siebie repozytorium https://github.com/friendlyarm/friendly … r-v18.06.1 z wersją systemu jaką wrzucili screeny na wiki NanoPi, w menuconfig też nie widzę aby podobne narzędzie było widoczne.

4

Odp: FriendlyARM NanoPi NEO - Monitorowanie i sterowanie ustawieniami CPU

Na samiuśkim wierzchu jest: https://github.com/friendlyarm/friendly … 7e1bd94a13

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: FriendlyARM NanoPi NEO - Monitorowanie i sterowanie ustawieniami CPU

A tu masz seedy konfigów z których ich obrazy powstawały: https://github.com/friendlyarm/friendly … iendlyelec

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6 (edytowany przez marcinwijata 2023-01-09 15:27:49)

Odp: FriendlyARM NanoPi NEO - Monitorowanie i sterowanie ustawieniami CPU

Ok, nadal brakuje chyba jakichś driverów ponieważ skrypt nie znajduje plików z których zamierza pobrać informacje

root@OpenWrt:~# cpu_freq.sh 
Current frequency(KHz):
cat: can't open '/sys/class/thermal/thermal_zone0/temp': No such file or directory
cat: can't open '/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor': No such file or directory
cat: can't open '/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq': No such file or directory
    CPU0 online=1 temp=C governor= freq=sh: invalid number ''
0KHz
cat: can't open '/sys/class/thermal/thermal_zone0/temp': No such file or directory
cat: can't open '/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor': No such file or directory
cat: can't open '/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq': No such file or directory
    CPU1 online=1 temp=C governor= freq=sh: invalid number ''
0KHz
cat: can't open '/sys/class/thermal/thermal_zone0/temp': No such file or directory
cat: can't open '/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor': No such file or directory
cat: can't open '/sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_cur_freq': No such file or directory
    CPU2 online=1 temp=C governor= freq=sh: invalid number ''
0KHz
cat: can't open '/sys/class/thermal/thermal_zone0/temp': No such file or directory
cat: can't open '/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor': No such file or directory
cat: can't open '/sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_cur_freq': No such file or directory
    CPU3 online=1 temp=C governor= freq=sh: invalid number ''
0KHz

dmesg

root@OpenWrt:~# dmesg | grep cpu
[    0.000000] percpu: Embedded 15 pages/cpu s30732 r8192 d22516 u61440
[    0.000000] pcpu-alloc: s30732 r8192 d22516 u61440 alloc=15*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000]     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.001262] /cpus/cpu@0 missing clock-frequency property
[    0.001285] /cpus/cpu@1 missing clock-frequency property
[    0.001301] /cpus/cpu@2 missing clock-frequency property
[    0.001317] /cpus/cpu@3 missing clock-frequency property
[    0.001330] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.180577] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.260714] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.340848] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[    1.937975] cpu cpu0: failed to get clock: -2
[    1.942377] cpufreq-dt: probe of cpufreq-dt failed with error -2

7

Odp: FriendlyARM NanoPi NEO - Monitorowanie i sterowanie ustawieniami CPU

Zobacz w konfigu kernela: https://github.com/friendlyarm/friendly … onfig-4.14  co mają włączone na okoliczność thermal i freq

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: FriendlyARM NanoPi NEO - Monitorowanie i sterowanie ustawieniami CPU

Kernel z którym buduję jest rozszerzony o te opcje dla CPU

> CONFIG_ARM_BIG_LITTLE_CPUFREQ=y
> CONFIG_ARM_DT_BL_CPUFREQ=y
> CONFIG_CPU_SPECTRE=y
> CONFIG_GENERIC_CPU_VULNERABILITIES=y

Dla thermal ustawienia są identyczne jak w tym co podesłałeś

9

Odp: FriendlyARM NanoPi NEO - Monitorowanie i sterowanie ustawieniami CPU

wg np. tego: https://support.xilinx.com/s/question/0 … uage=en_US to byłby problem z niekompletnym wpisem w dtsie. Porównaj czy oni nie dodają innych łatek niż jest w czystym openwrt które łatają dtsa.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10

Odp: FriendlyARM NanoPi NEO - Monitorowanie i sterowanie ustawieniami CPU

Patche nie różnią się pomiędzy moim obrazem v19.07.10, a tym https://github.com/friendlyarm/friendly … -v19.07.1, poza 4 patchami które dodałem do mojego obrazu (303, 304, 305, 306)

001-net-stmmac-snps-dwmac-mdio-MDIOs-are-automatically-r.patch
002-net-stmmac-dwmac-sun8i-Handle-integrated-external-MD.patch
003-net-stmmac-sun8i-Restore-the-compatibles.patch
004-net-stmmac-dwmac-sun8i-fix-allwinner-leds-active-low.patch
020-ARM-dts-sunxi-Restore-EMAC-changes-boards.patch
021-arm-dts-sunxi-h3-h5-Restore-EMAC-changes.patch
022-ARM-dts-sunxi-h3-h5-represent-the-mdio-switch-used-b.patch
025-arm64-dts-allwinner-A64-Restore-EMAC-changes.patch
026-arm64-dts-allwinner-add-snps-dwmac-mdio-compatible-t.patch
027-arm64-dts-allwinner-H5-Restore-EMAC-changes.patch
030-arm64-allwinner-a64-add-Ethernet-PHY-regulator-for-s.patch
031-arm64-Implement-arch_counter_get_cntpct-to-read-the-.patch
040-arm64-dts-allwinner-a64-Add-watchdog.patch
060-ARM-dts-sun8i-add-support-for-Orange-Pi-R1.patch
061-arm-dts-sun50i-support-for-nanopi-neo-plus2-board.patch
080-arm64-allwinner-a64-add-SPI-nodes.patch
081-arm64-dts-allwinner-sun50i-a64-Add-spi-flash-node-fo.patch
100-clocksource-drivers-arch_timer-Workaround-for-Allwin.patch
101-arm64-dts-allwinner-a64-Enable-A64-timer-workaround.patch
201-ARM-dts-sun8i-fix-USB-Ethernet-of-Orange-Pi-R1.patch
202-ARM-dts-sun8i-activate-SPI-on-Orange-Pi-R1.patch
220-ARM-dts-orange-pi-zero-plus.patch
301-orangepi_pc2_usb_otg_to_host_key_power.patch
303-nanopi-neo-enable-usb.patch
304-nanopi-neo-enable-uart1.patch
305-nanopi-neo-enable-i2c.patch
306-nanopi-neo-enable-uart2.patch
310-Revert-ARM-dts-sun7i-Add-BCM53125-switch-nodes-to-th.patch
400-arm64-allwinner-a64-sopine-Add-Sopine-flash-partitio.patch