Help How to achieve 1kb in 10 microsec

Have a question or want to start a discussion? Post it! No Registration Necessary.  Now with pictures!

Threaded View


Please help me to find a solution to transmit/receive 1 kilo byte of
data in 10 micro seconds.

1.    we have to consider OS latency
2.    we have to consider driver latency
3.    we have to consider ethernet card latency
4.    we have to consider protocol latency
5.    we have to consider switching latency
6.    we have to consider cable length

so considering all the above and any other things which affects data
transmission/reception please suggest us a solution to transmit/receive
1 kilo byte of data in 10 micro seconds.

Operating system to be used is any version of microsoft windows.
Please suggest a protocol which meets our requirement.

We used in our experiment a giga bit ethernet card, windows 2000 OS,
using UDP protocol.
we were able to transmit /receive 1kbyte of data in 25 micro sec with
75 percent of data loss.

if we introduce some delay in between each packet transmission i.e.
for(int i=0;i<35000;i++); we could able to transmit/receive without any
loss but we could transmit/receive 1 kbyte of data in 125 micro seconds

so kindly suggest a solution so that the above requirement is met

Thanx in advance


Re: Help How to achieve 1kb in 10 microsec

On 1 Feb 2006 02:39:52 -0800, wrote:

Quoted text here. Click to load it

Depending on the source of your datastream a data analyser or
even a simple storage oscilloscope comes to mind.

Both would allow you to capture the data and (later) transfer it
into something usable. At a pace even Windows can handle :-)

Quoted text here. Click to load it

That's peeking at in my book. Not capturing :-)

Kind regards,
Gerard Bok

Re: Help How to achieve 1kb in 10 microsec wrote in part:
Quoted text here. Click to load it

Even without any overheads this is 100 Mbyte/s (0.8 Gbit/s).
This will be _extremely_ hard to achieve.  Forget PCI busses,
and you may well need 10Gbe.

Quoted text here. Click to load it

Counting in these latencies are what make it _extremely_ difficult
even though it might look like GBE would be more than enough.

You probably need 10Gbe since GBE will take 8us just for
transmission.  Even a PCI66 bus isn't much faster and you have to
transfer the data from RAM across the bus, down the wire and from
the card across the bus back to RAM.  Raw, that sounds like at least
24us if the OS/CPU can keep up.  Which I very much doubt since
interrupt latency is likely at least 1-5 us on MS-Win2k (Linux &
FreeBSD APIC is much better, and MS-WinXP pro might have APIC).

If GBE is going to have a chance of working, you will have to
look carefully for chipsets that can stream data both ways
(busmaster directly) without buffering it (full load packet
before sending).

If you cannot, then you might need to break the data into smaller
packets (200-500B) and accept the overhead to reduce latency.

Quoted text here. Click to load it

I would suggest MS-DOS (or MS-Win98se as the least bad DOSish
MS-Windows).  This can run in x86real-mode and avoid a lot of
task switch and protection latencies.

Quoted text here. Click to load it

Nothing standard, I'm quite sure.  You may have to write
asm polling no-copy drivers.  I don't think you can afford
a standard protocol stack, but might be able to on a fast CPU.

Quoted text here. Click to load it

No surprise.  The OS cannot keep up and drops interrupts.

Quoted text here. Click to load it

This sounds about right.

-- Robert

Re: Help How to achieve 1kb in 10 microsec

Quoted text here. Click to load it

One of my co-workers (who -is- technically minded) mentioned to me
a few days ago that another of my co-workers is getting about 0.8 Gbit/s
with ftp between two AMD Athalon server-type systems. That's over
all overheads.

If the figure has reached me correctly then;
A) it wasn't Windows; and
B) it would be a -throughput- measure, not an elapsed-time measure.

I would have to investigate to find out whether it is PCI based. It
is, though, 1 GbE.

I haven't been following too closely, but I thought I saw someone
posting a few months ago indicating that at 10 GbE the minimum packet
size increases quite a bit and that various other parts of the protocol
have different timing. IIRC, 10 GbE is not just 1 GbE run 10 times

2 GbE might be a possibility if 1 GbE is not quite fast enough.
Or 2 parallel 1 GbE links with a 576 byte packet each ;-)

Re: Help How to achieve 1kb in 10 microsec

Am I interpreting things correctly that you want to exhange 1KB of
data each way bewteen two machines and have that take only 10

Or do you simply mean have 1KB of data transmitted in less than 10
microseconds from one end to the other?

FWIF, you might want to look at any interrupt coalsecing parms on your
NIC(s).  The defaults are often selected with a mind toward minimizing
CPU utilization for bulk transfers rather than minimizing latency.

And while that may make things better, I'm not sure I've seen anything
get down to 10 microseconds request/response latency that still
involved IP and UDP or TCP, and it has been a very long time since
I've played with netperf link-level request/response stuff.

For that low a request/response latency you may need to consider stuff
like Myrinet/Quadrics/rDMA etc etc.

rick jones
oxymoron n, commuter in a gas-guzzling luxury SUV with an American flag
these opinions are mine, all mine; HP might not want them anyway... :)
feel free to post, OR email to rick.jones2 in but NOT BOTH...

Re: Help How to achieve 1kb in 10 microsec

Quadrics/elan4 can provide this kind of latency. Fast opterons can
easily sustain a 1k ping-ping in <4.5uS, and even an aging itanium can
keep up a bit over 6uS. It depends on exactly what you are going to do
with the data, where it is coping from etc

Site Timeline