Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Mar 1998 11:20:14 -0600
From:      Chris Csanady <ccsanady@friley585.res.iastate.edu>
To:        fenyo@email.enst.fr (Alex Fenyo (eowyn))
Cc:        "Ron G. Minnich" <rminnich@Sarnoff.COM>, freebsd-hackers@FreeBSD.ORG
Subject:   Re: Virtual Interface Architecture 
Message-ID:  <199803311720.LAA07492@friley585.res.iastate.edu>
In-Reply-To: Your message of "31 Mar 1998 15:06:41 %2B0200." <d06ogynypp8.fsf@hydre.enst.fr> 

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

>"Ron G. Minnich" <rminnich@Sarnoff.COM> writes:
>> btw, a question for hackers: how hard would it be to get 10 microseconds 
>> latency on the tcp stack as it stands? Yes, i know: "impossible". how 
>> impossible? 
>
>One answer could be like this :
>
>To have a low software overhead, you need to have a zero-copy
>communication stack (even if you keep TCP/IP). For this purpose, the
>hardware need to directly access the process memory. Then the data
>area the user wants to send/receive must be wired. Only verifying that
>an area is already wired costs about 6 microsec on my P200. Wiring a
>short area with the standard MACH interface takes more than 100
>microsec (this is mainly due to the lists of vm_entries/vm_objects the kernel
>has to follow). You can wire data at first use and decide not to wire
>it later, but you need to verify at each send/receive time that
>data are wired -> 6 microsec...

This really has nothing to do with TCP though.  The socket interface is
just too limited with respect to memory management.  There is no reason
why you could not pre-wire a chunk of memory, and still use TCP.  This
approach has the potential of being very fast.

Perhaps an interesting thing to try would be to layer a VIA interface
above TCP, or something similar.

[more vm related stuff deleted]

>Moreover, I think keeping TCP/IP is not the best way to have performances
>with dedicated boards like Myrinet or others; people usually
>write a new stack and implement Berkeley sockets on it. For
>instance, they did it in the NOW project : fast sockets on top
>of active messages. People want sockets, not TCP/IP, I think...

As someone else mentioned, Van Jacobson has gotten the fast path case
down to ~30 instructions for TCP processing on the receive side.  If
we could get around all the complex memory management using something like
above, it should perform fairly well.

Chris Csanady



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?199803311720.LAA07492>