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