* [Intel-wired-lan] i40e card Tx resets
@ 2016-03-14 21:43 Sowmini Varadhan
2016-03-15 6:12 ` [Intel-wired-lan] [E1000-devel] " zhuyj
0 siblings, 1 reply; 14+ messages in thread
From: Sowmini Varadhan @ 2016-03-14 21:43 UTC (permalink / raw)
To: intel-wired-lan
Hi,
I am trying out some DB stress tests on both i40e and ixgbe. The
stress test that I use is rds-stress (http://linux.die.net/man/1/rds-stress),
and I can list out the entire set of steps and parameters that I
am using to run this if that info is interesting.
My test bed is a pair of X5-2 (Haswell) servers, each with a
Niantic (X540-AT2) card and a Fortville card. The Niantic/fortville
cards are connected back-to-back, so I essentially have a 10G
connection and a 40G connection.
Everything else (kernel, RDS modules, stress test and parameters)
remaining the same, I get the expected throughput on the 10G
connection, but the i40e connection goes through a lot of TX
errors that result in console messages like this:
i40e 0000:81:00.0: TX driver issue detected, PF reset issued
i40e 0000:81:00.0 eth2: adding 68:05:ca:30:db:30 vid=0
i40e 0000:81:00.0: TX driver issue detected, PF reset issued
i40e 0000:81:00.0 eth2: VSI_seid 390, Hung TX queue 32, tx_pending: 82, NTC:0xeb, HWB: 0xeb, NTU: 0x13d, TAIL: 0x13d
i40e 0000:81:00.0 eth2: VSI_seid 390, Issuing force_wb for TX queue 32, Interrupt Reg
I understand these are "mdd errors", but how can I find out what
triggered these errors, any hints?
The other data-point here is that if I disable tso, and fall back
to gso, there are no tx errors, and throughput matches the 10G
connection (for the same set of test parameters).
Please let me know if there is any other info that would help.
The kernel is a 4.5.0-rc2 kernel. Info for the i40e card is
# ethtool -i eth3
driver: i40e
version: 1.4.8-k
firmware-version: 5.02 0x80002285 0.0.0
bus-info: 0000:81:00.1
:
Thanks in advance,
--Sowmini
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-14 21:43 [Intel-wired-lan] i40e card Tx resets Sowmini Varadhan
@ 2016-03-15 6:12 ` zhuyj
2016-03-15 8:55 ` zhuyj
0 siblings, 1 reply; 14+ messages in thread
From: zhuyj @ 2016-03-15 6:12 UTC (permalink / raw)
To: intel-wired-lan
Hi,
I have the similar problem. Would you like to make tests with pktgen tools?
Maybe the test result is not related with tso.
Zhu Yanjun
On 03/15/2016 05:43 AM, Sowmini Varadhan wrote:
> Hi,
>
> I am trying out some DB stress tests on both i40e and ixgbe. The
> stress test that I use is rds-stress (http://linux.die.net/man/1/rds-stress),
> and I can list out the entire set of steps and parameters that I
> am using to run this if that info is interesting.
>
> My test bed is a pair of X5-2 (Haswell) servers, each with a
> Niantic (X540-AT2) card and a Fortville card. The Niantic/fortville
> cards are connected back-to-back, so I essentially have a 10G
> connection and a 40G connection.
>
> Everything else (kernel, RDS modules, stress test and parameters)
> remaining the same, I get the expected throughput on the 10G
> connection, but the i40e connection goes through a lot of TX
> errors that result in console messages like this:
>
> i40e 0000:81:00.0: TX driver issue detected, PF reset issued
> i40e 0000:81:00.0 eth2: adding 68:05:ca:30:db:30 vid=0
> i40e 0000:81:00.0: TX driver issue detected, PF reset issued
> i40e 0000:81:00.0 eth2: VSI_seid 390, Hung TX queue 32, tx_pending: 82, NTC:0xeb, HWB: 0xeb, NTU: 0x13d, TAIL: 0x13d
> i40e 0000:81:00.0 eth2: VSI_seid 390, Issuing force_wb for TX queue 32, Interrupt Reg
>
> I understand these are "mdd errors", but how can I find out what
> triggered these errors, any hints?
>
> The other data-point here is that if I disable tso, and fall back
> to gso, there are no tx errors, and throughput matches the 10G
> connection (for the same set of test parameters).
>
> Please let me know if there is any other info that would help.
> The kernel is a 4.5.0-rc2 kernel. Info for the i40e card is
>
> # ethtool -i eth3
> driver: i40e
> version: 1.4.8-k
> firmware-version: 5.02 0x80002285 0.0.0
> bus-info: 0000:81:00.1
> :
>
> Thanks in advance,
> --Sowmini
>
> ------------------------------------------------------------------------------
> Transform Data into Opportunity.
> Accelerate data analysis in your applications with
> Intel Data Analytics Acceleration Library.
> Click to learn more.
> http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
> _______________________________________________
> E1000-devel mailing list
> E1000-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/e1000-devel
> To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-15 6:12 ` [Intel-wired-lan] [E1000-devel] " zhuyj
@ 2016-03-15 8:55 ` zhuyj
2016-03-15 10:54 ` Sowmini Varadhan
0 siblings, 1 reply; 14+ messages in thread
From: zhuyj @ 2016-03-15 8:55 UTC (permalink / raw)
To: intel-wired-lan
On 03/15/2016 02:12 PM, zhuyj wrote:
> Hi,
>
> I have the similar problem. Would you like to make tests with pktgen
> tools?
> Maybe the test result is not related with tso.
Sorry. I explain this in details.
I have an similar problem. At first, I think it is related with tso.
Then I made tests with pktgen tools and found that this similar problem
still occurred whether
tso is enabled or not.
So I suggest to make tests with pktgen tools to exclude tso.
Best Regards!
Zhu Yanjun
>
> Zhu Yanjun
>
> On 03/15/2016 05:43 AM, Sowmini Varadhan wrote:
>> Hi,
>>
>> I am trying out some DB stress tests on both i40e and ixgbe. The
>> stress test that I use is rds-stress
>> (http://linux.die.net/man/1/rds-stress),
>> and I can list out the entire set of steps and parameters that I
>> am using to run this if that info is interesting.
>>
>> My test bed is a pair of X5-2 (Haswell) servers, each with a
>> Niantic (X540-AT2) card and a Fortville card. The Niantic/fortville
>> cards are connected back-to-back, so I essentially have a 10G
>> connection and a 40G connection.
>>
>> Everything else (kernel, RDS modules, stress test and parameters)
>> remaining the same, I get the expected throughput on the 10G
>> connection, but the i40e connection goes through a lot of TX
>> errors that result in console messages like this:
>>
>> i40e 0000:81:00.0: TX driver issue detected, PF reset issued
>> i40e 0000:81:00.0 eth2: adding 68:05:ca:30:db:30 vid=0
>> i40e 0000:81:00.0: TX driver issue detected, PF reset issued
>> i40e 0000:81:00.0 eth2: VSI_seid 390, Hung TX queue 32,
>> tx_pending: 82, NTC:0xeb, HWB: 0xeb, NTU: 0x13d, TAIL: 0x13d
>> i40e 0000:81:00.0 eth2: VSI_seid 390, Issuing force_wb for TX
>> queue 32, Interrupt Reg
>>
>> I understand these are "mdd errors", but how can I find out what
>> triggered these errors, any hints?
>>
>> The other data-point here is that if I disable tso, and fall back
>> to gso, there are no tx errors, and throughput matches the 10G
>> connection (for the same set of test parameters).
>>
>> Please let me know if there is any other info that would help.
>> The kernel is a 4.5.0-rc2 kernel. Info for the i40e card is
>>
>> # ethtool -i eth3
>> driver: i40e
>> version: 1.4.8-k
>> firmware-version: 5.02 0x80002285 0.0.0
>> bus-info: 0000:81:00.1
>> :
>>
>> Thanks in advance,
>> --Sowmini
>>
>> ------------------------------------------------------------------------------
>>
>> Transform Data into Opportunity.
>> Accelerate data analysis in your applications with
>> Intel Data Analytics Acceleration Library.
>> Click to learn more.
>> http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
>> _______________________________________________
>> E1000-devel mailing list
>> E1000-devel at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/e1000-devel
>> To learn more about Intel® Ethernet, visit
>> http://communities.intel.com/community/wired
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-15 8:55 ` zhuyj
@ 2016-03-15 10:54 ` Sowmini Varadhan
2016-03-16 3:19 ` zhuyj
0 siblings, 1 reply; 14+ messages in thread
From: Sowmini Varadhan @ 2016-03-15 10:54 UTC (permalink / raw)
To: intel-wired-lan
On (03/15/16 16:55), zhuyj wrote:
> Sorry. I explain this in details.
> I have an similar problem. At first, I think it is related with tso.
> Then I made tests with pktgen tools and found that this similar
> problem still occurred whether
> tso is enabled or not.
>
> So I suggest to make tests with pktgen tools to exclude tso.
>
I realize that TSO might not be the root cause (Tushar also
pointed that out) but might just be triggering the issue...
I dont think we need pktgen at this point- it's quite easy
to reproduce this on commodity Haswell servers, and by installing
the rds-stress from the rpm below:
http://public-yum.oracle.com/repo/OracleLinux/OL6/ofed_UEK/x86_64//getPackageSource/rds-tools-2.0.7-1.12.el6.src.rpm
To run it, set up 2 nodes connected on i40e. I shall call them
"client" and "server" though both will send traffic in the test
Start the listener:
server# modprobe rds-tcp
server# rds-stress -r <server addr>
Start the test:
client# modprobe rds-tcp
client# rds-stress -r <client addr> -s <server-addr> -q 256 -a 8192 -d16 -t16 -T30
(all params are explained in the rds-stress man page)
If you do this on ixgbe, you will see that the column for "tx+rx K/s"
shows a steady throughput, whereas i40e numbers are bursty and low.
Also, for i40e, you will see messages about TX hang on on the console.
I think that, to find the root-cause, we need to see what is
triggering the mdd error.
Would be good if someone from Intel could provide some hints on
how to do that (or try the above tests!)
--Sowmini
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-15 10:54 ` Sowmini Varadhan
@ 2016-03-16 3:19 ` zhuyj
2016-03-16 3:25 ` Sowmini Varadhan
0 siblings, 1 reply; 14+ messages in thread
From: zhuyj @ 2016-03-16 3:19 UTC (permalink / raw)
To: intel-wired-lan
On 03/15/2016 06:54 PM, Sowmini Varadhan wrote:
> On (03/15/16 16:55), zhuyj wrote:
>> Sorry. I explain this in details.
>> I have an similar problem. At first, I think it is related with tso.
>> Then I made tests with pktgen tools and found that this similar
>> problem still occurred whether
>> tso is enabled or not.
>>
>> So I suggest to make tests with pktgen tools to exclude tso.
>>
> I realize that TSO might not be the root cause (Tushar also
> pointed that out) but might just be triggering the issue...
>
> I dont think we need pktgen at this point- it's quite easy
> to reproduce this on commodity Haswell servers, and by installing
> the rds-stress from the rpm below:
>
> http://public-yum.oracle.com/repo/OracleLinux/OL6/ofed_UEK/x86_64//getPackageSource/rds-tools-2.0.7-1.12.el6.src.rpm
>
> To run it, set up 2 nodes connected on i40e. I shall call them
> "client" and "server" though both will send traffic in the test
>
> Start the listener:
> server# modprobe rds-tcp
> server# rds-stress -r <server addr>
>
> Start the test:
>
> client# modprobe rds-tcp
> client# rds-stress -r <client addr> -s <server-addr> -q 256 -a 8192 -d16 -t16 -T30
>
> (all params are explained in the rds-stress man page)
>
> If you do this on ixgbe, you will see that the column for "tx+rx K/s"
> shows a steady throughput, whereas i40e numbers are bursty and low.
>
> Also, for i40e, you will see messages about TX hang on on the console.
>
> I think that, to find the root-cause, we need to see what is
> triggering the mdd error.
Hi,
Thanks for your reply.
Yesterday I made tests with rds-tools. It is very pity that I can not
reproduce my problem with rds-tools.
But with pktgen tools, I can reproduce this problem easily. And I found
that if I set the packet size to 17792 or less than this size,
this problem would not occur. But if I set the packet size > 17792, for
example 17793, my problem would occur.
As such, maybe the packet size triggers my problem. I am not sure that
the packet size will trigger your size.
Best Regards!
Zhu Yanjun
>
> Would be good if someone from Intel could provide some hints on
> how to do that (or try the above tests!)
>
> --Sowmini
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-16 3:19 ` zhuyj
@ 2016-03-16 3:25 ` Sowmini Varadhan
2016-03-16 11:46 ` zhuyj
0 siblings, 1 reply; 14+ messages in thread
From: Sowmini Varadhan @ 2016-03-16 3:25 UTC (permalink / raw)
To: intel-wired-lan
On (03/16/16 11:19), zhuyj wrote:
>
> Thanks for your reply.
> Yesterday I made tests with rds-tools. It is very pity that I can
> not reproduce my problem with rds-tools.
>
> But with pktgen tools, I can reproduce this problem easily. And I
> found that if I set the packet size to 17792 or less than this size,
> this problem would not occur. But if I set the packet size > 17792,
> for example 17793, my problem would occur.
I think it might have to do with number of sockets/cpu/cores and
the irq balancing issues.
> As such, maybe the packet size triggers my problem. I am not sure
> that the packet size will trigger your size.
In my case I did try against netperf request-response (but that is
single threaded) and iperf (but that is unidirectional, i.e.,
it is not a bidirectional request-response test)
perhaps if you share the pktgen config (did you change the
code itself)? some of the i40e experts at intel (who are also
on the to/cc lists of this mail) can try it out themselves?
I still think that the fundamental problem can be identified
by looking for what's causing the mdd event.
It must be some type of bug, because ixgbe works fine for me,
and this seems like a regression on that performance.
--Sowmini
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-16 3:25 ` Sowmini Varadhan
@ 2016-03-16 11:46 ` zhuyj
2016-03-16 14:36 ` Sowmini Varadhan
0 siblings, 1 reply; 14+ messages in thread
From: zhuyj @ 2016-03-16 11:46 UTC (permalink / raw)
To: intel-wired-lan
On 03/16/2016 11:25 AM, Sowmini Varadhan wrote:
> On (03/16/16 11:19), zhuyj wrote:
>> Thanks for your reply.
>> Yesterday I made tests with rds-tools. It is very pity that I can
>> not reproduce my problem with rds-tools.
>>
>> But with pktgen tools, I can reproduce this problem easily. And I
>> found that if I set the packet size to 17792 or less than this size,
>> this problem would not occur. But if I set the packet size > 17792,
>> for example 17793, my problem would occur.
> I think it might have to do with number of sockets/cpu/cores and
> the irq balancing issues.
>
>> As such, maybe the packet size triggers my problem. I am not sure
>> that the packet size will trigger your size.
> In my case I did try against netperf request-response (but that is
> single threaded) and iperf (but that is unidirectional, i.e.,
> it is not a bidirectional request-response test)
>
> perhaps if you share the pktgen config (did you change the
> code itself)? some of the i40e experts at intel (who are also
> on the to/cc lists of this mail) can try it out themselves?
>
> I still think that the fundamental problem can be identified
> by looking for what's causing the mdd event.
>
> It must be some type of bug, because ixgbe works fine for me,
> and this seems like a regression on that performance.
>
> --Sowmini
>
It is busy today. Tomorrow I will share the steps about pktgen tools.
Best Regards!
Zhu Yanjun
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-16 11:46 ` zhuyj
@ 2016-03-16 14:36 ` Sowmini Varadhan
2016-03-17 2:20 ` zhuyj
0 siblings, 1 reply; 14+ messages in thread
From: Sowmini Varadhan @ 2016-03-16 14:36 UTC (permalink / raw)
To: intel-wired-lan
On (03/16/16 19:46), zhuyj wrote:
> It is busy today. Tomorrow I will share the steps about pktgen tools.
Ok. I can give that a try on my machine. It would be good to
have some way to reproduce this as simply as possible, maybe
we can take the discussion to netdev to see if others there
have experienced this.
--Sowmini
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-16 14:36 ` Sowmini Varadhan
@ 2016-03-17 2:20 ` zhuyj
2016-03-17 2:29 ` zhuyj
2016-03-17 18:56 ` Sowmini Varadhan
0 siblings, 2 replies; 14+ messages in thread
From: zhuyj @ 2016-03-17 2:20 UTC (permalink / raw)
To: intel-wired-lan
On 03/16/2016 10:36 PM, Sowmini Varadhan wrote:
> On (03/16/16 19:46), zhuyj wrote:
>
>> It is busy today. Tomorrow I will share the steps about pktgen tools.
> Ok. I can give that a try on my machine. It would be good to
> have some way to reproduce this as simply as possible, maybe
> we can take the discussion to netdev to see if others there
> have experienced this.
>
> --Sowmini
>
1. modprobe NET_PKTGEN
2. download the tar file and uncompress to any directory.
This tar file is from kernel. It is in samples/pktgen/
3. cd pktgen
4. pktgen_sample02_multiqueue.sh -i ethx -s size -t cpu_number
If size is set to a big number, the similar defect will occur.
Adjust this size to a appropriate number, my defect will not occur.
In the test, I found some types igb nic, such as i210, will work well no
matter the size is a big number.
some nic, such as 82580, it will not work well if the size is too big.
As such, I think my problem results from the hardware and the big size
triggers this problem.
I hope this can help us all.
Zhu Yanjun
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-17 2:20 ` zhuyj
@ 2016-03-17 2:29 ` zhuyj
2016-03-17 18:56 ` Sowmini Varadhan
1 sibling, 0 replies; 14+ messages in thread
From: zhuyj @ 2016-03-17 2:29 UTC (permalink / raw)
To: intel-wired-lan
On 03/17/2016 10:20 AM, zhuyj wrote:
> On 03/16/2016 10:36 PM, Sowmini Varadhan wrote:
>> On (03/16/16 19:46), zhuyj wrote:
>>
>>> It is busy today. Tomorrow I will share the steps about pktgen tools.
>> Ok. I can give that a try on my machine. It would be good to
>> have some way to reproduce this as simply as possible, maybe
>> we can take the discussion to netdev to see if others there
>> have experienced this.
>>
>> --Sowmini
>>
> 1. modprobe NET_PKTGEN
>
> 2. download the tar file and uncompress to any directory.
> This tar file is from kernel. It is in samples/pktgen/
Sorry. The tar file is in the attachment. Please check it.
Zhu Yanjun
>
> 3. cd pktgen
>
> 4. pktgen_sample02_multiqueue.sh -i ethx -s size -t cpu_number
>
> If size is set to a big number, the similar defect will occur.
> Adjust this size to a appropriate number, my defect will not occur.
>
> In the test, I found some types igb nic, such as i210, will work well
> no matter the size is a big number.
> some nic, such as 82580, it will not work well if the size is too big.
>
> As such, I think my problem results from the hardware and the big size
> triggers this problem.
>
> I hope this can help us all.
>
> Zhu Yanjun
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pktgen.tgz
Type: application/x-compressed-tar
Size: 6257 bytes
Desc: not available
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20160317/607a4184/attachment-0001.bin>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-17 2:20 ` zhuyj
2016-03-17 2:29 ` zhuyj
@ 2016-03-17 18:56 ` Sowmini Varadhan
2016-03-17 19:28 ` Jesse Brandeburg
1 sibling, 1 reply; 14+ messages in thread
From: Sowmini Varadhan @ 2016-03-17 18:56 UTC (permalink / raw)
To: intel-wired-lan
On (03/17/16 10:20), zhuyj wrote:
> 1. modprobe NET_PKTGEN
>
> 2. download the tar file and uncompress to any directory.
> This tar file is from kernel. It is in samples/pktgen/
>
> 3. cd pktgen
>
> 4. pktgen_sample02_multiqueue.sh -i ethx -s size -t cpu_number
Indeed, I see the same thing as you, and it was very easy to
reproduce. It was very interesting that the problem can happen with
as few as 3 threads, at which point I see the TX hang at exactly
-s 12305
I see:
i40e 0000:82:00.0: TX driver issue detected, PF reset issued
i40e 0000:82:00.0 eth2: VSI_seid 390, Hung TX queue 0, tx_pending: 492, NTC:0x140, HWB: 0x140, NTU: 0x12c, TAIL: 0x12c
I think the common factor in both our test cases is that we have some
kernel thread that can efficiently send packets without any context
switches.
Has anyone here seen this before? I'll see if I can find some cycles
to figure this out, if not, maybe its worth bringing up on netdev,
to see if others have seen this, and to draw some patterns.
>
> If size is set to a big number, the similar defect will occur.
> Adjust this size to a appropriate number, my defect will not occur.
>
> In the test, I found some types igb nic, such as i210, will work
> well no matter the size is a big number.
> some nic, such as 82580, it will not work well if the size is too big.
>
> As such, I think my problem results from the hardware and the big
> size triggers this problem.
>
> I hope this can help us all.
>
> Zhu Yanjun
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-17 18:56 ` Sowmini Varadhan
@ 2016-03-17 19:28 ` Jesse Brandeburg
2016-03-17 19:41 ` Sowmini Varadhan
2016-03-18 11:08 ` zhuyj
0 siblings, 2 replies; 14+ messages in thread
From: Jesse Brandeburg @ 2016-03-17 19:28 UTC (permalink / raw)
To: intel-wired-lan
On Thu, 17 Mar 2016 14:56:14 -0400
Sowmini Varadhan <sowmini.varadhan@oracle.com> wrote:
> On (03/17/16 10:20), zhuyj wrote:
> > 1. modprobe NET_PKTGEN
> >
> > 2. download the tar file and uncompress to any directory.
> > This tar file is from kernel. It is in samples/pktgen/
> >
> > 3. cd pktgen
> >
> > 4. pktgen_sample02_multiqueue.sh -i ethx -s size -t cpu_number
>
> Indeed, I see the same thing as you, and it was very easy to
> reproduce. It was very interesting that the problem can happen with
> as few as 3 threads, at which point I see the TX hang at exactly
> -s 12305
Okay, sorry I hadn't jumped into this thread yet.
I can uniquivically tell you that what Sowmini saw with the MDD with
stack based RDS-STRESS testing is *NOT* the same as what you're seeing
while using pktgen with invalid huge skb->data buffers.
We can ask on netdev if the driver should defend against this kind of
input to hard_start_xmit (transmit routine), but the driver doesn't
check the maximum length of the skb to see if it is invalid, because
the stack can never build (only pktgen can) these invalid SKBs.
The issue is that pktgen builds skb->data with a contiguous buffer of
whatever size transmit requested, (regardless of MTU) and then sends it
straight to the transmit routine, no segmentation flags, no MSS set.
This causes the driver to build a transmit descriptor with an invalid
length, which the hardware then "ASSERTS" on by issuing an MDD
interrupt and freezing the bad acting queue.
> I see:
> i40e 0000:82:00.0: TX driver issue detected, PF reset issued
> i40e 0000:82:00.0 eth2: VSI_seid 390, Hung TX queue 0, tx_pending: 492, NTC:0x140, HWB: 0x140, NTU: 0x12c, TAIL: 0x12c
>
> I think the common factor in both our test cases is that we have some
> kernel thread that can efficiently send packets without any context
> switches.
You've found a red herring (mistakenly connected two separate events)
so I think you can stop going down this path (pktgen).
> Has anyone here seen this before? I'll see if I can find some cycles
> to figure this out, if not, maybe its worth bringing up on netdev,
> to see if others have seen this, and to draw some patterns.
we don't need to bring it up on netdev. We have a way to troubleshoot
MDDs that I can send to you, if you want to do the work. Otherwise we
need to have some time to reproduce here.
> > If size is set to a big number, the similar defect will occur.
> > Adjust this size to a appropriate number, my defect will not occur.
> >
> > In the test, I found some types igb nic, such as i210, will work
> > well no matter the size is a big number.
> > some nic, such as 82580, it will not work well if the size is too big.
This is mostly a combination of driver implementation and how the
hardware handles a descriptor that is too large. The driver *could*
check to make sure the skb->data is never too large, but in that same
vein, we *could* fix pktgen to never send a frame greater than MTU down
to the driver.
> >
> > As such, I think my problem results from the hardware and the big
> > size triggers this problem.
> >
> > I hope this can help us all.
Unfortunately Zhu's problem with pktgen is not a reproducer of
Sowmini's problem.
In the case of pktgen, it is a "don't do that, because it hurts" kind of
bug. In the case of rds-stress, we need to reproduce it here and figure
out what hardware constraint the driver is violating during set up of
the transmit.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-17 19:28 ` Jesse Brandeburg
@ 2016-03-17 19:41 ` Sowmini Varadhan
2016-03-18 11:08 ` zhuyj
1 sibling, 0 replies; 14+ messages in thread
From: Sowmini Varadhan @ 2016-03-17 19:41 UTC (permalink / raw)
To: intel-wired-lan
On (03/17/16 12:28), Jesse Brandeburg wrote:
> We can ask on netdev if the driver should defend against this kind of
> input to hard_start_xmit (transmit routine), but the driver doesn't
> check the maximum length of the skb to see if it is invalid, because
> the stack can never build (only pktgen can) these invalid SKBs.
>
> The issue is that pktgen builds skb->data with a contiguous buffer of
> whatever size transmit requested, (regardless of MTU) and then sends it
> straight to the transmit routine, no segmentation flags, no MSS set.
I see. And after you mentioned it, I checked with ixgbe, sure
enough, that also results in a tx-hang for the pktgen test case
(whereas there were no issues with the (rds-stress , ixgbe) test.
I would surmise that pktgen is a bit of an outlier, more interesting
to focus on those cases that use the regular stack.
I dont know if dpdk can create the same issues as pktgen?
> we don't need to bring it up on netdev. We have a way to troubleshoot
> MDDs that I can send to you, if you want to do the work. Otherwise we
> need to have some time to reproduce here.
yes, I can do the work, since I already have this nicely set up.
Just need some hings on how to trouble-shoot the mdd.
--Sowmini
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-wired-lan] [E1000-devel] i40e card Tx resets
2016-03-17 19:28 ` Jesse Brandeburg
2016-03-17 19:41 ` Sowmini Varadhan
@ 2016-03-18 11:08 ` zhuyj
1 sibling, 0 replies; 14+ messages in thread
From: zhuyj @ 2016-03-18 11:08 UTC (permalink / raw)
To: intel-wired-lan
On 03/18/2016 03:28 AM, Jesse Brandeburg wrote:
> On Thu, 17 Mar 2016 14:56:14 -0400
> Sowmini Varadhan <sowmini.varadhan@oracle.com> wrote:
>
>> On (03/17/16 10:20), zhuyj wrote:
>>> 1. modprobe NET_PKTGEN
>>>
>>> 2. download the tar file and uncompress to any directory.
>>> This tar file is from kernel. It is in samples/pktgen/
>>>
>>> 3. cd pktgen
>>>
>>> 4. pktgen_sample02_multiqueue.sh -i ethx -s size -t cpu_number
>> Indeed, I see the same thing as you, and it was very easy to
>> reproduce. It was very interesting that the problem can happen with
>> as few as 3 threads, at which point I see the TX hang at exactly
>> -s 12305
> Okay, sorry I hadn't jumped into this thread yet.
>
> I can uniquivically tell you that what Sowmini saw with the MDD with
> stack based RDS-STRESS testing is *NOT* the same as what you're seeing
> while using pktgen with invalid huge skb->data buffers.
>
> We can ask on netdev if the driver should defend against this kind of
> input to hard_start_xmit (transmit routine), but the driver doesn't
> check the maximum length of the skb to see if it is invalid, because
> the stack can never build (only pktgen can) these invalid SKBs.
>
> The issue is that pktgen builds skb->data with a contiguous buffer of
> whatever size transmit requested, (regardless of MTU) and then sends it
> straight to the transmit routine, no segmentation flags, no MSS set.
>
> This causes the driver to build a transmit descriptor with an invalid
> length, which the hardware then "ASSERTS" on by issuing an MDD
> interrupt and freezing the bad acting queue.
>
>> I see:
>> i40e 0000:82:00.0: TX driver issue detected, PF reset issued
>> i40e 0000:82:00.0 eth2: VSI_seid 390, Hung TX queue 0, tx_pending: 492, NTC:0x140, HWB: 0x140, NTU: 0x12c, TAIL: 0x12c
>>
>> I think the common factor in both our test cases is that we have some
>> kernel thread that can efficiently send packets without any context
>> switches.
> You've found a red herring (mistakenly connected two separate events)
> so I think you can stop going down this path (pktgen).
>
>> Has anyone here seen this before? I'll see if I can find some cycles
>> to figure this out, if not, maybe its worth bringing up on netdev,
>> to see if others have seen this, and to draw some patterns.
> we don't need to bring it up on netdev. We have a way to troubleshoot
> MDDs that I can send to you, if you want to do the work. Otherwise we
> need to have some time to reproduce here.
>
>>> If size is set to a big number, the similar defect will occur.
>>> Adjust this size to a appropriate number, my defect will not occur.
>>>
>>> In the test, I found some types igb nic, such as i210, will work
>>> well no matter the size is a big number.
>>> some nic, such as 82580, it will not work well if the size is too big.
> This is mostly a combination of driver implementation and how the
> hardware handles a descriptor that is too large. The driver *could*
> check to make sure the skb->data is never too large, but in that same
> vein, we *could* fix pktgen to never send a frame greater than MTU down
> to the driver.
Do you mean this is not a bug in nic?
And it is unnecessary to fix it?
But if a test tool makes tests like pktgen, how to handle it?
We just suggests not to make such tests?
Best Regards!
Zhu Yanjun
>
>>> As such, I think my problem results from the hardware and the big
>>> size triggers this problem.
>>>
>>> I hope this can help us all.
> Unfortunately Zhu's problem with pktgen is not a reproducer of
> Sowmini's problem.
>
> In the case of pktgen, it is a "don't do that, because it hurts" kind of
> bug. In the case of rds-stress, we need to reproduce it here and figure
> out what hardware constraint the driver is violating during set up of
> the transmit.
>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2016-03-18 11:08 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-14 21:43 [Intel-wired-lan] i40e card Tx resets Sowmini Varadhan
2016-03-15 6:12 ` [Intel-wired-lan] [E1000-devel] " zhuyj
2016-03-15 8:55 ` zhuyj
2016-03-15 10:54 ` Sowmini Varadhan
2016-03-16 3:19 ` zhuyj
2016-03-16 3:25 ` Sowmini Varadhan
2016-03-16 11:46 ` zhuyj
2016-03-16 14:36 ` Sowmini Varadhan
2016-03-17 2:20 ` zhuyj
2016-03-17 2:29 ` zhuyj
2016-03-17 18:56 ` Sowmini Varadhan
2016-03-17 19:28 ` Jesse Brandeburg
2016-03-17 19:41 ` Sowmini Varadhan
2016-03-18 11:08 ` zhuyj
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.