NEWS
Tinkerboard All-In-One mit piVCCU CPU Taktung zu hoch ?
-
Hi,
auf meinem produktiven Tinkerboard habe ich das auch beobachtet, ich habe da auch einen Verdacht, kam aber bisher nicht dazu, das weiter anzuschauen.
Kann es sein, dass du mehr als einen USB Stick mit UART angeschlossen hast (z.B. CUL Stick)?
Was bei mir kurzfristig geholfen hat, war das Umstellen auf den Governor "schedutil" (in der /etc/default/cpufrequtils). Leider wird die Datei bei Armibian Updates wieder überschrieben…
Viele Grüße
Alex
-
Ich habe jetzt mal den scaling_governor ondemand ausprobiert, da läuft die CPU immer noch auf maximum. Alle Scripte ausgeschaltet, brachte auch keine Verbesserung.
Nur wenn ich powersave auswähle, geht der Takt auf 600 Mhz zurück und die Temperatur sinkt bereits:
Command:
echo -powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
(edit) gerade Deinen posting gesehen, ja es hängt eine USB Device ( CUL ) dran. Aber keine weiteren.
Nach einem reboot steht der scaling_governor wieder auf conservative und die CPU läuft auf maximum. Umstellung auf ondemand bringt keine Verbesserung, nur auf powerserve.
-
powersave ist nicht ideal, der schaltet dauerhaft auf 600Mhz und geht nie hoch. schedutil basiert auf der berechneten Load vom Kernel und ist (sofern er denn vorhanden ist) die beste Wahl.
Wegen dem USB Stick: Ich vermute, dass du in der der /proc/interrupts beim Device dwc2_hsotg:usb1 eine irre hohe Zahl an Interrupts hast. Kann das sein? Ich vermute, dass da irgendein Bug im USB Treiber oder sogar im Chip ist, welcher für eine sehr hohe Zahl an soft interrupts sorgt.
Viele Grüße
Alex
-
Wenn in ondemand eingestellt habe, ist eigentlich kaum load auf dem system und dennoch läuft die CPU auf maximum. So langsam streiche ich die segel.
-
@Alex schedutil war ein guter Tipp. Die Tacktung geht deutlich zurück ( momentan 816 MHz) und auch die Temperatur sinkt. Wie kann ich das einstellen, dass es beim nächsten booten erhalten bleibt ?
Habe so etwas im inet gefunden:
> Einfach /etc/init.d/skeleton kopieren und anpassen (bei "start" den passenden Befehl angeben) und dann mit update-rc.d oder von hand nach /etc/rcx.d verlinken.
VG Uwe
-
Schreib es in die /etc/default/cpufrequtils
Musst du aber immer mal wieder kontrollieren, bei manchen Armbian Updates wird das leider überschrieben.
Könntest du deine /proc/interrupts hier posten? Wenn ich da Gemeinsamkeiten entdecke, würde ich das die Tage mal im Armbian Forum abladen, vielleicht wissen die was da zu tun ist.
Viele Grüße
Alex
-
Reicht dir das ?
cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 17: 194920 795423 141237 143056 GIC-0 29 Level arch_ti mer 18: 0 0 0 0 GIC-0 30 Level arch_ti mer 21: 0 0 0 0 GIC-0 104 Level rk_time r 22: 0 0 0 0 GIC-0 183 Level arm-pmu 23: 0 0 0 0 GIC-0 184 Level arm-pmu 24: 0 0 0 0 GIC-0 185 Level arm-pmu 25: 0 0 0 0 GIC-0 186 Level arm-pmu 26: 0 0 0 0 GIC-0 34 Level ff25000 0.dma-controller 27: 0 0 0 0 GIC-0 35 Level ff25000 0.dma-controller 28: 0 0 0 0 GIC-0 32 Level ffb2000 0.dma-controller 29: 0 0 0 0 GIC-0 33 Level ffb2000 0.dma-controller 30: 128893 0 0 0 GIC-0 64 Level dw-mci 31: 82676 0 0 0 GIC-0 65 Level dw-mci 32: 0 0 0 0 GIC-0 68 Level ff10000 0.saradc 34: 0 0 0 0 GIC-0 94 Level ff14000 0.i2c 35: 0 0 0 0 GIC-0 95 Level ff15000 0.i2c 36: 0 0 0 0 GIC-0 96 Level ff16000 0.i2c 37: 0 0 0 0 GIC-0 97 Level ff17000 0.i2c 39: 13553 0 0 0 GIC-0 88 Level ff19000 0.serial 40: 449 0 0 0 GIC-0 89 Level ttyS2 43: 7 0 0 0 GIC-0 69 Level rockchi p_thermal 44: 5 0 0 7288 GIC-0 59 Level eth0 45: 0 0 0 0 GIC-0 60 Level eth0 46: 295 0 0 0 GIC-0 56 Level ehci_hc d:usb3 47: 102973 152101265 0 0 GIC-0 57 Level ff54000 0.usb, dwc2_hsotg:usb1 48: 0 0 0 0 GIC-0 55 Level ff58000 0.usb, ff580000.usb, dwc2_hsotg:usb2 49: 6180 0 0 0 GIC-0 92 Level ff65000 0.i2c 50: 0 0 0 0 GIC-0 93 Level ff66000 0.i2c 54: 0 0 0 0 GIC-0 50 Level ff92000 0.rga 57: 0 0 0 0 GIC-0 47 Level ff93000 0.vop 58: 0 0 0 0 GIC-0 48 Level ff94000 0.vop 60: 0 0 0 0 GIC-0 135 Level ff98000 0.hdmi 66: 0 0 0 0 GIC-0 38 Level ffa3000 0.gpu 67: 0 0 0 0 GIC-0 39 Level ffa3000 0.gpu 68: 1 0 0 0 GIC-0 40 Level ffa3000 0.gpu 82: 0 0 0 0 rockchip_gpio_irq 4 Level rk808 83: 0 0 0 0 rockchip_gpio_irq 5 Edge GPIO Key Power 371: 0 0 0 0 rk808 5 Edge RTC ala rm IPI0: 0 0 0 0 CPU wakeup interrupts IPI1: 0 0 0 0 Timer broadcast interrupts IPI2: 578319 16448 395298 433155 Rescheduling interrupts IPI3: 1697 2425 3611 281 Function call interrupts IPI4: 0 0 0 0 CPU stop interrupts IPI5: 2038 2166 1292 1332 IRQ work interrupts IPI6: 0 0 0 0 completion interrupts Err: 0
ich sehe gerade da fehlt was, wie kann ich das komplett anzeigen ? oder fängt das wirklich mit 17: an ?
-
Ja, danke.
Die Zeile hier ist die interessante:
47: 102973 152101265 0 0 GIC-0 57 Level ff54000 0.usb, dwc2_hsotg:usb1
Irgendwas im dwc2_hsotg läuft gewaltig schief, so viele Interrupts dürfte es nicht geben.
Viele Grüße
Alex
-
Ja, danke.
Die Zeile hier ist die interessante:
47: 102973 152101265 0 0 GIC-0 57 Level ff54000 0.usb, dwc2_hsotg:usb1
Irgendwas im dwc2_hsotg läuft gewaltig schief, so viele Interrupts dürfte es nicht geben.
Viele Grüße
Alex `
:shock: …und damit hast du meine absolut rudimentären Linux Kenntnisse überfordert....
scheint ja etwas mit dem CUL Adapter auf USB 1 zu tun zu haben... Funktioniert aber einwandfrei.
Veile Grüße
Uwe
-
Vereinfacht ausgedrückt: Ein Interrupt ist ein Signal von Hardware (hier USB Controller) zum Prozessor in Richtung: "Hallo! Hier gibt es was zu tun". Da man nicht immer prüfen muss, ob was zu tun ist, sondern einfach den Befehl "Mach was" bekommt, kann man recht resourcenschonend programmieren.
Hier ist das Problem aber, dass diese Interrupts auftreten, obwohl die meiste Zeit nichts zu tun ist. Und das dürfte ein Bug sein. Entweder im Kernel oder in der Hardware.
Und diese Interrupts verhinden vermutlich auch, dass die CPU runtergetacktet von ondemand runtergetacktet wird, weil es dort als Event für anstehende Arbeit interpretiert wird.
Also ein bißchen wie im Hotel, wenn du immer auf die Glocke haust, der Portier aus der Hinterkammer kommt und dann sagst, ist doch nichts, ich wollte nur mal auf die Glocke hauen und du das in einer Endlosschleife machst. (Nur das du im dem Beispiel vermutlich irgendwann rausgeschmissen wirst. )
Ich schau mir das die Tage noch etwas genauer an und schiebe das dann Richtung Armbian oder Kernel Issue Tracker.
Viele Grüße
Alex
-
Boah Alex, SUPER erklärt . Das verstehe sogar ich in meinem biblischen Alter
keine Ahnung ob das was damit zu tun hat aber im CuxD finde ich folgende Syslog-Messages:
Nov 30 14:36:25 homematic-ccu2 daemon.warn cuxd[215]: use CUX2801001:11.CMD_QUERY_RET=1 to activate CUX2801001:11.CMD_RETL command! Nov 30 14:36:25 homematic-ccu2 daemon.warn cuxd[215]: use CUX2801001:12.CMD_QUERY_RET=1 to activate CUX2801001:12.CMD_RETS command! Nov 30 14:36:25 homematic-ccu2 daemon.warn cuxd[215]: use CUX2801001:12.CMD_QUERY_RET=1 to activate CUX2801001:12.CMD_RETL command! Nov 30 14:36:25 homematic-ccu2 daemon.warn cuxd[215]: use CUX2801001:13.CMD_QUERY_RET=1 to activate CUX2801001:13.CMD_RETS command! Nov 30 14:36:25 homematic-ccu2 daemon.warn cuxd[215]: use CUX2801001:13.CMD_QUERY_RET=1 to activate CUX2801001:13.CMD_RETL command! Nov 30 14:36:25 homematic-ccu2 daemon.warn cuxd[215]: use CUX2801001:14.CMD_QUERY_RET=1 to activate CUX2801001:14.CMD_RETS command! Nov 30 14:36:25 homematic-ccu2 daemon.warn cuxd[215]: use CUX2801001:14.CMD_QUERY_RET=1 to activate CUX2801001:14.CMD_RETL command! Nov 30 14:36:25 homematic-ccu2 daemon.warn cuxd[215]: use CUX2801001:15.CMD_QUERY_RET=1 to activate CUX2801001:15.CMD_RETS command! Nov 30 14:36:25 homematic-ccu2 daemon.warn cuxd[215]: use CUX2801001:15.CMD_QUERY_RET=1 to activate CUX2801001:15.CMD_RETL command! Nov 30 14:36:25 homematic-ccu2 daemon.warn cuxd[215]: use CUX2801001:16.CMD_QUERY_RET=1 to activate CUX2801001:16.CMD_RETS command! Nov 30 14:36:25 homematic-ccu2 daemon.warn cuxd[215]: use CUX2801001:16.CMD_QUERY_RET=1 to activate CUX2801001:16.CMD_RETL command! Nov 30 14:36:30 homematic-ccu2 daemon.info cuxd[215]: INIT 'xmlrpc_bin://127.0.0.1:12010' 'hm-rpc.1' Nov 30 14:38:39 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:38:39 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:41:12 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:41:12 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:46:17 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:46:17 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:48:49 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:48:49 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:53:54 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:53:54 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:56:27 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:56:27 homematic-ccu2 daemon.err cuxd[215]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 14:56:27 homematic-ccu2 daemon.warn cuxd[215]: disable events to 127.0.0.1:12010
Ich habe jetzt mal das CUX2801001 Gerät gelöscht, war eine FB / Taste mit einem Script aus dem HM Forum, was ich aber nicht benutze.
VG Uwe
-
Noch eine Info, jetzt steht im CuxD Syslog etwas zu ReGaHss :
Nov 30 15:33:30 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallGetValue: CallXmlrpcMethod failed [iseXmlRpc.cpp:1455] Nov 30 15:33:30 homematic-ccu2 local0.err ReGaHss: Error: IseHssDP::ReadValue: CallGetValue failed; sVal = 0 [iseDOMdpHSS.cpp:130] Nov 30 15:33:53 homematic-ccu2 user.warn kernel: [ 295.233498] RTL8723BS: nolinked power save leave Nov 30 15:33:54 homematic-ccu2 user.warn kernel: [ 296.810863] RTL8723BS: nolinked power save enter Nov 30 15:34:34 homematic-ccu2 daemon.err cuxd[217]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 15:34:34 homematic-ccu2 daemon.err cuxd[217]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 15:34:56 homematic-ccu2 user.warn kernel: [ 358.247271] RTL8723BS: nolinked power save leave Nov 30 15:34:57 homematic-ccu2 user.warn kernel: [ 359.818954] RTL8723BS: nolinked power save enter Nov 30 15:35:05 homematic-ccu2 user.err rfd: Parameterset MASTER not found Nov 30 15:35:05 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute result isFault; method =getParamsetDescription Params = {"KEQ1022655:2","MASTER"} result= [faultCode:-3,faultString:"Unknown paramset"] [iseXmlRpc.cpp:2641] Nov 30 15:35:05 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallGetParamsetDescription: CallXmlrpcMethod failed [iseXmlRpc.cpp:2421] Nov 30 15:35:59 homematic-ccu2 user.warn kernel: [ 421.271161] RTL8723BS: nolinked power save leave Nov 30 15:36:00 homematic-ccu2 user.warn kernel: [ 422.842038] RTL8723BS: nolinked power save enter Nov 30 15:37:02 homematic-ccu2 user.warn kernel: [ 484.270581] RTL8723BS: nolinked power save leave Nov 30 15:37:03 homematic-ccu2 user.warn kernel: [ 485.841216] RTL8723BS: nolinked power save enter Nov 30 15:37:07 homematic-ccu2 daemon.err cuxd[217]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 15:37:07 homematic-ccu2 daemon.err cuxd[217]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 15:38:05 homematic-ccu2 user.warn kernel: [ 547.262734] RTL8723BS: nolinked power save leave Nov 30 15:38:06 homematic-ccu2 user.warn kernel: [ 548.832967] RTL8723BS: nolinked power save enter Nov 30 15:39:08 homematic-ccu2 user.warn kernel: [ 610.255004] RTL8723BS: nolinked power save leave Nov 30 15:39:09 homematic-ccu2 user.warn kernel: [ 611.832127] RTL8723BS: nolinked power save enter Nov 30 15:39:39 homematic-ccu2 daemon.err cuxd[217]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 15:39:39 homematic-ccu2 daemon.err cuxd[217]: sendbinrpc(127.0.0.1:12010) - write() Connection refused Nov 30 15:40:01 homematic-ccu2 cron.info crond[77]: crond: USER root pid 772 cmd /bin/sh /usr/local/addons/hconnectvpn/checkaccount.sh >> /dev/null Nov 30 15:40:12 homematic-ccu2 user.warn kernel: [ 674.856761] RTL8723BS: nolinked power save enter
-
Ich schau mir das die Tage noch etwas genauer an und schiebe das dann Richtung Armbian oder Kernel Issue Tracker. `
Hi,
habe grade bei Armbian einen Patch dafür abgeladen: https://github.com/armbian/build/pull/847
Damit läuft bei mir jetzt auch der ondemand Scheduler und taktet brav auf 816MHz runter, was bei mir realistisch zum Workload ist.
Viele Grüße
Alex
-
ist auch schon gemerged!
Danke
Rainer
-
Hallo,
ich habe das gleiche Problem mit dem Tinkerboard.
Allerdings ist es bei mir so, dass die CPU nicht mehr runtertaktet, seit ich Bluetooth einsetze.
Hab den ebenfalls auf Schedutil gestellt und nun gehts.
Wie komme ich an den Patch ran?
Ich habe das Armbian Debian Stretch next (Kernel Linux tinkerboard 4.13.16-rockchip #19)
Ist eigentlich Debian Stretch mit Kernel 4.4 besser für iobroker?
Grüße
-
Hi,
gibt zwei Möglichkeiten an den Patch ranzukommen:
-
Warten bis zum nächsten Armbian Release, dann kann man den Kernel per apt updaten.
-
Armbian Build Umgebung aufsetzen und Kernel selber bauen und die deb Packages manuell einspielen
Der Kernel 4.4 ist beim Tinkerboard kritisch, zumindest wenn man piVCCU verwenden will: Bei Rockchip und/oder Asus haben sie irgendwas reingepatcht, was verhindert, dass man Kernel Module bauen kann (ich vermute mal nicht mit Absicht) und ohne Kernel Module kann piVCCU einfach nicht funktionieren wegen den Anfordungen für den Betrieb des Funkmoduls.
Viele Grüße
Alex
-
-
Dann bleib ich bei Debian Stretch 4.13..
Gibts eigentlich einen Grund, warum in dem All-In-One-Image Ubuntu statt Debian genutzt wurde?
-
Hi,
beim piVCCU Image gibt es zwei Gründe:
-
Ubuntu ist bei Armbian das Default System für das Tinkerboard.
-
Ubuntu ist mein persönlicher Favorit und läuft auf allen meinen Servern (und ja, das ist extrem subjektiv und ich möchte damit keinen Religionskrieg anfachen )
Als ich das Image für piVCCU rausgebracht habe, war es leider noch so, dass Armbian für das Tinkerboard keine aktuellen Kernel Header bereitgestellt hatte und der einzige gangbare Weg für die Header war, selber ein Image mit der Build Umgebung zu bauen. Seit Armbian 5.35 ist das glücklicherweise nicht mehr der Fall. Aber damals hat das dann dafür gesorgt, dass Homoran eigentlich keine andere Möglichkeit hatte, als mein Image zu nehmen und darauf aufzubauen um das All-In-One zu bauen.
Viele Grüße
Alex
-
-
Also Ubuntu ist eigentlich auch mein Favorit und läuft auch bei mir auf dem Server
Nur auf dem Tinkerboard hatte ich Debain Stretch installiert.
Ich frage eigentlich deshalb, weil ich auf dem Tinkerboard kein Bluetooth verwenden kann siehe: http://forum.iobroker.net/viewtopic.php … 81#p104121
Ich musste einen BT-Dongle anschließen, um BT nutzen zu können.
Daher war die Frage, ob BT bei Ubuntu vielleicht funktioniert…
Hast du mal getestet?
Grüße
-
Bei mir ist es eigentlich umgekehrt.
Ich mag (mochte) Ubuntu gar nicht. Mag sein, dass es daran lag, dass ich zu der Anfangszeit von ioBroker fast gar kein Linux kannte und es schon mit der Grundinstallation von nodejs immer wieder Probleme gab.
Es mussten Symlinks angelegt werden, die Pfade waren anders…..
Aber wie Alex schon schrieb. für Rock64 und Tinkerboard gibt es Armbian nur auf Basis von Ubuntu.
Diesmal läuft allerdings alles out of the box
Das Tinker OS (auf Debian basierend) lief auch ohne Probleme (getestet mit 1.6 und1.8), war allerdings ziemlich groß, da mit grafischer Oberfläche.
Gruß
Rainer