The final set of experiments addresses network reception overload. In these experiments, the network operated at 100 Mbps full-duplex, and measurements are the averages of five runs.
In the fourth experiment, a client application sent 10-byte UDP packets
at a fixed rate to a server application running at node S.
Both on FreeBSD and on Eclipse/BSD, the server application received
essentially all of the packets when the transmission rate was up to about
5600 packets per second (pkts/s). Above that transmission rate,
as shown on Figure 8, the reception rate
on Eclipse/BSD reached a plateau at around
5700 pkts/s. On FreeBSD, on the contrary,
the reception rate dropped precipitously. This experiment shows that
on Eclipse/BSD applications can make forward progress even when
there is network reception overload, while on FreeBSD applications
can enter livelock [16] in such situations. Eclipse/BSD prevents
receive livelock because of SRP.
However, SRP cannot by itself guarantee that
important applications will make forward progress.
Eclipse/BSD can guarantee that by combining SRP and
CPU reservations. In the fifth and final experiment, four
different client applications sent 10-byte UDP packets at the same
fixed rate to a different server application running on node S.
We measured reception rates in
two scenarios: (1) All four server applications reserved each 25% of the
CPU; and (2) One server application reserved 97% of the
CPU and the remaining server applications reserved 1% each.
While the transmission rate was below 5600 pkts/s, essentially all
packets were received. Reception rates increased slightly to
5900 pkts/s for a transmission rate of 28.5 Kpkts/s. Above that rate,
results differ for the two scenarios, as shown in Figure 9.
In the first scenario, reception rate goes down to about 1200 pkts/s.
In the second scenario,
the reception rate of the application with 97% of the CPU
goes down to about 4800 pkts/s, while the reception rate
of the applications with 1% of the CPU goes down to about 160 pkts/s.