Find the answer to your Linux question:
Results 1 to 3 of 3
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1

    Ethernet Receive Buffer Overruns


    I have a system that has 4 identical ethernet cards (Intel 82555).
    eth0 and eth3 talk IP and eth1 ann eth2 are not IP but talk a
    proprietary protocol. I get receive overruns on the interfaces eth2
    and eth3. The application that talks on these interfaces sends out a
    request message to which 100's of production machines send a response
    (size MTU + sizeof(ethernet header)). This sudden burst of response
    overwhelms the receiver and it drops the packets.

    I tried changing the CPU Saver Bundle size and also the Interrupt
    Delay time. Also i tried changing the kernel level buffers. All this
    to no avail. I am not sure if using a faster card would relieve or
    increase the problem.

    Do you have any suggestions on how to solve the problem? Also do you
    need any more details? The system runs a custom linux kernel 2.4.18.
    The overrun errors also occur with the 2.4.21 kernel. The e100 driver
    version is: 2.3.40 and bus-info: 02:08.0 as given by ethtool. All the interaces are 100 Mbps Full Duplex. No overruns are seen on the IP segment, but its not bursty even though has significantly higher traffic that eth1 and eth2. I've tried almost everything i can think of. Thanks in advance,


  2. #2
    Linux Engineer
    Join Date
    Sep 2003
    Knoxhell, TN
    Can you change the timing of the production machines' response so that they respond in series rather than all at once? if you could time it right, you wouldn't hit the choke point and could still receive all of the responses...

    also, try splitting the load onto several boxen rather than just the one.. if you could have four boxen doing the job, then you wouldn't have to worry so much about the load spikes... (maybe.)

    you could also try Gb Ethernet cards....
    Their code will be beautiful, even if their desks are buried in 3 feet of crap. - esr

  3. #3
    Hi, Thanks for the reply.

    I cannot change the timing as these are 1000 production machines operating independently. Also its only once machine through one interface that has to receive it. If at all I can change the card, making it a GB card would make the data come in faster (corerct me if i am wrong). I guess the only thing that appears to me right now that could have an effect is to increase the number of ring buffers to equal the number of production machines. this might give the kernel enough memory and time to read packets from the ring buffers. Does it sound logical??


  4. $spacer_open

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts