Re: Udp sending performance in Gbit Ethernet



"Stephan Wolf [MVP]" wrote:
> So I am *not* actually suprised by the behaviour you describe. We often
> saw a sudden drop of perfromance for certain packet (frame) sizes. And
> there can be just so many reasons like interrupts and DMA.
>
> If the number of interrupts increases by a factor of 3 as you describe,
> then there is probably some limit reached in the driver or in the card
> such as the maximum DMA block size or alike, which forces the driver to
> split frames into several DMA transfers. Since some cards generate an
> interrupt at the end of each DMA transfer, this would be an
> explanation.

I do not know the internals of the Windows driver model, so I really cannot
make any comments. Your comments seem reasonable, but they still leave the
following open points:

- Why is it faster to send 3 UDP packets of size 1024 bytes than 1 of size
1025?
- Why is it twice as fast to send one fragmented UDP packet, where both
fragments are of size 1400+ bytes than two un-fragmented packets of size 1400
bytes?
- Why there is no such phenomenon with TCP? It sends large packets also.
(And achieves the same speeds than UDP with 1024 byte datagrams)
- Why increasing the number of applications (sockets) increase the throughput?
- Why increasing the number of threads with one socket increase the
throughput?

As I said, I don't know the internals of the windows networking, but the
points above in my opinion belong to the TCP/IP stack implementation, not
driver implementation.

Furthermore:
- I have tested this with at least 4 different cards (see below), each of
them has the same problem.
- This problem does not exist in Linux, when run on exactly the same hardware.

See also:
http://www.chch.demon.co.uk/wintest/wintest.html

> 1. Try different versions of the driver for the card (even older ones).

This I have not tried.

> 2. Try some other card (different chipset) along with its driver.

This I have tried.

> 3. Holler at the card vendor's support (don't expect too much).

This I have not tried.


> BTW, which chipset does your GigE card use (Marvell, Broadcom, Intel,
> etc.)?

I had the list in one of the previous posts, but at least:

- 3Com 3c2000
- Intel PRO/1000 GT
- Compaq Server NIC
- NVIDIA NForce chipset (motherboard) NIC

I would be suprised, if each of the manufacturers above would make the same
mistake in their drivers...

Greetings

Juha

.



Relevant Pages

  • Re: Reading audio samples immediately
    ... driver assembly code for my particular soundcard and set up, ... stopped the card and the DMA controller myself. ... wishing some special mode would be created for use of real-time sound. ...
    (microsoft.public.win32.programmer.directx.audio)
  • ANNOUNCE: Driver for Rocky 4782E WDT and pls help
    ... The driver - rockywdt - can be downloaded from here ... made here resulting 5% system load when idle, ... The card reqests the PCI bus for each turn, ... (Note that each packet can get thru in one turn) ...
    (Linux-Kernel)
  • Re: Udp sending performance in Gbit Ethernet
    ... >> saw a sudden drop of perfromance for certain packet sizes. ... >> such as the maximum DMA block size or alike, which forces the driver to ... >> split frames into several DMA transfers. ... Try different versions of the driver for the card. ...
    (microsoft.public.development.device.drivers)
  • Re: Need guidance developing NIC driver
    ... OTOH how router will decide to what adapter will be packet send if both have ... >> model) PCI NIC cards as a single logical network card to the OS. ... >> I've gotten a pair of books on driver development: ...
    (microsoft.public.development.device.drivers)
  • Re: DMA Transfer problem
    ... and as far as i know, this ADC card involves a lot of register writings for the counter ICs that help configuring the clock speed for the DMA transfer.... ... Now, the problem is that, when running on the Chino-Laxsons board PCs, the DMA transfers take varying time to complete, but this is not supposed to happen on any other machines we tested on. ... And another interesting thing is that, this card seems to work fine with the Windows driver available to it. ...
    (Linux-Kernel)