Hello,

I am just trying to see if I got the concept right regarding RX/TX descriptors. 
I am having some problems with a highly loaded server ( 4 oracle DBs on top ). 
It's a Solaris 10 138888-08, and i know these are the OpenSolaris forums but 
bare with me, because i don't think it makes a difference in this specific case.

So, after some basic debugging found out that every time a connection would be 
established, the first 80 packets would just " hang" and appear all at the 81st 
packet ( ex: in ping ) and from there it would work just fine.

In the e1000g man page I found this:
NumRxDescriptors
    Number of available receive descriptors. Multiple receive descriptors 
increase receive performance, but decrease available memory.
    80–4096        Allowed values.
    1024 Default.

And also in the e1000g_sw.h 
(http://fxr.watson.org/fxr/source/common/io/e1000g/e1000g_sw.h?v=OPENSOLARIS ), 
I found this :
#define MIN_NUM_TX_DESCRIPTOR           80
#define MIN_NUM_RX_DESCRIPTOR           80

Also, on 
http://icfamon.dl.ac.uk/papers/DataTAG-WP2/reports/task1/20021205-goutelle.pdf 
, talking about a similar problem but on Linux, at page : Typical queue 
lengths(2) he says : The tx_ring and rx_ring are driver
dependent (e.g. the e1000 driver set these lengths to 80 packets) ;

Now help me understand if I got this right. A hardware interrupt to read the 
ring buffer, will only occur if at least 80 TX/RX descriptors are ready ?

If yes, why on same types of server but with less network load the "initial 
hang" doesn't occur ? 

If i got this all wrong please tell me. I am just putting head to head some 
bits and pieces of informations I got from around.
-- 
This message posted from opensolaris.org
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to