Check out the new USENIX Web site. nextupprevious
Next:Conclusions Up:Design And Implementation of Previous:Device Driver Support


Performance

We evaluate performance of the prototype DAFS server with a synthetic benchmark that involves a client fetching random blocks from warm server cache (no disk I/O). We measured performance for both the synchronous and asynchronous API. In the asynchronous case, the client issues read I/O maintaining up to 64 outstanding requests at any time. The server was configured to run with 64 kernel threads. In the synchronous case, the client was blocking waiting for completion on each request.

\begin{figure}\vskip25pt\epsfxsize =3.2in\begin{center}\leavevmode \epsfbox{bsdcon02.eps}\end{center}\vskip-1.1in\end{figure}
Figure 3:DAFS Read Throughput. From left to right: asynchronous API; synchronous API.

The experiment runs over two Pentium III 800 MHz systems with the ServerWorks LE chipset and 1GB RAM, connected via 1.25 Gb/s cLAN [8] VI cards on 64-bit/66MHz PCI over a cLAN switch. The network has been measured to yield 113 MB/s with a VI one-way throughput benchmark (using 32K packets and polling) provided by Giganet. We measured the effect of the block size used in read requests varying it from 4KB to 512KB and report results in Figure 3. We see that even for small block sizes, performance using the asynchronous interface is close to wire throughput by being able to pipeline server responses. Low DAFS overhead and the absence of copying reduces the memory bottleneck that would otherwise be a limiting factor. Performance using the synchronous interface converges to almost wire throughput for block sizes of about 128KB when the per-I/O overhead is fully amortized.


nextupprevious
Next:Conclusions Up:Design And Implementation of Previous:Device Driver Support
Kostas Magoutis 2001-12-03