Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Mar 1998 09:13:55 -0500 (EST)
From:      "Ron G. Minnich" <rminnich@Sarnoff.COM>
To:        Alex Fenyo <fenyo@email.enst.fr>
Cc:        freebsd-hackers@FreeBSD.ORG
Subject:   Re: Virtual Interface Architecture
Message-ID:  <Pine.SUN.3.91.980331090833.8941D-100000@terra>
In-Reply-To: <d06ogynypp8.fsf@hydre.enst.fr>

next in thread | previous in thread | raw e-mail | index | archive | help
On 31 Mar 1998, Alex Fenyo wrote:
> "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? 

N.B.: I want tcp/ip. And i want the 10 microseconds. How do I get there? 
I'm not pretending to be reasonable. But 10 microseconds is 5K 
instructions at 500 Mhz, which is where we're going to be this summer. 
Surely we can do something useful in that time. After all, in the good 
old days, 5K instructions was more than enough to get something out a 
network interface. 

> To have a low software overhead, you need to have a zero-copy
> communication stack (even if you keep TCP/IP). 

zero copy is the least of my worries though. it's clear that the MACH vm
model is rather a problem for getting good throughput, so it has to go. 
I've already demonstrated to my satisfaction that I can by bypassing the 
VM system do the following:
1) system call to kernel
2) kernel figures out what to do 
3) kernel calls function call to do it with valid pointers etc. 

This can be done in 1-2 microseconds. 

Now i have to get through tcp/ip. Any votes on whether I can get through 
in 4K instructions? Whatever happened to the infamous 30-instruction tcp 
inner loop? 

> Maybe you can go faster if you bypass the MACH interface, but
> you will have to write a lot of code to do this.
Not really. You just have to do some work in trap()

> You may also wire every memory area the process uses, at allocation time,
> but it will cost a lot of memory and affect performances for other
> processes.
not necessarily. 

> 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...

No, not in my neck of the woods. People want what tcp/ip does, they just 
want it to be faster. And it should be. 

Any good ideas out there? 

ron

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?Pine.SUN.3.91.980331090833.8941D-100000>