It does it based on “load average”.
Load average, on a unix machine, is the number of processes (ie programs) that can run, but cannot run because they are waiting in line for time on the CPU.
Multi-processing (sometimes called multi-tasking) is like a man who walks while chewing gum. He chews a bit, then walks a bit. If he alternates really quickly, it looks like he is doing them simultaneously. That’s how multitasking works on computers. Imagine he needs to do 5 things that all takes up his full attention, then his load average is 4: One task is being done, on average 4 is always waiting.
The load average on a Linux system is the number of processes waiting for the CPU, as an average over the last 5 minutes. If the system sits idle some of the time, the load average will be below 1.
Systems with multiple CPUs/cores can of course do more than one thing at the same time.
For some odd reason, Linux also considers processes waiting on I/O to be in the “runable queue”, ie they count towards the load average even though they are blocked.
So, apologies for the long explanation, but it comes down to how hard the CPU is working.
If it works very hard, then the system says: We’re going to shut down the real time link, so we don’t make this any worse.
I see you are running a Venus GX. If I recall, that is a single core 600Mhz ARM processor only slightly faster than the original CCGX. And it is known that the load is beginning to rise on the older platforms. So, nothing you are doing wrong, just that the GX is getting on the older side, and the firmware has not gotten any lighter over the years.