[mod.protocols.tcp-ip] BSD/SUN Puzzle

braden@ISI.EDU (Bob Braden) (11/11/86)

I have been experimenting with high-rate ICMP echoes across the ISI
Ethernet between SUN 3/75's.  The pinger program sets an interval timer to
fire off every 20 ms (the minimum resolution).  Each time it fires,
the signal routine calls sendto() to send N successive ICMP echo requests
without a pause.  sendto() is bound to a RAW socket.  The remote SUN
echoes, and a recvfrom() (called in an endless loop) gathers statistics
on RTT, etc. All very trivial.

Now, if N = 3 (150 packets per second),  no packets are dropped, and it
uses 6 % of the SUN CPU (1% in user state, 5% in system state). If N = 4
(200 packets per second), 7 % of the packets are dropped, but it uses
57% of my SUN CPU time (10% in user state, 47 % in system state).

Obviously, at 200 per second we are overrunning something and queues are
building up.  That would account for the packet loss.  But I cannot
understand why the CPU time should build up in this non-linear fashion,
unless there is some (heaven forbid) linear search process going on in
some system queue.  Can anyone give suggest to me what is going on?


Bob Braden