To understand the performance overhead of implementing the API in the DataReactor, we start with a standard DataReactor platform, incrementally add features, and test the result. Overheads from implementing the API result in increased hit and miss response times, since throughput is kept constant. Table 5 lists the results for these tests.
The various columns of Table 5 are as follows:
``Baseline'' is the standard
DataReactor software without API support. ``API-Enabled'' is the
same software with API support, but without any modules
loaded. ``Empty Callback'' adds a module with all notifications
specified, but with no work done in any of them. ``Add Headers'' adds
extra headers to all inbound/outbound paths on the proxy, so four
extra headers will be introduced on each transaction. ``Body
Headers'' additionally copies the response body of each reply and
overwrites the response body with this copy.
The ``API-Enabled'' test shows that implementing the API adds virtually no overhead on cache hits and only a small overhead on cache misses. Actually installing a module causes a slight slowdown on hits and misses due to the extra calls needed. Due to the extremely small hit times, this effect appears as a 5% increase on hit time. On cache misses, where most of the time is spent waiting on the remote server, the overhead is less than one-tenth of one percent. These low overheads confirm the premise that an explicitly event-aware API design can enable an extensible proxy with minimal performance impact.
We also observe that using the features of the API, such as adding
headers or modifying the body, generates low overhead. Adding headers
introduces some extra delay on misses, but even modifying the full
body does not generate any significant spike in response times. The
hit times for ``Body Headers'' show a 6% increase over
the ``Empty Callback'', which translates into a cumulative 11.5% increase
versus the baseline. However, in absolute terms, the increase is less
than 2.5ms, or less than 1% of the overall response time.
|