[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