CPU Load for RevPi connect +

Topics about the Software of Revolution Pi
Post Reply
Manikandan_pilz
Posts: 29
Joined: 31 Mar 2022, 16:10
Answers: 0

CPU Load for RevPi connect +

Post by Manikandan_pilz »

hi,
In My Project , I am using RevPi connect + [32GB].
I have Node-red and Codesys running in my hardware.
My CPU is running with the load average above 6.5 all the time.
As RevPi connect+ is 4 core processor . I presume CPU load is 4.0 means CPU load is at 100%, Please do correct me if I am wrong.
  • I was wondering why my Average Load is always above 6.25 ? even when the Codesys at just above 55% and Node-red is at 4% all the time ? Please do refer the top command response below
  • What is the equivalent value of Load average value for the RevPi connect + if the CPU load is 100% ?
  • What is ' pl011_pio_tx' . this also consumes nearly 19% of my CPU load, I have RevPi DIO in my project , Is it ok to disable 'pl011_pio_tx' command , Can you please help me disabling this service ?
top - 18:40:00 up 2 days, 2:20, 2 users, load average: 6.48, 6.25, 6.27
Tasks: 151 total, 1 running, 100 sleeping, 0 stopped, 0 zombie
%Cpu(s): 11.8/22.0 34[|||||||||||||||||||||||||||||||||| ]
KiB Mem : 947620 total, 299456 free, 256628 used, 391536 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 615560 avail Mem
scroll coordinates: y = 1/151 (tasks), x = 1/12 (fields)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1769 root 20 0 63552 56316 4308 S 56.2 5.9 1702:09 codesyscontrol.
159 root -51 0 0 0 0 I 19.6 0.0 596:43.30 pl011_pio_tx
79 root -51 0 0 0 0 S 8.5 0.0 260:58.43 irq/56-dwc_otg_
77 root -51 0 0 0 0 S 5.9 0.0 178:12.41 irq/56-dwc_otg
78 root -51 0 0 0 0 S 3.9 0.0 118:39.77 irq/56-dwc_otg_
160 root -40 0 0 0 0 S 3.3 0.0 102:39.65 piControl Uart
8551 pi 20 0 266788 159776 38632 S 2.6 16.9 31:47.92 node-red
31 root -2 0 0 0 0 S 2.0 0.0 51:39.84 ktimersoftd/2
39 root -2 0 0 0 0 S 2.0 0.0 56:20.39 ktimersoftd/3
161 root -39 0 0 0 0 D 2.0 0.0 58:48.62 piControl I/O
1729 root 20 0 10644 4068 3564 S 2.0 0.4 53:32.43 codesysedge.bin
1987 root 20 0 74124 23220 9136 S 1.6 2.5 54:12.30 python3
10960 root 20 0 0 0 0 I 1.6 0.0 0:00.44 kworker/u8:1-ev
157 root -51 0 0 0 0 S 1.3 0.0 38:39.00 irq/81-uart-pl0
9335 pi 20 0 8312 3340 2848 R 1.3 0.4 7:06.09 top
158 root -51 0 0 0 0 I 1.0 0.0 32:17.76 pl011_pio_rx
9 root 20 0 0 0 0 S 0.7 0.0 12:24.42 ksoftirqd/0
10 root -2 0 0 0 0 S 0.7 0.0 48:39.36 ktimersoftd/0
23 root -2 0 0 0 0 S 0.7 0.0 14:01.91 ktimersoftd/1
24 root 20 0 0 0 0 S 0.7 0.0 16:11.01 ksoftirqd/1
40 root 20 0 0 0 0 S 0.7 0.0 11:46.96 ksoftirqd/3
10910 root 20 0 0 0 0 I 0.7 0.0 0:02.26 kworker/u8:0-ev
32 root 20 0 0 0 0 S 0.3 0.0 16:14.07 ksoftirqd/2
1618 root 20 0 28624 1308 1188 S 0.3 0.1 7:30.59 rngd
9313 pi 20 0 11668 3788 3072 S 0.3 0.4 0:31.77 sshd
1 root 20 0 28016 5972 4816 S 0.0 0.6 0:07.02 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.15 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
11 root -2 0 0 0 0 I 0.0 0.0 3:30.07 rcu_preempt
12 root -2 0 0 0 0 I 0.0 0.0 0:00.01 rcu_sched
13 root -2 0 0 0 0 S 0.0 0.0 0:00.00 rcub/0
14 root -2 0 0 0 0 S 0.0 0.0 1:49.05 rcuc/0
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswork
16 root rt 0 0 0 0 S 0.0 0.0 0:00.00 posixcputmr/0
17 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1
20 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
21 root rt 0 0 0 0 S 0.0 0.0 0:00.00 posixcputmr/1
22 root -2 0 0 0 0 S 0.0 0.0 2:23.35 rcuc/1
27 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/2
28 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/2
29 root rt 0 0 0 0 S 0.0 0.0 0:00.00 posixcputmr/2
30 root -2 0 0 0 0 S 0.0 0.0 1:38.33 rcuc/2
35 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/3
36 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/3
37 root rt 0 0 0 0 S 0.0 0.0 0:00.00 posixcputmr/3
38 root -2 0 0 0 0 S 0.0 0.0 1:26.17 rcuc/3
43 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kdevtmpfs
44 root -51 0 0 0 0 I 0.0 0.0 0:00.02 sync_hw_clock
45 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
46 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_tasks_kthre
47 root -51 0 0 0 0 S 0.0 0.0 0:04.18 irq/17-3f00b880
Your Valuable input highly appreciated.

Best Regards,
Mani
kjkoster
Posts: 87
Joined: 12 Feb 2022, 10:42
Answers: 2

Re: CPU Load for RevPi connect +

Post by kjkoster »

Dear Mani,

I cannot help you with the problem much, but I can give you some background. It's a bit of a ramble, sorry. :)

The definition of UNIX load is a bit hazy, but it does not reflect CPU load in the way that you assume in your post. The original intention being to say something about things like I/O and memory load too. The way it was explained to me is that it represents the number of runnable processes at any given time. So a load of 6 means that at any given time you have 6 runnable processes, running on CPU or waiting for a CPU to become available. You have 4 cores, which theoretically a load of 4 is no issue and above that may signify an issue. Now with those cores not being actual CPU's and virtualisation and a bunch of other modern CPU inventions, high UNIX load is only an indication and does not mean you have a problem (sorry).

Your idea to disable useless processes is a good one, but I suspect that these are all part of the codesys suite and I think you will find your control system stops working (I don't run codesys, so I cannot confirm). A high UNIX load may not be a problem at all, if your system can make all its timings comfortably.

To experiment, you can simply use the kill command to stop that process. Best do it in a safe state, so you don't lose any limbs to this experiment.

That said, if your timings work well and there are no issues with your control system, maybe load 6+ is just a sign everything works well? For what it's worth, I run my control systems on Python in Docker. I see a load of just over 4. I see no timeouts and everything works reliably for me.

Kees Jan
Manikandan_pilz
Posts: 29
Joined: 31 Mar 2022, 16:10
Answers: 0

Re: CPU Load for RevPi connect +

Post by Manikandan_pilz »

Hello Kees Jan,

thanks a lot for your detailed explanation, like you side, I do see some timing issues with this CPU Load. looks like it's affecting on the OPC UA communication. I have OPC UA Server in Codesys and node-red has both OPC UA server and client.
the communication between Codesys and Node-red happens through OPC UA. sometime the codesys not receiving the signal form Node-red.

also, as a time goes, the RAM usage is getting increased. increases in RAM would contribute the signal lost between Codesys and node-red ?

Is there any any Plan for Reveloution Pi
  • Higher CPU capacity models ?
  • Higher RAM models ?
  • Is there any chance to have a plug and play RAM upgradation feature for the upcoming models ?
Best Regards,
Mani
u.biakoup
KUNBUS
Posts: 182
Joined: 14 Apr 2022, 13:04
Answers: 2

Re: CPU Load for RevPi connect +

Post by u.biakoup »

Hello Manikandan_pils,
I am coming back to some of your questions.
The process "pl011_pio_tx" is a subprocess that is responsible for the data exchange between the modules and RevPi. This requires about 20% of the CPU resources
Image
there is nothing you can configure about this behavior.
Is there any any Plan for Reveloution Pi
Higher CPU capacity models ?
Higher RAM models ?
Is there any chance to have a plug and play RAM upgradation feature for the upcoming models ?
I recommand you the RevPi connect S (with compute module 4S) , which has better feature than Connect+( with compute module 3+)
Image.
https://revolutionpi.com/new-s-series-and-se-series/

Best Regards

Ulrich Kouatang Biakoup | Technical Support
Attachments
2023-01-18 11_59_17-RevPi S_SE series based on Raspberry Pi Compute Module 4S und 17 weitere Seiten .png
2023-01-18 11_59_17-RevPi S_SE series based on Raspberry Pi Compute Module 4S und 17 weitere Seiten .png (131.88 KiB) Viewed 1272 times
image-20220516-072747.png
image-20220516-072747.png (8.76 KiB) Viewed 1272 times
Post Reply