The export transformation moves transformations outside of the
kernel and into user space. However, crossing the kernel-user boundary
incurs overheads that are not present in a basic kernel transformation
network. Consequently, Section 5.2.1 measures the cost
imposed by executing an identity transformation in user space, relative
to a kernel identity transformation. Using an identity
transformation
avoids transformation-specific costs and isolates the overhead imposed by
pushing a transformation into user space. This analysis is followed by
Section 5.2.2, which examines the end-to-end user-space
performance of three linear
(N) transformations.
Section 5.1.1 shows that a write is slightly slower than a read for a file guarded by a kernel transformation. However, this difference is not noticeable during an access through the export transformation where the execution time of a read is virtually identical to that of a write. The small difference in times is masked by the large overhead imposed by crossing the kernel-user boundary. Therefore, in order to avoid redundancy, this section only presents performance results for transformations on reads.
Opening a transformation link that contains a user-space transformation
takes roughly three times as long as an equivalent link that contains
only kernel transformations. This penalty results from the additional
time it takes to detect a non-kernel transformation, replace it with
an export transformation, and find the shared library containing
the transformation function. Specifically, opening a file guarded by
a kernel identity transformation takes 38.8
s, as shown
in Figure 6. This is 3.4 times faster than the 132.4
s
required by opening a file guarded by a user-space identity
transformation.