* Where to start with Kernel config for Atom (64bit) Xenomai4 (evl)
@ 2022-03-16 11:57 Steub, Peter
2022-03-16 15:01 ` Philippe Gerum
0 siblings, 1 reply; 3+ messages in thread
From: Steub, Peter @ 2022-03-16 11:57 UTC (permalink / raw)
To: xenomai@xenomai.org
Hi all,
I like to get evl running on a quadcore Atom box. I started with a standard ubuntu 20.04 installation and build a kernel from ,v5.15.y-evl-rebase' branch with evl enabled and things that ,evl check -file' told me disabled.
Good news: the kernel runs and I do have a evl api.
Bad news: latmus tells me a worst jitter of 500µs right away.
Also ,evl test' tells me:
*** stack smashing detected ***: terminated
Aborted (core dumped)
** poll-multiple: BROKEN
I have a Xenomai3 setup on this same machine that has a 30µs jitter.
On the evlproject.org site there is a list of ports including a x86_64 atom with all the boxes checked. Is there anywhere more information about these ports, are the .config files somewhere to be found, to be used as a starting point? I'm also interested in the Raspberry PI port, but I don't like to try it all out again for myself, a kernel-config or in case of the PI even a binary or a hole Image would be great!
Also I'm kind of lost on documentation, all I find leads back to the evlproject.org main site. Where can I find what to do if say "poll-multible" failed? I have the feeling I am still missing a big junk of documentation! Can anyone please point me at it!
Thank you
Peter Steub
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Where to start with Kernel config for Atom (64bit) Xenomai4 (evl)
2022-03-16 11:57 Where to start with Kernel config for Atom (64bit) Xenomai4 (evl) Steub, Peter
@ 2022-03-16 15:01 ` Philippe Gerum
2022-03-18 7:19 ` WG: " Steub, Peter
0 siblings, 1 reply; 3+ messages in thread
From: Philippe Gerum @ 2022-03-16 15:01 UTC (permalink / raw)
To: Steub, Peter; +Cc: xenomai
"Steub, Peter via Xenomai" <xenomai@xenomai.org> writes:
> Hi all,
>
> I like to get evl running on a quadcore Atom box. I started with a
> standard ubuntu 20.04 installation
Which will almost never work out of the box on x86. Some options
commonly selected there will likely cause issues with any real-time
infrastructure.
> and build a kernel from ,v5.15.y-evl-rebase' branch with evl enabled and things that ,evl check -file' told me disabled.
What do you mean? "evl check" is about verifying a configuration, not
giving any runtime status. The output is a set of hints about kernel
options that should appear as indicated in the submitted .config file,
but do not.
> Good news: the kernel runs and I do have a evl api.
> Bad news: latmus tells me a worst jitter of 500µs right away.
You may want to check this [1] first. A common issue causing large
latency peaks is with ACPI_PROCESSOR_IDLE as documented.
> Also ,evl test' tells me:
> *** stack smashing detected ***: terminated
> Aborted (core dumped)
> ** poll-multiple: BROKEN
# gdb /usr/evl/tests/poll-multiple
may help, running it then asking for a backtrace when it breaks. I could
have a look at the backtrace output to figure out what happens, since I
cannot reproduce this on any of my fixtures ATM, so this may depend on a
glibc setup.
>
> I have a Xenomai3 setup on this same machine that has a 30µs jitter.
>
You should expect the same from EVL/x4, a bit better than x3 under SMP
stress due to the improved locking model.
> On the evlproject.org site there is a list of ports including a x86_64
> atom with all the boxes checked. Is there anywhere more information
> about these ports, are the .config files somewhere to be found, to be
> used as a starting point?
In short, no. But the document at [1] helps in removing known issues
from stock kernel configurations.
> I'm also interested in the Raspberry PI
> port, but I don't like to try it all out again for myself, a
> kernel-config or in case of the PI even a binary or a hole Image would
> be great!
Which PI? All PI kernels can be built using the default mainline config
for the architecture at hand. This is actually the ones I'm using.
e.g. ARCH=arm64 defconfig for PI3/64bit and PI4/64bit, or
multi_v7_defconfig for 32bit (including PI0 and PI2).
> Also I'm kind of lost on documentation, all I find leads back to the
> evlproject.org main site.
Everything related to EVL and xenomai4 is hosted at evlproject.org ATM.
> Where can I find what to do if say "poll-multible" failed? I have the feeling I am still missing a big junk of documentation! Can anyone please point me at it!
>
This means a non-reg test fails, so either the test code itself is
broken, or something it exercises is broken. In this case, #1 is most
likely given the error report. What you can do is to help in
understanding why this breaks: see above regarding the gdb command.
> Thank you
>
> Peter Steub
[1] https://evlproject.org/core/caveat/
--
Philippe.
^ permalink raw reply [flat|nested] 3+ messages in thread
* WG: Where to start with Kernel config for Atom (64bit) Xenomai4 (evl)
2022-03-16 15:01 ` Philippe Gerum
@ 2022-03-18 7:19 ` Steub, Peter
0 siblings, 0 replies; 3+ messages in thread
From: Steub, Peter @ 2022-03-18 7:19 UTC (permalink / raw)
To: xenomai@xenomai.org
> > Hi all,
> >
> > I like to get evl running on a quadcore Atom box. I started with a
> > standard ubuntu 20.04 installation
>
> Which will almost never work out of the box on x86. Some options
> commonly selected there will likely cause issues with any real-time infrastructure.
Can you give me an example, the Xenomai3 setup that I use very successfully, is based on a Ubuntu 16.04 desktop, although it is pretty old already, so I may have forgotten what I did exactly back then to make it work.
> > and build a kernel from ,v5.15.y-evl-rebase' branch with evl enabled
> > and things that ,evl check -file' told me disabled.
>
> What do you mean? "evl check" is about verifying a configuration, not
> giving any runtime status. The output is a set of hints about kernel
> options that should appear as indicated in the submitted .config file, but do not.
Exactly, I did run "evl check" on the kernel config before I build the kernel. So ACPI_PROCESSOR_IDLE is deactivated as well.
> > Also ,evl test' tells me:
> > *** stack smashing detected ***: terminated Aborted (core dumped)
> > ** poll-multiple: BROKEN
>
> # gdb /usr/evl/tests/poll-multiple
>
> may help, running it then asking for a backtrace when it breaks. I
> could have a look at the backtrace output to figure out what happens,
> since I cannot reproduce this on any of my fixtures ATM, so this may
> depend on a glibc setup.
(gdb) run
Starting program: /usr/evl/tests/poll-multiple [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff7d8b700 (LWP 3404)]
[New Thread 0x7ffff7d7a700 (LWP 3412)]
[Thread 0x7ffff7d8b700 (LWP 3404) exited]
*** stack smashing detected ***: terminated [Thread 0x7ffff7d7a700 (LWP 3412) exited]
Thread 1 "poll-multi:3400" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) backtrace
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007ffff7db1859 in __GI_abort () at abort.c:79
#2 0x00007ffff7e1c29e in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff7f4608f "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:155
#3 0x00007ffff7ebeaea in __GI___fortify_fail (msg=msg@entry=0x7ffff7f46077 "stack smashing detected") at fortify_fail.c:26
#4 0x00007ffff7ebeab6 in __stack_chk_fail () at stack_chk_fail.c:24
#5 0x0000555555557941 in main (argc=1, argv=0x7fffffffe558) at ../../home/bm_user/nas/libevl-master/tests/poll-multiple.c:163
> > I'm also interested in the Raspberry PI port, but I don't like to
> > try it all out again for myself, a kernel-config or in case of the
> > PI even a binary or a hole Image would be great!
>
> Which PI? All PI kernels can be built using the default mainline
> config for the architecture at hand. This is actually the ones I'm using.
> e.g. ARCH=arm64 defconfig for PI3/64bit and PI4/64bit, or
> multi_v7_defconfig for 32bit (including PI0 and PI2).
Ok I started over with the kernel and now that I have done it, it seems obvious. Maybe someone could put a small list like this on the "Building the core" site so the next one who does not know how to start knows:
# ARCH=x86_64 make defconfig
# make menuconfig
-> Processor type and features -> EVL real-time core Enabled
-> Processor type and features -> CPU core prioroties scheduler support Disable
-> Power management -> CPU Frequency scaling Disable
-> Power management -> ACPI support -> Processor Disable
->Kernel hacking -> Tracers Disable
#######Add addition Hardware support######### # make clean # make bindeb-pkg (or just make...)
The result looks very promising, on an isolated core I get worst user values at around 3, on a non isolated core I get like 20. I haven't tested for long and not with different kind of loads but still it looks a lot better than before. Now I need to port my application from X3 to X4 but those questions deserve a separate email.
Thank you
Peter Steub
>
> [1] https://evlproject.org/core/caveat/
>
> --
> Philippe.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-03-18 7:19 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-16 11:57 Where to start with Kernel config for Atom (64bit) Xenomai4 (evl) Steub, Peter
2022-03-16 15:01 ` Philippe Gerum
2022-03-18 7:19 ` WG: " Steub, Peter
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.