[systemd-devel] systemd and RTAI not getting along

JB general at itpsg.com
Tue Jan 22 01:33:47 PST 2013


Hello again,
   I've worked around ruby's daemonize implementation by rewriting the 
app to be of type simple.  However, now I'm seeing the long delay on 
stop after the application it executes has run once.  The application is 
a real time app utilizing RTAI.  The real time application is started by 
a scripted web daemon (the one I recently modified because of problems 
between it and systemd.)  It forks and then calls exec to start the real 
time application, but until told to do so.

The scripted web daemon is started by systemd.  Systemd keeps track of 
every forked child process, right?  Here is a status report showing what 
its status is shortly after normal startup:

--------------------------------------------------------------------------------------
[rtuser at localhost ~]$ sudo systemctl status webapp.service
webapp.service - scripted daemon
          Loaded: loaded (/etc/systemd/system/webapp.service)
          Active: active (running) since Tue, 22 Jan 2013 01:42:30 
-0700; 7min ago
         Process: 553 
ExecStartPre=/home/rtuser/rtapp/scripts/preStart.sh (code=exited, 
status=0/SUCCESS)
        Main PID: 906 (ruby)
          CGroup: name=systemd:/system/webapp.service
                  â 906 /usr/bin/ruby /home/rtuser/rtapp/bin/webapp.rb
--------------------------------------------------------------------------------------

At this point, everything is fine.  It will stop almost 
instantaneously.  And here it is after the real time app has been 
started and then subsequently successfully stopped after all calls to 
free up and shutdown real time resources have completed and all 
processes (except the webapp) have exited.

--------------------------------------------------------------------------------------
[rtuser at localhost ~]$ sudo systemctl status webapp.service
webapp.service - scripted daemon
          Loaded: loaded (/etc/systemd/system/webapp.service)
          Active: active (running) since Tue, 22 Jan 2013 01:42:30 
-0700; 17min ago
         Process: 553 
ExecStartPre=/home/rtuser/rtapp/scripts/preStart.sh (code=exited, 
status=0/SUCCESS)
        Main PID: 906 (ruby)
          CGroup: name=systemd:/system/webapp.service
                  â  906 /usr/bin/ruby /home/rtuser/rtapp/bin/webapp.rb
                  â 1040 [RTAI_KTHRD_M:0]
                  â 1041 [F:HARD:0:1]
                  â 1042 [RTAI_KTHRD_M:1]
                  â 1043 [F:HARD:1:1]
                  â 1044 [F:HARD:0:2]
                  â 1045 [F:HARD:1:2]
                  â 1046 [F:HARD:0:3]
                  â 1047 [F:HARD:1:3]
                  â 1048 [F:HARD:0:4]
                  â 1049 [F:HARD:1:4]
                  â 1050 [F:HARD:0:5]
                  â 1051 [F:HARD:1:5]
                  â 1052 [F:HARD:0:6]
                  â 1053 [F:HARD:1:6]
--------------------------------------------------------------------------------------

Subsequent starts and stops of the application of course do not change 
those process ID and kernel threads because, I can only assume, they are 
reused.  A kill -9 as root will not even kill them.  The problem I have 
is that system shutdown times take quite a few minutes unless systemd 
has done everything it can to kill these, correct?  This mostly results 
in a very long delay on a timeout waiting for dependent processes to die 
when they never will on shutdown or restart of the computer or just the 
webapp service.

I've already posted to the rtai mailing list about this.  I've tried 
using RemainAfterExit=yes (and no) in the webapp.service file as 
previously suggested with no avail.  The service file currently looks like:

[Unit]
Description=scripted daemon
After=network.target

[Service]
Type=simple
WorkingDirectory=/home/rtuser/rtapp/bin
PIDFile=/home/rtuser/rtapp/data/logs/webapp.pid
ExecStartPre=/home/rtuser/rtapp/scripts/preStart.sh
ExecStart=/home/rtuser/rtapp/bin/webapp.rb
StandardInput=null
StandardOutput=syslog
StandardError=syslog
User=sim
Group=sim
ControlGroup=cpu:/

[Install]
WantedBy=multi-user.target


I think those threads not getting shutdown then RTAI may be designed as 
such and if so, saying RTAI needs to change it's design wouldn't be very 
helpful.  I'm trying to get this figured out so system shutdowns and 
service restarts will not take forever compared to startup.  Any help 
would be immensely appreciated!

Thanks,
JB


More information about the systemd-devel mailing list