Maen Suleiman
2007-03-14 17:24:43 UTC
Hi,
I am trying to tune our giga driver performance , I have noticed that
the system spends 57% of the time on interrupts when we do an oriented
receive test, while the system spends only 20% of the time on
interrupts when we do an oriented send test.
From the profiler results , we understood that the main reason of
spending this time on the RX interrupt was because of the
MGETHDR,MCLGET and bus_dmamap_load , and mainly because of the
bus_dmamap_load function.
The problem is that we couldn't find an alternative of allocating
mbufs and calling bus_dmamap_load in the RX interrupt,!
Will using a task to do the mbuf handling help ?
Is there a way to tell the TCP stack to give me back the mbuf that was
delivered to it, and then I can re-use the same mbufs without calling
bus_dmamap_load?
Is there a way to allocate a constant physical memory block for the RX
DMA , and then using this block for the mbufs that will be delivered
to the stack? In this case I must know when the TCP stack has finished
handling the mbuf, and then I will re-use the same memory physical
space!
Thanks in advance
--
Posted automagically by a mail2news gateway at muc.de e.V.
Please direct questions, flames, donations, etc. to news-***@muc.de
I am trying to tune our giga driver performance , I have noticed that
the system spends 57% of the time on interrupts when we do an oriented
receive test, while the system spends only 20% of the time on
interrupts when we do an oriented send test.
From the profiler results , we understood that the main reason of
spending this time on the RX interrupt was because of the
MGETHDR,MCLGET and bus_dmamap_load , and mainly because of the
bus_dmamap_load function.
The problem is that we couldn't find an alternative of allocating
mbufs and calling bus_dmamap_load in the RX interrupt,!
Will using a task to do the mbuf handling help ?
Is there a way to tell the TCP stack to give me back the mbuf that was
delivered to it, and then I can re-use the same mbufs without calling
bus_dmamap_load?
Is there a way to allocate a constant physical memory block for the RX
DMA , and then using this block for the mbufs that will be delivered
to the stack? In this case I must know when the TCP stack has finished
handling the mbuf, and then I will re-use the same memory physical
space!
Thanks in advance
--
Posted automagically by a mail2news gateway at muc.de e.V.
Please direct questions, flames, donations, etc. to news-***@muc.de