next up previous
Next: Export Transformation Performance Up: Kernel Transformation Performance Previous: Micro Performance Results

   
End-to-End Performance Results

The MonA file system incurs overhead through its implementation of transformation networks, as shown in Section 5.1.1. However, each transformation has an additional cost related to its complexity. This cost is not additional overhead; the file system is performing computations on behalf of an application that otherwise would execute the same operations in user space.

Tests evaluate performance of the $\cal {O}$(N) increment transformation, which increments the value of each byte on a data stream. The increment transformation superficially may appear to be a trivial end-to-end performance test. However, transformations of higher complexity tended to mask the underlying cost of the implementation because computations within the transformations dominated execution time. Additionally, transformations are stream-oriented operations, which naturally are of linear complexity. Therefore, a typical transformation has linear complexity and varies from the increment transformation by only a constant factor.

An increment transformation within the MonA file system is considerably faster than an increment operation performed by conventional Unix pipes. A pipe transformation implementation was generated by forking a separate process for each operation and connecting the processes with pipes. As expected, the pipe implementation performs worse than MonA. Interprocess communication and process overhead affect pipes. At best (for a single transformation) pipes are 30-40$\%$ slower than the MonA file system. Each additional transformation further degrades performance because every extra pipe must copy each byte transferred.

The performance difference is due to the number of times a buffer is copied on a file access, as illustrated in Figure 9 and Figure 10. Like ext2, both implementations require copying data from a file to a kernel buffer and performing a second copy from the kernel buffer to the user process that requested data. The MonA implementation allows transformations to share the kernel buffer, eliminating copies between transformations. In contrast, the Unix pipeline must copy the entire buffer each time data is passed to the next stage in the pipeline. Consequently, both ext2 and MonA impose 2 copies for each file access4 but a pipeline imposes 2+N copies, where N is the number of stages in the pipeline.


  
Figure 9: Buffer copies in a Unix pipeline.
\begin{figure}\begin{center}
\leavevmode
\epsfxsize=3.25in
\epsfysize=.739in
\epsfbox{pipe_copies.eps}
\end{center}\end{figure}


  
Figure 10: Buffer copies in a transformation network.
\begin{figure}\begin{center}
\leavevmode
\epsfxsize=3.25in
\epsfysize=1.44in
\epsfbox{xform_copies.eps}
\end{center}\end{figure}


next up previous
Next: Export Transformation Performance Up: Kernel Transformation Performance Previous: Micro Performance Results
Richard Kendall
1999-02-01