The point of lists is to be able to benefit from other's experiences so you 
don't have to waste your time "trying" things that others have already done.
I'm not pontificating. I've done the tests. There's no reason for every person 
who is having to exact same problem to do the same tests over and over, hoping 
for somemagically different result. The result will always be the same. Because 
there's no chance of it working properly by chance.
BC


--- On Sun, 4/28/13, Jack Vogel <jfvo...@gmail.com> wrote:

From: Jack Vogel <jfvo...@gmail.com>
Subject: Re: High CPU interrupt load on intel I350T4 with igb on 8.3
To: "Barney Cordoba" <barney_cord...@yahoo.com>
Cc: "FreeBSD Net" <freebsd-net@freebsd.org>, "Clément Hermann (nodens)" 
<nodens2...@gmail.com>
Date: Sunday, April 28, 2013, 1:07 PM

Try setting your queues to 1, run some tests, then try settingyour queues to 2, 
then to 4... its called tuning, and rather thanjust pontificating about it, 
which Barney so loves to do, you can
discover what works best. I ran tests last week preparing for anew driver 
version and found the best results came not only whiletweaking queues, but also 
ring size, and I could see changes based
on the buf ring size....  There are lots of things that may improve ordegrade 
performance depending on the workload.
Jack



On Sun, Apr 28, 2013 at 7:21 AM, Barney Cordoba <barney_cord...@yahoo.com> 
wrote:





--- On Fri, 4/26/13, "Clément Hermann (nodens)" <nodens2...@gmail.com> wrote:



> From: "Clément Hermann (nodens)" <nodens2...@gmail.com>

> Subject: High CPU interrupt load on intel I350T4 with igb on 8.3

> To: freebsd-net@freebsd.org

> Date: Friday, April 26, 2013, 7:31 AM

> Hi list,

>

> We use pf+ALTQ for trafic shaping on some routers.

>

> We are switching to new servers : Dell PowerEdge R620 with 2

> 8-cores Intel Processor (E5-2650L), 8GB RAM and Intel I350T4

> (quad port) using igb driver. The old hardware is using em

> driver, the CPU load is high but mostly due to kernel and a

> large pf ruleset.

>

> On the new hardware, we see high CPU Interrupt load (up to

> 95%), even though there is not much trafic currently (peaks

> about 150Mbps and 40Kpps). All queues are used and binded to

> a cpu according to top, but a lot of CPU time is spent on

> igb queues (interrupt or wait). The load is fine when we

> stay below 20Kpps.

>

> We see no mbuf shortage, no dropped packet, but there is

> little margin left on CPU time (about 25% idle at best, most

> of CPU time is spent on interrupts), which is disturbing.

>

> We have done some tuning, but to no avail :

>

> sysctl.conf :

>

> # mbufs

> kern.ipc.nmbclusters=65536

> # Sockets

> kern.ipc.somaxconn=8192

> net.inet.tcp.delayed_ack=0

> net.inet.tcp.sendspace=65535

> net.inet.udp.recvspace=65535

> net.inet.udp.maxdgram=57344

> net.local.stream.recvspace=65535

> net.local.stream.sendspace=65535

> # IGB

> dev.igb.0.rx_processing_limit=4096

> dev.igb.1.rx_processing_limit=4096

> dev.igb.2.rx_processing_limit=4096

> dev.igb.3.rx_processing_limit=4096

>

> /boot/loader.conf :

>

> vm.kmem_size=1G

> hw.igb.max_interrupt_rate="32000"  # maximum number of

> interrupts/sec generated by single igb(4) (default 8000)

> hw.igb.txd="2048"           

>                

>   # number of transmit descriptors allocated by the

> driver (2048 limit)

> hw.igb.rxd="2048"           

>                

>   # number of receive descriptors allocated by the

> driver (2048 limit)

> hw.igb.rx_process_limit="1000"     #

> maximum number of received packets to process at a time, The

> default of 100 is

>                

>                

>                

>            

>    # too low for most firewalls. (-1 means

> unlimited)

>

> Kernel HZ is 1000.

>

> The IGB /boot/loader.conf tuning was our last attempt, it

> didn't change anything.

>

> Does anyone have any pointer ? How could we lower CPU

> interrupt load ? should we set hw.igb.max_interrupt_rate

> lower instead of higher ?

> From what we saw here and there, we should be able to do

> much better with this hardware.

>

>

> relevant sysctl (igb1 and igb2 only, other interfaces are

> unused) :

>

> sysctl dev.igb | grep -v ": 0$"

> dev.igb.1.%desc: Intel(R) PRO/1000 Network Connection

> version - 2.3.1

> dev.igb.1.%driver: igb

> dev.igb.1.%location: slot=0 function=1

> dev.igb.1.%pnpinfo: vendor=0x8086 device=0x1521

> subvendor=0x8086 subdevice=0x5001 class=0x020000

> dev.igb.1.%parent: pci5

> dev.igb.1.nvm: -1

> dev.igb.1.enable_aim: 1

> dev.igb.1.fc: 3

> dev.igb.1.rx_processing_limit: 4096

> dev.igb.1.eee_disabled: 1

> dev.igb.1.link_irq: 2

> dev.igb.1.device_control: 1209795137

> dev.igb.1.rx_control: 67141658

> dev.igb.1.interrupt_mask: 4

> dev.igb.1.extended_int_mask: 2147483981

> dev.igb.1.fc_high_water: 33168

> dev.igb.1.fc_low_water: 33152

> dev.igb.1.queue0.interrupt_rate: 71428

> dev.igb.1.queue0.txd_head: 1318

> dev.igb.1.queue0.txd_tail: 1318

> dev.igb.1.queue0.tx_packets: 84663594

> dev.igb.1.queue0.rxd_head: 717

> dev.igb.1.queue0.rxd_tail: 715

> dev.igb.1.queue0.rx_packets: 43899597

> dev.igb.1.queue0.rx_bytes: 8905556030

> dev.igb.1.queue1.interrupt_rate: 90909

> dev.igb.1.queue1.txd_head: 693

> dev.igb.1.queue1.txd_tail: 693

> dev.igb.1.queue1.tx_packets: 57543349

> dev.igb.1.queue1.rxd_head: 1033

> dev.igb.1.queue1.rxd_tail: 1032

> dev.igb.1.queue1.rx_packets: 54821897

> dev.igb.1.queue1.rx_bytes: 9944955108

> dev.igb.1.queue2.interrupt_rate: 100000

> dev.igb.1.queue2.txd_head: 350

> dev.igb.1.queue2.txd_tail: 350

> dev.igb.1.queue2.tx_packets: 62320990

> dev.igb.1.queue2.rxd_head: 1962

> dev.igb.1.queue2.rxd_tail: 1939

> dev.igb.1.queue2.rx_packets: 43909016

> dev.igb.1.queue2.rx_bytes: 8673941461

> dev.igb.1.queue3.interrupt_rate: 14925

> dev.igb.1.queue3.txd_head: 647

> dev.igb.1.queue3.txd_tail: 647

> dev.igb.1.queue3.tx_packets: 58776199

> dev.igb.1.queue3.rxd_head: 692

> dev.igb.1.queue3.rxd_tail: 691

> dev.igb.1.queue3.rx_packets: 55138996

> dev.igb.1.queue3.rx_bytes: 9310217354

> dev.igb.1.queue4.interrupt_rate: 100000

> dev.igb.1.queue4.txd_head: 1721

> dev.igb.1.queue4.txd_tail: 1721

> dev.igb.1.queue4.tx_packets: 54337209

> dev.igb.1.queue4.rxd_head: 1609

> dev.igb.1.queue4.rxd_tail: 1598

> dev.igb.1.queue4.rx_packets: 46546503

> dev.igb.1.queue4.rx_bytes: 8818182840

> dev.igb.1.queue5.interrupt_rate: 11627

> dev.igb.1.queue5.txd_head: 254

> dev.igb.1.queue5.txd_tail: 254

> dev.igb.1.queue5.tx_packets: 53117182

> dev.igb.1.queue5.rxd_head: 701

> dev.igb.1.queue5.rxd_tail: 685

> dev.igb.1.queue5.rx_packets: 43014837

> dev.igb.1.queue5.rx_bytes: 8699057447

> dev.igb.1.queue6.interrupt_rate: 55555

> dev.igb.1.queue6.txd_head: 8

> dev.igb.1.queue6.txd_tail: 8

> dev.igb.1.queue6.tx_packets: 52654088

> dev.igb.1.queue6.rxd_head: 1057

> dev.igb.1.queue6.rxd_tail: 1041

> dev.igb.1.queue6.rx_packets: 45227030

> dev.igb.1.queue6.rx_bytes: 9494489640

> dev.igb.1.queue7.interrupt_rate: 5235

> dev.igb.1.queue7.txd_head: 729

> dev.igb.1.queue7.txd_tail: 729

> dev.igb.1.queue7.tx_packets: 61926105

> dev.igb.1.queue7.rxd_head: 146

> dev.igb.1.queue7.rxd_tail: 140

> dev.igb.1.queue7.rx_packets: 51781775

> dev.igb.1.queue7.rx_bytes: 8901279226

> dev.igb.1.mac_stats.missed_packets: 1657

> dev.igb.1.mac_stats.recv_no_buff: 405

> dev.igb.1.mac_stats.total_pkts_recvd: 384332760

> dev.igb.1.mac_stats.good_pkts_recvd: 384331103

> dev.igb.1.mac_stats.bcast_pkts_recvd: 15510

> dev.igb.1.mac_stats.mcast_pkts_recvd: 52957

> dev.igb.1.mac_stats.rx_frames_64: 195496498

> dev.igb.1.mac_stats.rx_frames_65_127: 133346124

> dev.igb.1.mac_stats.rx_frames_128_255: 5254911

> dev.igb.1.mac_stats.rx_frames_256_511: 9700049

> dev.igb.1.mac_stats.rx_frames_512_1023: 16885886

> dev.igb.1.mac_stats.rx_frames_1024_1522: 23647635

> dev.igb.1.mac_stats.good_octets_recvd: 74284029276

> dev.igb.1.mac_stats.good_octets_txd: 544536708502

> dev.igb.1.mac_stats.total_pkts_txd: 485327419

> dev.igb.1.mac_stats.good_pkts_txd: 485327419

> dev.igb.1.mac_stats.bcast_pkts_txd: 72

> dev.igb.1.mac_stats.mcast_pkts_txd: 52820

> dev.igb.1.mac_stats.tx_frames_64: 57820809

> dev.igb.1.mac_stats.tx_frames_65_127: 51586341

> dev.igb.1.mac_stats.tx_frames_128_255: 7050579

> dev.igb.1.mac_stats.tx_frames_256_511: 7887126

> dev.igb.1.mac_stats.tx_frames_512_1023: 10130891

> dev.igb.1.mac_stats.tx_frames_1024_1522: 350851673

> dev.igb.1.interrupts.asserts: 551135045

> dev.igb.1.interrupts.rx_pkt_timer: 384326679

> dev.igb.1.interrupts.tx_queue_empty: 485323376

> dev.igb.1.interrupts.tx_queue_min_thresh: 6324386

> dev.igb.1.host.rx_pkt: 4424

> dev.igb.1.host.tx_good_pkt: 4043

> dev.igb.1.host.rx_good_bytes: 74284030864

> dev.igb.1.host.tx_good_bytes: 544536708502

> dev.igb.2.%desc: Intel(R) PRO/1000 Network Connection

> version - 2.3.1

> dev.igb.2.%driver: igb

> dev.igb.2.%location: slot=0 function=2

> dev.igb.2.%pnpinfo: vendor=0x8086 device=0x1521

> subvendor=0x8086 subdevice=0x5001 class=0x020000

> dev.igb.2.%parent: pci5

> dev.igb.2.nvm: -1

> dev.igb.2.enable_aim: 1

> dev.igb.2.fc: 3

> dev.igb.2.rx_processing_limit: 4096

> dev.igb.2.eee_disabled: 1

> dev.igb.2.link_irq: 2

> dev.igb.2.device_control: 1209795137

> dev.igb.2.rx_control: 67141658

> dev.igb.2.interrupt_mask: 4

> dev.igb.2.extended_int_mask: 2147483959

> dev.igb.2.fc_high_water: 33168

> dev.igb.2.fc_low_water: 33152

> dev.igb.2.queue0.interrupt_rate: 13698

> dev.igb.2.queue0.txd_head: 1618

> dev.igb.2.queue0.txd_tail: 1618

> dev.igb.2.queue0.tx_packets: 46401106

> dev.igb.2.queue0.rxd_head: 831

> dev.igb.2.queue0.rxd_tail: 827

> dev.igb.2.queue0.rx_packets: 69356350

> dev.igb.2.queue0.rx_bytes: 68488772907

> dev.igb.2.queue1.interrupt_rate: 5405

> dev.igb.2.queue1.txd_head: 190

> dev.igb.2.queue1.txd_tail: 190

> dev.igb.2.queue1.tx_packets: 55965886

> dev.igb.2.queue1.rxd_head: 268

> dev.igb.2.queue1.rxd_tail: 256

> dev.igb.2.queue1.rx_packets: 58958084

> dev.igb.2.queue1.rx_bytes: 69154569937

> dev.igb.2.queue2.interrupt_rate: 83333

> dev.igb.2.queue2.txd_head: 568

> dev.igb.2.queue2.txd_tail: 568

> dev.igb.2.queue2.tx_packets: 44974648

> dev.igb.2.queue2.rxd_head: 371

> dev.igb.2.queue2.rxd_tail: 219

> dev.igb.2.queue2.rx_packets: 67037407

> dev.igb.2.queue2.rx_bytes: 72042326102

> dev.igb.2.queue3.interrupt_rate: 12658

> dev.igb.2.queue3.txd_head: 867

> dev.igb.2.queue3.txd_tail: 867

> dev.igb.2.queue3.tx_packets: 55962467

> dev.igb.2.queue3.rxd_head: 85

> dev.igb.2.queue3.rxd_tail: 1953

> dev.igb.2.queue3.rx_packets: 60972965

> dev.igb.2.queue3.rx_bytes: 70397176035

> dev.igb.2.queue4.interrupt_rate: 90909

> dev.igb.2.queue4.txd_head: 1920

> dev.igb.2.queue4.txd_tail: 1920

> dev.igb.2.queue4.tx_packets: 47660931

> dev.igb.2.queue4.rxd_head: 1397

> dev.igb.2.queue4.rxd_tail: 1379

> dev.igb.2.queue4.rx_packets: 59110758

> dev.igb.2.queue4.rx_bytes: 68919201478

> dev.igb.2.queue5.interrupt_rate: 111111

> dev.igb.2.queue5.txd_head: 886

> dev.igb.2.queue5.txd_tail: 886

> dev.igb.2.queue5.tx_packets: 45103990

> dev.igb.2.queue5.rxd_head: 812

> dev.igb.2.queue5.rxd_tail: 799

> dev.igb.2.queue5.rx_packets: 59030312

> dev.igb.2.queue5.rx_bytes: 69234293962

> dev.igb.2.queue6.interrupt_rate: 5208

> dev.igb.2.queue6.txd_head: 1926

> dev.igb.2.queue6.txd_tail: 1926

> dev.igb.2.queue6.tx_packets: 46215046

> dev.igb.2.queue6.rxd_head: 692

> dev.igb.2.queue6.rxd_tail: 689

> dev.igb.2.queue6.rx_packets: 58256050

> dev.igb.2.queue6.rx_bytes: 68429172749

> dev.igb.2.queue7.interrupt_rate: 50000

> dev.igb.2.queue7.txd_head: 126

> dev.igb.2.queue7.txd_tail: 126

> dev.igb.2.queue7.tx_packets: 52451455

> dev.igb.2.queue7.rxd_head: 968

> dev.igb.2.queue7.rxd_tail: 885

> dev.igb.2.queue7.rx_packets: 65946491

> dev.igb.2.queue7.rx_bytes: 70263478849

> dev.igb.2.mac_stats.missed_packets: 958

> dev.igb.2.mac_stats.recv_no_buff: 69

> dev.igb.2.mac_stats.total_pkts_recvd: 498658079

> dev.igb.2.mac_stats.good_pkts_recvd: 498657121

> dev.igb.2.mac_stats.bcast_pkts_recvd: 16867

> dev.igb.2.mac_stats.mcast_pkts_recvd: 52957

> dev.igb.2.mac_stats.rx_frames_64: 59089332

> dev.igb.2.mac_stats.rx_frames_65_127: 52880118

> dev.igb.2.mac_stats.rx_frames_128_255: 7526966

> dev.igb.2.mac_stats.rx_frames_256_511: 8468389

> dev.igb.2.mac_stats.rx_frames_512_1023: 10434770

> dev.igb.2.mac_stats.rx_frames_1024_1522: 360257545

> dev.igb.2.mac_stats.good_octets_recvd: 558910494322

> dev.igb.2.mac_stats.good_octets_txd: 84618858153

> dev.igb.2.mac_stats.total_pkts_txd: 394726904

> dev.igb.2.mac_stats.good_pkts_txd: 394726904

> dev.igb.2.mac_stats.bcast_pkts_txd: 48

> dev.igb.2.mac_stats.mcast_pkts_txd: 52821

> dev.igb.2.mac_stats.tx_frames_64: 196605932

> dev.igb.2.mac_stats.tx_frames_65_127: 134602807

> dev.igb.2.mac_stats.tx_frames_128_255: 5705236

> dev.igb.2.mac_stats.tx_frames_256_511: 10267168

> dev.igb.2.mac_stats.tx_frames_512_1023: 17165496

> dev.igb.2.mac_stats.tx_frames_1024_1522: 30380265

> dev.igb.2.interrupts.asserts: 465994260

> dev.igb.2.interrupts.rx_pkt_timer: 498647546

> dev.igb.2.interrupts.tx_queue_empty: 394720657

> dev.igb.2.interrupts.tx_queue_min_thresh: 24424555

> dev.igb.2.host.rx_pkt: 9575

> dev.igb.2.host.tx_good_pkt: 6248

> dev.igb.2.host.rx_good_bytes: 558910513984

> dev.igb.2.host.tx_good_bytes: 84618858217

>

>

> Thanks for your help.

>

> Cheers,



You're experiencing lock contention



Try editing igb.c and setting the queues to 1. The multiqueue

implementation in igb has a negative impact.



If you have just 1 system get a dual port 82571 card and use the

em driver.



BC

_______________________________________________

freebsd-net@freebsd.org mailing list

http://lists.freebsd.org/mailman/listinfo/freebsd-net

To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"



_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to