Check out the new USENIX Web site. next up previous
Next: Performance Methodology Up: Implementation and Performance Previous: The iMimic DataReactor Proxy

API Implementation Overhead

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.


Table 6: Background Pmix-3 benchmark performance when run simultaneously with content adaptation modules

  Baseline Ad Images Images Max Trans Compress Compress
    Remover 25 Trans/s Max Trans nice 19 75 obj/s 95 obj/s
Throughput (reqs/s) 1452.87 1452.72 1452.65 1452.73 1452.68 1452.73 1452.88
Response time (ms) 1248.99 1248.87 1256.60 1277.76 1250.69 1252.24 1258.34
Miss time (ms) 2742.53 2743.55 2753.47 2778.09 2744.60 2745.63 2752.63
Hit time (ms) 19.82 20.42 23.21 43.30 20.15 23.44 28.69
Hit ratio (%) 57.81 57.81 57.74 57.80 57.78 57.81 57.78



next up previous
Next: Performance Methodology Up: Implementation and Performance Previous: The iMimic DataReactor Proxy
Vivek Sadananda Pai 2003-01-17