Hallo,
ich hab meine FHEM-Hardware von einem Raspberry Pi 2 auf Raspberry Pi 3 Model B Rev 1.2 upgegradet.
Seit her geht die CPU kaum in den Powersave-mode (governor ondemand; arm_freq 1200; arm_freq_min 300) und läuft fast immer mit 1200Mhz und die cpu-Temperatur liegt bei 55C.
# cpufreq-info -s -m
300 MHz:24.21%, 1.20 GHz:76.79% (1097334)
Laut top war der Verursacher immer ein kworker/*:*
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30424 root 20 0 0 0 0 R 59.8 0.0 6:56.65 kworker/0:3
mit vmstat habe ich gesehen, dass die interrupts und contextswiches auffällig hoch sind:
# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 65472 70968 670996 0 0 0 16 4241 74037 1 4 96 0 0
1 0 0 65472 70968 670996 0 0 0 0 4165 124189 1 3 97 0 0
1 0 0 65696 70968 670996 0 0 0 0 4201 94195 1 3 95 0 0
die Interrups (Nummer-62) werden vom USB-Modul dwc_otg generiert:
cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
16: 0 0 0 0 bcm2836-timer 0 Edge arch_timer
17: 10717775 15824327 18386341 12953704 bcm2836-timer 1 Edge arch_timer
21: 0 0 0 0 bcm2836-pmu 9 Edge arm-pmu
23: 1145260 0 0 0 ARMCTRL-level 1 Edge 3f00b880.mailbox
24: 18191 0 0 0 ARMCTRL-level 2 Edge VCHIQ doorbell
46: 0 0 0 0 ARMCTRL-level 48 Edge bcm2708_fb dma
48: 0 0 0 0 ARMCTRL-level 50 Edge DMA IRQ
50: 0 0 0 0 ARMCTRL-level 52 Edge DMA IRQ
51: 198 0 0 0 ARMCTRL-level 53 Edge DMA IRQ
54: 62934 0 0 0 ARMCTRL-level 56 Edge DMA IRQ
59: 0 0 0 0 ARMCTRL-level 61 Edge bcm2835-auxirq
62: 270129688 0 0 0 ARMCTRL-level 64 Edge dwc_otg, dwc_otg_pcd, dwc_otg_hcd:usb1
83: 2854 0 0 0 ARMCTRL-level 85 Edge 3f804000.i2c
86: 46969 0 0 0 ARMCTRL-level 88 Edge mmc0
92: 4757 0 0 0 ARMCTRL-level 94 Edge mmc1
169: 2 0 0 0 pinctrl-bcm2835 4 Edge gpiolib
170: 0 0 0 0 pinctrl-bcm2835 5 Edge gpiolib
FIQ: usb_fiq
IPI0: 0 0 0 0 CPU wakeup interrupts
IPI1: 0 0 0 0 Timer broadcast interrupts
IPI2: 44003 437362 243619 454199 Rescheduling interrupts
IPI3: 10 35 26 30 Function call interrupts
IPI4: 0 0 0 0 CPU stop interrupts
IPI5: 3786480 99339 105364 87609 IRQ work interrupts
IPI6: 0 0 0 0 completion interrupts
Err: 0
Nach dem Abstecken aller USB-Devices (CUL, GSM-Modem, CO2-Messgerät) viel die Interruprate auf ca. 450/s. Nach Wiederanstecken des CUL stieg die Interruptrate wieder auf 4000/s (wenn man über den CUL sendet waren sogar 9500Int/s).
Nach langem Testen und diversen Versuchen hab ich nun den boot-parameter "dwc_otg.speed=1" (=USB v1.0) in die /boot/cmdline.txt geschrieben und habe einen Teilerfolg!
die Interruprate liegt nun bei 1200/s und mein RP3 geht wieder in den Powersave (300 MHz:80.79%, 1.20 GHz:19.21% , Temp 46C)
leider wird nun mein CO2-Messgerät (Holtek USB-zyTemp idVendor=04d9, idProduct=a052) nun nicht mehr erkannt
# dmesg -T
....
[Thu Aug 2 19:58:30 2018] usb 1-1.4: new low-speed USB device number 5 using dwc_otg
[Thu Aug 2 19:58:30 2018] random: systemd: uninitialized urandom read (16 bytes read)
[Thu Aug 2 19:58:30 2018] systemd[1]: Found ordering cycle on basic.target/start
[Thu Aug 2 19:58:30 2018] systemd[1]: Found dependency on sockets.target/start
[Thu Aug 2 19:58:30 2018] systemd[1]: Found dependency on dbus.socket/start
[Thu Aug 2 19:58:30 2018] systemd[1]: Found dependency on sysinit.target/start
[Thu Aug 2 19:58:30 2018] systemd[1]: Found dependency on raspi-config.service/start
[Thu Aug 2 19:58:30 2018] systemd[1]: Found dependency on remote-fs.target/start
[Thu Aug 2 19:58:30 2018] usb 1-1-port4: attempt power cycle
[Thu Aug 2 19:58:31 2018] fuse init (API version 7.26)
[Thu Aug 2 19:58:31 2018] snd_bcm2835: module is from the staging directory, the quality is unknown, you have been warned.
[Thu Aug 2 19:58:31 2018] i2c /dev entries driver
[Thu Aug 2 19:58:31 2018] usb 1-1.4: new low-speed USB device number 6 using dwc_otg
[Thu Aug 2 19:58:31 2018] usb 1-1.4: new low-speed USB device number 7 using dwc_otg
...
ohne dwc_otg.speed=1 wurde es erkannt:
Jul 29 22:08:06 raspi-fhem kernel: [ 2.412279] usb 1-1.4: new low-speed USB device number 4 using dwc_otg
Jul 29 22:08:06 raspi-fhem kernel: [ 2.540089] random: systemd-sysv-ge: uninitialized urandom read (16 bytes read)
Jul 29 22:08:06 raspi-fhem kernel: [ 2.627505] usb 1-1.4: New USB device found, idVendor=04d9, idProduct=a052
Jul 29 22:08:06 raspi-fhem kernel: [ 2.640352] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jul 29 22:08:06 raspi-fhem kernel: [ 2.653169] usb 1-1.4: Product: USB-zyTemp
Jul 29 22:08:06 raspi-fhem kernel: [ 2.665717] usb 1-1.4: Manufacturer: Holtek
Jul 29 22:08:06 raspi-fhem kernel: [ 2.678137] usb 1-1.4: SerialNumber: 1.40
Jul 29 22:08:06 raspi-fhem kernel: [ 2.733107] hid-generic 0003:04D9:A052.0001: hiddev96,hidraw0: USB HID v1.10 Device [Holtek USB-zyTemp] on usb-3f980000.usb-1.4/input0
Wie ist die Interruprate bei euren CULs? (vmstat 1)
Hat wer eine Idee, wie ich die Interrupts verringere ohne das USB auf Speed 1 zu Schalten?
Gibt es einen Trick, mein CO2-Device unter USB-V1 zu betreiben?
Danke
Didi