diff mbox

UDP is bypassing qdisc statistics ....

Message ID 4A9D3D9A.1030500@gmail.com
State RFC, archived
Delegated to: David Miller
Headers show

Commit Message

Eric Dumazet Sept. 1, 2009, 3:28 p.m. UTC
Christoph Lameter a écrit :
> On Tue, 1 Sep 2009, Eric Dumazet wrote:
> 
>> Hmm, my bnx2 still displays correct info here (BCM5708S) ; so maybe Christoph has a
>> real multiqueue NIC adapter ? I thought he mentioned a mono queue NIC earlier.
> 
> I have no clue if it is or not. I have never used those features.
> 
> dmesg says:
> 
> Broadcom NetXtreme II BCM5709 1000Base-T (C0) PCI Express
> 
> Is that a multiqueue adapter?

You should see that in /proc/interrupts, if I correctly understand bnx2.c

Just to be sure :
With following patch I got in my syslog :

[    8.789048] rx_rings=1 real_num_tx_queues=1
[    9.005700] rx_rings=1 real_num_tx_queues=1

So my bnx2 is mono-queue :(




--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Eric Dumazet Sept. 1, 2009, 3:43 p.m. UTC | #1
Christoph Lameter a écrit :
> On Tue, 1 Sep 2009, Eric Dumazet wrote:
> 
>> You should see that in /proc/interrupts, if I correctly understand bnx2.c
> 
> Hmmm I have 8 interrupts:
> 
>   62:        158          0          0          0          0          0
> 0          0          0          0          0          0          0
> 0          0          0  IR-PCI-MSI-edge      eth0-0
>   63:         84          0          0          0          0          0
> 0          0          0          0          0          0          0
> 0          0          0  IR-PCI-MSI-edge      eth0-1
>   64:        412          0          0          0          0          0
> 0          0          0          0          0          0          0
> 0          0          0  IR-PCI-MSI-edge      eth0-2
>   65:         25          0          0          0          0          0
> 0          0          0          0          0          0          0
> 0          0          0  IR-PCI-MSI-edge      eth0-3
>   66:      49718          0          0          0          0          0
> 0          0          0          0          0          0          0
> 0          0          0  IR-PCI-MSI-edge      eth0-4
>   67:         65          0          0          0          0          0
> 0          0          0          0          0          0          0
> 0          0          0  IR-PCI-MSI-edge      eth0-5
>   68:        686          0          0          0          0          0
> 0          0          0          0          0          0          0
> 0          0          0  IR-PCI-MSI-edge      eth0-6
>   69:       2582          0          0          0          0          0
> 0          0          0          0          0          0          0
> 0          0          0  IR-PCI-MSI-edge      eth0-7

Yes, this confirm you have 8 queues on this NIC

Strange thing is they seem to be all serviced by CPU-0, which is not good...


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eric Dumazet Sept. 1, 2009, 3:58 p.m. UTC | #2
Eric Dumazet a écrit :
> Christoph Lameter a écrit :
>> On Tue, 1 Sep 2009, Eric Dumazet wrote:
>>
>>> You should see that in /proc/interrupts, if I correctly understand bnx2.c
>> Hmmm I have 8 interrupts:
>>
>>   62:        158          0          0          0          0          0
>> 0          0          0          0          0          0          0
>> 0          0          0  IR-PCI-MSI-edge      eth0-0
>>   63:         84          0          0          0          0          0
>> 0          0          0          0          0          0          0
>> 0          0          0  IR-PCI-MSI-edge      eth0-1
>>   64:        412          0          0          0          0          0
>> 0          0          0          0          0          0          0
>> 0          0          0  IR-PCI-MSI-edge      eth0-2
>>   65:         25          0          0          0          0          0
>> 0          0          0          0          0          0          0
>> 0          0          0  IR-PCI-MSI-edge      eth0-3
>>   66:      49718          0          0          0          0          0
>> 0          0          0          0          0          0          0
>> 0          0          0  IR-PCI-MSI-edge      eth0-4
>>   67:         65          0          0          0          0          0
>> 0          0          0          0          0          0          0
>> 0          0          0  IR-PCI-MSI-edge      eth0-5
>>   68:        686          0          0          0          0          0
>> 0          0          0          0          0          0          0
>> 0          0          0  IR-PCI-MSI-edge      eth0-6
>>   69:       2582          0          0          0          0          0
>> 0          0          0          0          0          0          0
>> 0          0          0  IR-PCI-MSI-edge      eth0-7
> 
> Yes, this confirm you have 8 queues on this NIC
> 
> Strange thing is they seem to be all serviced by CPU-0, which is not good...
> 
> 
> 

Given that bnx2.c uses num_online_cpus() at init time, you could
as a workaround do the insmod/modprobe bnx2 with only one online cpu,
and you'll revert to a mono-queue NIC :)

int msix_vecs = min(cpus + 1, RX_MAX_RINGS); 
...
if ((bp->flags & BNX2_FLAG_MSIX_CAP) && !dis_msi && cpus > 1)
	bnx2_enable_msix(bp, msix_vecs);


For your multicast test anyway, only one queue should be used (one flow)


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Lameter Sept. 1, 2009, 7:35 p.m. UTC | #3
On Tue, 1 Sep 2009, Eric Dumazet wrote:

> You should see that in /proc/interrupts, if I correctly understand bnx2.c

Hmmm I have 8 interrupts:

  62:        158          0          0          0          0          0
0          0          0          0          0          0          0
0          0          0  IR-PCI-MSI-edge      eth0-0
  63:         84          0          0          0          0          0
0          0          0          0          0          0          0
0          0          0  IR-PCI-MSI-edge      eth0-1
  64:        412          0          0          0          0          0
0          0          0          0          0          0          0
0          0          0  IR-PCI-MSI-edge      eth0-2
  65:         25          0          0          0          0          0
0          0          0          0          0          0          0
0          0          0  IR-PCI-MSI-edge      eth0-3
  66:      49718          0          0          0          0          0
0          0          0          0          0          0          0
0          0          0  IR-PCI-MSI-edge      eth0-4
  67:         65          0          0          0          0          0
0          0          0          0          0          0          0
0          0          0  IR-PCI-MSI-edge      eth0-5
  68:        686          0          0          0          0          0
0          0          0          0          0          0          0
0          0          0  IR-PCI-MSI-edge      eth0-6
  69:       2582          0          0          0          0          0
0          0          0          0          0          0          0
0          0          0  IR-PCI-MSI-edge      eth0-7
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christoph Lameter Sept. 1, 2009, 8:13 p.m. UTC | #4
On Tue, 1 Sep 2009, Eric Dumazet wrote:

> For your multicast test anyway, only one queue should be used (one flow)

Right.

I finally get some numbers with the qdisc_stats patch:

clameter@rd-strategy3-deb64:~$ cat /proc/net/qdisc_stats
Type     Device St  Bytes    Packts Qlen Bklg Drops  Requeu Overlimits
TXS root <NULL>   0        0      0    0    0      0      0      0
TX root <NULL>   0        0      0    0    0      0      0      0
RXS root <NULL>   0        0      0    0    0      0      0      0
RX root <NULL>   0        0      0    0    0      0      0      0
TXS root   eth0   0     2778     35    0    0      0      0      0
TX root   eth0   0     2778     35    0    0      0      0      0
TXS root   eth0   0     1622     18    0    0      0      0      0
TX root   eth0   0     1622     18    0    0      0      0      0
TXS root   eth0   0     2618     22    0    0      0      0      0
TX root   eth0   0     2618     22    0    0      0      0      0
TXS root   eth0   0     9792     65    0    0      0      0      0
TX root   eth0   0     9792     65    0    0      0      0      0
TXS root   eth0   0     9758     68    0    0      0      0      0
TX root   eth0   0     9758     68    0    0      0      0      0
TXS root   eth0   0     1413     18    0    0      0      0      0
TX root   eth0   0     1413     18    0    0      0      0      0
TXS root   eth0   0      557      8    0    0      0      0      0
TX root   eth0   0      557      8    0    0      0      0      0
TXS root   eth0   0     1220     11    0    0      0      0      0
TX root   eth0   0     1220     11    0    0      0      0      0
RXS root <NULL>   0        0      0    0    0      0      0      0

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 06b9011..573d6b3 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -6144,6 +6144,7 @@  bnx2_setup_int_mode(struct bnx2 *bp, int dis_msi)
 	bp->dev->real_num_tx_queues = bp->num_tx_rings;

 	bp->num_rx_rings = bp->irq_nvecs;
+	pr_err("rx_rings=%d real_num_tx_queues=%d\n", bp->num_rx_rings,  bp->num_tx_rings);
 }

 /* Called with rtnl_lock */