Jorgen Grahn <
grahn...@snipabacken.se> writes:
> Seems to me your problem is based in that you have a
> system with - a real-time part - a best effort part
> and they influence each other, yet they aren't under
> any common control. Under those conditions, I don't
> see that you can do anything very much better than
> ad hoc stuff like your polling.
>
> (Someone else suggested ways to cut down on the
> influence.)
OK, first, thank you, and thank you to J. Clarke as
well.
You are absolutely right, the problem is that there is
RT and BE and they influence each other. The challenge
is to isolate them except for what cannot be isolated,
which is the shared DRAM.
But, the RT part doesn't have to be isolated from the
BE part, as long as the influence can be bounded. If
it can be bounded, it can be computed, and then
formalized, i.e., the BE influence will be
incorporated and accounted for in the RT part.
At this moment, the RT part knows how many accesses
the BE part can be allowed to make, and this is
communicated to the Linux kernel with a syscall.
The BE processes are told to run exclusively on the BE
core (in userspace) with the tool taskset
('taskset -c CORE') and with this
GRUB_CMDLINE_LINUX_DEFAULT="quiet isolcpus=0"
in /etc/default/grub - it works, they only run there
and this can be confirmed with 'top' or 'ps'.
Do you happen to know how the scheduler can be
modified to, whenever told so (doesn't matter by means
of an interrupt or polling), how the scheduler can be
told to not execute those tasks, i.e. to freeze the BE
core?
Or is that better setup on a process basis, as in a
field in the PCB or something? (I would think that's
where ps and top get their information.)
--
underground experts united