Re: all syscalls initially taking 4usec on a P4? Re: nonblocking UDPv4 recvfrom() taking 4usec @ 3GHz?
From: bert hubert <hidden>
Date: 2007-02-20 17:02:36
Also in:
lkml
On Tue, Feb 20, 2007 at 07:41:25PM +0300, Evgeniy Polyakov wrote:
It can be recvfrom only problem - syscall overhead on my p4 (core duo,
debian testing) is bout 300 usec - to test I ran read('dev/zero', &data,
0) in a loop.nsec I assume? The usec numbers for read(fd, &c, 0) where fd is /dev/zero: 1.557667, 0.627667, 0.447333, 0.440000, 0.440000, 0.440000, 0.442333, 0.440000, 0.440000, 0.442333, 0.442333, 0.440000, 0.440000, 0.442333, 0.442667, 0.440000, 0.440000, 0.440000, 0.442333, 0.442667, In usecs. Notice the same declining figure, but not as pronounced. With a sleep(1) in between, we get: 1.692667, 1.800000, 0.782667, 1.282667, 0.665000, 0.980000, 0.925000, 0.887667, 0.662667, 0.862667, 1.077333, 1.442333, 0.660000, 1.890000, 0.672333, 0.795000, 0.647667, 0.692333, 0.750000, 0.865000, This doesn't look all that unhealthy.
Could you try to hack recvfrom() for your socket to always copy some empty buffer and check the results without waiting for packet?
That might be out of my reach before tomorrow :-)
If you are not hurry I can test it myself tomorrow.
Thanks. My major problem is that in my measurements, I quite often see the 'worst case' 4usec result. It would not be a problem if it happens only once, of course. Bert -- http://www.PowerDNS.com Open source, database driven DNS Software http://netherlabs.nl Open and Closed source services