Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Nov 1998 09:25:22 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Dru Nelson <dnelson@redwoodsoft.com>
Cc:        freebsd-hackers@FreeBSD.ORG
Subject:   Re: write syscall times for sockets
Message-ID:  <199811131725.JAA05134@apollo.backplane.com>
References:   <Pine.BSF.3.91.981112155956.4572L-300000@pacman.redwoodsoft.com>

next in thread | previous in thread | raw e-mail | index | archive | help

:Hi,
:
:  I wrote a simple C program to guage how many usec's 
:  system calls take or write calls take for various
:  write lengths.
:
:  I setup a socket to the discard socket on another machine.
:  I did various writes. The times are in the attachment.
:  The first 4 writes are 0,0,8,?. After that all the writes
:  are in groups of 4 with a sleep(2) in between. 
:  Ahh.. :-) I'll just include the code.
:
:  Basically, the first system call would take longer for some
:  reason. Then each write would be pretty consistent.

    Well, amoung other things, the system must initially fault 
    the buffer into memory, whether it's zero-page or not.

:  What I was looking for was that characteristic of writing
:  to a socket with buffer available. The call should be pretty

    In order to test this properly you also need to take into
    account the TCP window size and kernel buffering.  The
    combination determines how much unacked data the destination
    is willing to accept and how much data the source is willing to
    buffer in the kernel.

    You can control the parameter somewhat on the source with
    a socket option SO_SNDBUF and SO_SNDLOWAT (see 'setsockopt'),
    you can set system-wide defaults with sysctl (sysctl -a | fgrep tcp),
    and you can set per-route specifics with route (e.g.
    route -n get default; route -n change default -sendpipe 60000,
    and so on).  For the tests you are making, it should be
    sufficient to set it just on the sender's side.

    You might also be interested in the new sendfile() functionality
    just recently added by David Greenman to FreeBSD.

					-Matt

:  This is pretty much for fun... a limited test case. However,
:  I think the information would be interesting.
:
:  I'm not on this list, so if you could cc: me when you reply,
:  that would be great.
:
:Dru Nelson
:Redwood City, California

    Matthew Dillon  Engineering, HiWay Technologies, Inc. & BEST Internet 
                    Communications & God knows what else.
    <dillon@backplane.com> (Please include original email in any response)    

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199811131725.JAA05134>