Test on 10GBE Intel based network card
Invernizzi Fabrizio
fabrizio.invernizzi at telecomitalia.it
Tue Aug 4 08:14:49 UTC 2009
Ray,
>To me it looks like interrupt coalescing is not switched on for some reason.
>Are you passing any parameters to the driver in boot.conf.
This is my loader.conf
kern.ipc.nmbclusters=65635
kern.hz=1000
net.bpf_jitter.enable=1
# net.graph.threads=32
# if_em_load="YES"
# NETGRAPH TUNING
net.graph.maxdata=1024
kern.ipc.somaxconn=4096
net.inet.tcp.recvspace=78840
net.inet.tcp.sendspace=78840
kern.ipc.shmmax=67108864
kern.ipc.shmmni=200
kern.ipc.shmseg=128
kern.ipc.semmni=70
net.local.stream.sendspace=82320
net.local.stream.recvspace=82320
net.inet.tcp.local_slowstart_flightsize=10
net.inet.tcp.nolocaltimewait=1
net.inet.tcp.hostcache.expire=3900
kern.maxusers=512
kern.ipc.nmbclusters=32768
kern.ipc.maxsockets=81920
kern.ipc.maxsockbuf=1048576
net.inet.tcp.tcbhashsize=4096
net.inet.tcp.hostcache.hashsize=1024
>Could you retest with vmstat switched on "vmstat 3" and send us the output.
>I expect we are going to see alot of interrupts.
Sending 535714 pps (64bytes-long)
INTRUDER-64# vmstat 3
procs memory page disks faults cpu
r b w avm fre flt re pi po fr sr da0 da1 in sy cs us sy id
0 0 0 95420K 7203M 19 0 0 0 17 0 0 0 642 66 1078 0 2 98
0 0 0 95420K 7203M 0 0 0 0 0 0 2 0 18 65 527 0 0 100
0 0 0 95420K 7203M 0 0 0 0 0 0 0 0 18 67 527 0 0 100
0 0 0 95420K 7203M 0 0 0 0 0 0 0 0 17 64 525 0 0 100
0 0 0 95420K 7203M 0 0 0 0 0 0 0 0 31526 64 31402 0 87 13
0 0 0 95420K 7203M 0 0 0 0 0 0 0 0 36767 64 33320 0 99 1
0 0 0 95420K 7203M 423 0 0 0 406 0 0 0 36174 384 28107 0 99 1
0 0 0 95420K 7203M 0 0 0 0 0 0 0 0 36706 64 27043 0 99 1
0 0 0 95420K 7203M 0 0 0 0 0 0 0 0 34006 64 13117 0 91 9
2 0 0 95420K 7203M 0 0 0 0 0 0 0 0 17 64 550 0 1 99
0 0 0 95420K 7203M 0 0 0 0 3 0 3 0 19 68 507 0 0 100
dev.ix.0.%desc: Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 1.7.4
dev.ix.0.%driver: ix
dev.ix.0.%location: slot=0 function=0
dev.ix.0.%pnpinfo: vendor=0x8086 device=0x10c6 subvendor=0x8086 subdevice=0xa15f class=0x020000
dev.ix.0.%parent: pci3
dev.ix.0.stats: -1
dev.ix.0.debug: -1
dev.ix.0.flow_control: 0
dev.ix.0.enable_lro: 1
Adaptive Interrupt Mitigation is enabled:
dev.ix.0.enable_aim: 1
I did not changed AIM settings since is quite complex to tune them up. I tried to reverse engineering the algorithm of AIM (see attached picture) but I can't obtain tangible improvements playing with these paramenters. My understanding is that I should reduce the low_latency, but it seems not to work.
dev.ix.0.low_latency: 128
dev.ix.0.ave_latency: 400
dev.ix.0.bulk_latency: 1200
Not sure about this
dev.ix.0.hdr_split: 0
Not sure about the meaning of
dev.ix.0.rx_processing_limit: 100
These are the settings I am using in the ixgbe driver:
#define DEFAULT_TXD 1024
#define PERFORM_TXD 2048
#define MAX_TXD 4096
#define MIN_TXD 64
#define DEFAULT_RXD 1024
#define PERFORM_RXD 2048
#define MAX_RXD 4096
#define MIN_RXD 64
#define IXGBE_TX_CLEANUP_THRESHOLD (adapter->num_tx_desc / 1)
#define IXGBE_TX_OP_THRESHOLD (adapter->num_tx_desc / 4)
I see that I had a good performance improvement setting IXGBE_TX_CLEANUP_THRESHOLD to the tx queue size.
This is clear to understand since this (greatly) minimizes context switching in send process reducing the number of time the txq function is called. (Of course with this settings send latency is increased, but this is not an issue).
I can't understand the meaning of these parameters and if they could help:
/*
* This parameter controls the maximum no of times the driver will loop in
* the isr. Minimum Value = 1
*/
#define MAX_LOOP 10
/*
* This parameter controls the duration of transmit watchdog timer.
*/
#define IXGBE_TX_TIMEOUT 5 /* set to 5 seconds */
Fabrizio
Questo messaggio e i suoi allegati sono indirizzati esclusivamente alle persone indicate. La diffusione, copia o qualsiasi altra azione derivante dalla conoscenza di queste informazioni sono rigorosamente vietate. Qualora abbiate ricevuto questo documento per errore siete cortesemente pregati di darne immediata comunicazione al mittente e di provvedere alla sua distruzione, Grazie.
This e-mail and any attachments is confidential and may contain privileged information intended for the addressee(s) only. Dissemination, copying, printing or use by anybody else is unauthorised. If you are not the intended recipient, please delete this message and any attachments and advise the sender by return e-mail, Thanks.
More information about the freebsd-performance
mailing list