David S. Miller writes:
> On 11 Sep 2003 21:34:23 -0400
> jamal <hadi@xxxxxxxxxx> wrote:
>
> > dont increase the tx descriptor ring size - that would truly wasting
> > memory; 256 is pretty adequate.
> > * increase instead the txquelen (as suggested by Davem); user space
> > tools like ip or ifconfig could do it. The standard size has been around
> > 100 for 100Mbps; i suppose it is fair to say that Gige can move data out
> > at 10x that; so set it to 1000. Maybe you can do this from the driver
> > based on what negotiated speed is detected?
>
> I spoke with Alexey once about this, actually tx_queue_len can
> be arbitrarily large but it should be reasonable nonetheless.
>
> Our preliminary conclusions were that values of 1000 for 100Mbit and
> faster were probably appropriate. Maybe something larger for 1Gbit,
> who knows.
>
> We also determined that the only connection between TX descriptor
> ring size and dev->tx_queue_len was that the latter should be large
> enough to handle, at a minimum, the amount of pending TX descriptor
> ACKs that can be pending considering mitigation et al.
>
> So if TX irq mitigation can defer up to N TX descriptor completions
> then dev->tx_queue_len must be at least that large.
>
> Back to the main topic, maybe we should set dev->tx_queue_len to
> 1000 by default for all ethernet devices.
Hello!
Yes sounds like adequate setting for GIGE. This is what use for production
and lab but rather than increasing dev->tx_queue_len to 1000 we replace the
pfifo_fast with the pfifo qdisc w. setting a qlen of 1000.
And with we have tx_descriptor_ring_size 256 which is tuned to the NIC's
"TX service interval" with respect to interrupt mitigation etc. This seems
good enough even for small packets.
For routers this setting is even more crucial as we need to serialize
several flows and we know the flows are bursty.
Cheers.
--ro
|