* [Xenomai-help] Excess getpid calls?? @ 2009-04-08 19:01 John Wojnaroski 2009-04-08 19:16 ` Gilles Chanteperdrix 2009-04-08 22:21 ` Philippe Gerum 0 siblings, 2 replies; 3+ messages in thread From: John Wojnaroski @ 2009-04-08 19:01 UTC (permalink / raw) To: xenomai Hi We're running several apps with scheduled realtime task using rt_task_spawn() in a flight simulator. There are two apps each for a pilot and copilot and each app has 8 periodic tasks running at various duty cycles from 1Hz to 50Hz. A concern was raised as to whether the calls to getpid() were excessive. See trace ouput below.... <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< [1006]$ ps augx | grep -i copilot root 3561 24.7 5.6 51936 58108 ? RLl Apr01 2455:02 Source/Main/copilot --file=glass.cfg --window=0 0 2400 1050 hcsl 20859 0.0 0.0 1820 532 pts/4 S+ 09:55 0:00 grep -i copilot (09:55) <hcsl on spire>: ~ [1007]$ sudo !! sudo strace -p 3561 -c Process 3561 attached - interrupt to quit Process 3561 detached % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 92.78 0.179969 2 90067 getpid 5.67 0.010999 5 2247 ioctl 1.55 0.003000 1 2247 gettimeofday 0.00 0.000000 0 9 poll ------ ----------- ----------- --------- --------- ---------------- 100.00 0.193968 94570 total >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> We have not bored down into the xenomai source to see exactly what is going on or where or how the calls are made as we've been quite happy with the performance and stability. Might someone shed a bit of light on the matter and should we be concerned? Thanks John W. ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Xenomai-help] Excess getpid calls?? 2009-04-08 19:01 [Xenomai-help] Excess getpid calls?? John Wojnaroski @ 2009-04-08 19:16 ` Gilles Chanteperdrix 2009-04-08 22:21 ` Philippe Gerum 1 sibling, 0 replies; 3+ messages in thread From: Gilles Chanteperdrix @ 2009-04-08 19:16 UTC (permalink / raw) To: John Wojnaroski; +Cc: xenomai John Wojnaroski wrote: > Hi > > We're running several apps with scheduled realtime task using > rt_task_spawn() in a flight simulator. There are two apps each for a > pilot and copilot and each app has 8 periodic tasks running at various > duty cycles from 1Hz to 50Hz. > > A concern was raised as to whether the calls to getpid() were > excessive. See trace ouput below.... > > <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< > > [1006]$ ps augx | grep -i copilot > root 3561 24.7 5.6 51936 58108 ? RLl Apr01 2455:02 > Source/Main/copilot --file=glass.cfg --window=0 0 2400 1050 > hcsl 20859 0.0 0.0 1820 532 pts/4 S+ 09:55 0:00 grep -i > copilot > (09:55) <hcsl on spire>: ~ > [1007]$ sudo !! > sudo strace -p 3561 -c > Process 3561 attached - interrupt to quit > Process 3561 detached > % time seconds usecs/call calls errors syscall > ------ ----------- ----------- --------- --------- ---------------- > 92.78 0.179969 2 90067 getpid > 5.67 0.010999 5 2247 ioctl > 1.55 0.003000 1 2247 gettimeofday > 0.00 0.000000 0 9 poll > ------ ----------- ----------- --------- --------- ---------------- > 100.00 0.193968 94570 total > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > We have not bored down into the xenomai source to see exactly what is > going on or where or how the calls are made as we've been quite happy > with the performance and stability. > > Might someone shed a bit of light on the matter and should we be concerned? strace will not work correctly with Xenomai. I am even surprised that it does not exit with an error. The reason being that strace does not know anything about xenomai syscalls. Maybe unrecognized syscalls are counted as getpid calls ? -- Gilles. ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Xenomai-help] Excess getpid calls?? 2009-04-08 19:01 [Xenomai-help] Excess getpid calls?? John Wojnaroski 2009-04-08 19:16 ` Gilles Chanteperdrix @ 2009-04-08 22:21 ` Philippe Gerum 1 sibling, 0 replies; 3+ messages in thread From: Philippe Gerum @ 2009-04-08 22:21 UTC (permalink / raw) To: John Wojnaroski; +Cc: xenomai On Wed, 2009-04-08 at 12:01 -0700, John Wojnaroski wrote: > Hi > > We're running several apps with scheduled realtime task using > rt_task_spawn() in a flight simulator. There are two apps each for a > pilot and copilot and each app has 8 periodic tasks running at various > duty cycles from 1Hz to 50Hz. > > A concern was raised as to whether the calls to getpid() were > excessive. See trace ouput below.... > > <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< > > [1006]$ ps augx | grep -i copilot > root 3561 24.7 5.6 51936 58108 ? RLl Apr01 2455:02 > Source/Main/copilot --file=glass.cfg --window=0 0 2400 1050 > hcsl 20859 0.0 0.0 1820 532 pts/4 S+ 09:55 0:00 grep -i > copilot > (09:55) <hcsl on spire>: ~ > [1007]$ sudo !! > sudo strace -p 3561 -c > Process 3561 attached - interrupt to quit > Process 3561 detached > % time seconds usecs/call calls errors syscall > ------ ----------- ----------- --------- --------- ---------------- > 92.78 0.179969 2 90067 getpid > 5.67 0.010999 5 2247 ioctl > 1.55 0.003000 1 2247 gettimeofday > 0.00 0.000000 0 9 poll > ------ ----------- ----------- --------- --------- ---------------- > 100.00 0.193968 94570 total > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > We have not bored down into the xenomai source to see exactly what is > going on or where or how the calls are made as we've been quite happy > with the performance and stability. > > Might someone shed a bit of light on the matter and should we be concerned? > The Xenomai userland libs do not issue those calls routinely; actually, only the interface library to the VxWorks emulator is known to directly issue the getpid() call only once, when starting a watchdog server task for the first time, which very unlikely matches your case. Assuming that you are using the native Xenomai API, you may want to call the rt_task_set_mode() service in order to set the T_WARNSW bit, so that your application receives a SIGXCPU signal when it tries to issue a Linux syscall such as getpid() (see examples/native/sigxcpu.c for some demo code), then dump a backtrace to locate the call site. Issuing such Linux calls in the middle of some RT processing is wrong, since it kicks the application out of real-time mode until it reaches a Xenomai syscall again, which is likely not what you want. So in short, yes, you should be concerned for latency reasons. Another option to locate the offending call spot is to use GDB, assuming that getpid() indeed happens while your system is running, and not simply as part of your application init chores. In that case, you may try to run the app over GDB, setting a breakpoint on the getpid() routine, setting a breakpoint "ignore count" high enough to dismiss the calls due to the application setup code, during which running Linux services is likely legit. Dumping the backtrace after the nth breakpoint is eventually reached would give you some insight about who's doing what: e.g. to stop after the 1000th invocation of the getpid() service from your app, and see who is doing so: $ sudo su # gdb Source/Main/copilot (gdb) b getpid Function "getpid" not defined. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (getpid) pending. (gdb) ignore 1 1000 (gdb) run --file=glass.cfg --window=0 0 2400 1050 Breakpoint 1 in getpid () from ... (gdb) bt NOTE: you did not tell us about your setup: - the Xenomai version number - which kernel release and architecture - which glibc/uClibc release/flavour. > Thanks > John W. > > > > > _______________________________________________ > Xenomai-help mailing list > Xenomai-help@domain.hid > https://mail.gna.org/listinfo/xenomai-help -- Philippe. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-04-08 22:21 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-04-08 19:01 [Xenomai-help] Excess getpid calls?? John Wojnaroski 2009-04-08 19:16 ` Gilles Chanteperdrix 2009-04-08 22:21 ` Philippe Gerum
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.