next up previous contents
Next: Sockets Up: Performance Evaluation Previous: Performance Evaluation   Contents

FIFOs


\begin{Figure}
% latex2html id marker 1089
[H]
\begin{center}
\resizebox{15cm}...
...Comparison of interprocess
communication with FIFOs. } \end{center}\end{Figure}

We are mainly interested for using remote method invocation in low latency control system environments. Therefore we chose deliberately small, ten byte long messages as method parameters. The concrete server code does not touch the parameter. It is however read from the network interface card and put into a private buffer for the method. The highest rate at which we could receive messages using named pipes directly on our platform was 75 kHz. When using a small object invocation scheme on top, the additional processing overhead allows an upcall rate of 52 kHz. This result has been obtained by doing object dispatching in the same thread as receiving the message. Compared to a CORBA implementation, which would use sockets for intramachine calls, the performance is 30 times better.

Figure 39 shows the overall processing times split up into user and kernel space times. The user processing time is always displayed separately in the pie charts. The absolute upcall rates are given in brackets with the figure titles. The left one shows communication interfacing to FIFOs directly. The right one shows the performance achieved with our object oriented method invocation layer based on FIFO communication. We see that the overhead is dominated by dispatching ($5.8 {\mu}sec$ on average). Using the active object[LS96] approach, which allows several dispatching threads to work interleaved, we reveal (Figure 40) that the overhead of thread switching and queue synchronisation has a significant impact on the performance. Using the implementation from the ACE toolkit [Sch94], we obtain an upcall rate of 10 kHz. With an implementation that makes less extensive use of synchronisation primitives, we can reach 30 kHz (depicted as FastAO in figure 40). The percentage of time spent in the recv system call is much higher than when using the ACE implementation of the active object (46% versus 29%). The amount of user space processing shown as a separated sector represents again the dispatching overhead. At 16%, it is very close to the value shown in figure 39, right plot (14%).


\begin{Figure}
% latex2html id marker 1106
[H]
\begin{center}
\resizebox{15cm}...
...rison of two different Active
Object implementations.} \end{center}\end{Figure}


next up previous contents
Next: Sockets Up: Performance Evaluation Previous: Performance Evaluation   Contents
Johannes Gutleber
1999-10-29