[etherlab-users] Call to ecrt_domain_process takes sometimes very long (10ms!)
Michael Ruder
rudermi at gmx.de
Fri Apr 6 11:25:36 CEST 2018
Hi Gavin,
<> Have you issued an mlockall at the start of your process? It can also
<> help to explicitly prefault your stack so that you don't get a page
<> fault later if your stack depth grows.
Yes, I am using the mostly unmodified ec_user_example. I just adapted the
PDO setup for the Omron NX ECAT IO. This example does already SCHED_FIFO
(i tried with prio 99 and 79, as 99 should not be used according the
PREEMPT docs), mlockall(MCL_CURRENT | MCL_FUTURE) and stack_prefault()
before the cyclic_task starts.
I am using igb with ec_generic. I use the etherlab 1.5.2 branch (which is
the only one that commits go to as far as I saw) in the most current
version from the git repos.
I now found out the problem. As ecrt_domain_process is just a wrapper for
an IOCTL, the problem had to be in the kernel, which however was
identical. Aside from the cmdline, though and logging: There was a serial
console defined in the cmdline and kernel logging was on console. After
disabling the serial console, it dropped to 2 ms already. After using
dmesg -E to disable kernel logging on the console altogether, everything
went back to normal...
Thanks for listening ;)
--
. -Michael
More information about the Etherlab-users
mailing list