From: Nikolay Borisov <kernel-6AxghH7DbtA@public.gmane.org>
To: shlomop-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org
Cc: ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
roland-BHEL68pLQRGGvPXPguhicg@public.gmane.org,
"linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: [IPOIB] Excessive TX packet drops due to IPOIB_MAX_PATH_REC_QUEUE
Date: Thu, 28 Jul 2016 14:00:54 +0300 [thread overview]
Message-ID: <5799E5E6.3060104@kyup.com> (raw)
Hello,
While investigating excessive (> 50%) packet drops on an ipoib
interface as reported by ifconfig :
TX packets:16565 errors:1 dropped:9058 overruns:0 carrier:0
I discovered that this is happening due to the following check
in ipoib_start_xmit failing:
if (skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
spin_lock_irqsave(&priv->lock, flags);
__skb_queue_tail(&neigh->queue, skb);
spin_unlock_irqrestore(&priv->lock, flags);
} else {
++dev->stats.tx_dropped;
dev_kfree_skb_any(skb);
}
With the following stacktrace:
[1629744.927799] [<ffffffffa048e6a1>] ipoib_start_xmit+0x651/0x6c0 [ib_ipoib]
[1629744.927804] [<ffffffff8154ecf6>] dev_hard_start_xmit+0x266/0x410
[1629744.927807] [<ffffffff81571b1b>] sch_direct_xmit+0xdb/0x210
[1629744.927808] [<ffffffff8154f22a>] __dev_queue_xmit+0x24a/0x580
[1629744.927810] [<ffffffff8154f570>] dev_queue_xmit+0x10/0x20
[1629744.927813] [<ffffffff81557cf8>] neigh_resolve_output+0x118/0x1c0
[1629744.927828] [<ffffffffa0003c7e>] ip6_finish_output2+0x18e/0x490 [ipv6]
[1629744.927831] [<ffffffffa03b7374>] ? ipv6_confirm+0xc4/0x130 [nf_conntrack_ipv6]
[1629744.927837] [<ffffffffa00052a6>] ip6_finish_output+0xa6/0x100 [ipv6]
[1629744.927843] [<ffffffffa0005344>] ip6_output+0x44/0xe0 [ipv6]
[1629744.927850] [<ffffffffa0005200>] ? ip6_fragment+0x9b0/0x9b0 [ipv6]
[1629744.927858] [<ffffffffa000447c>] ip6_forward+0x4fc/0x8d0 [ipv6]
[1629744.927867] [<ffffffffa00142ad>] ? ip6_route_input+0xfd/0x130 [ipv6]
[1629744.927872] [<ffffffffa0001b70>] ? dst_output+0x20/0x20 [ipv6]
[1629744.927877] [<ffffffffa0005be7>] ip6_rcv_finish+0x57/0xa0 [ipv6]
[1629744.927882] [<ffffffffa0006374>] ipv6_rcv+0x314/0x4e0 [ipv6]
[1629744.927887] [<ffffffffa0005b90>] ? ip6_make_skb+0x1b0/0x1b0 [ipv6]
[1629744.927890] [<ffffffff8154c66b>] __netif_receive_skb_core+0x2cb/0xa30
[1629744.927893] [<ffffffff8108310c>] ? __enqueue_entity+0x6c/0x70
[1629744.927894] [<ffffffff8154cde6>] __netif_receive_skb+0x16/0x70
[1629744.927896] [<ffffffff8154dc63>] process_backlog+0xb3/0x160
[1629744.927898] [<ffffffff8154d36c>] net_rx_action+0x1ec/0x330
[1629744.927900] [<ffffffff810821e1>] ? sched_clock_cpu+0xa1/0xb0
[1629744.927902] [<ffffffff81057337>] __do_softirq+0x147/0x310
[1629744.927907] [<ffffffffa0003c80>] ? ip6_finish_output2+0x190/0x490 [ipv6]
[1629744.927909] [<ffffffff8161618c>] do_softirq_own_stack+0x1c/0x30
[1629744.927910] <EOI> [<ffffffff810567bb>] do_softirq.part.17+0x3b/0x40
[1629744.927913] [<ffffffff81056876>] __local_bh_enable_ip+0xb6/0xc0
[1629744.927918] [<ffffffffa0003c91>] ip6_finish_output2+0x1a1/0x490 [ipv6]
[1629744.927920] [<ffffffffa03b7374>] ? ipv6_confirm+0xc4/0x130 [nf_conntrack_ipv6]
[1629744.927925] [<ffffffffa00052a6>] ip6_finish_output+0xa6/0x100 [ipv6]
[1629744.927930] [<ffffffffa0005344>] ip6_output+0x44/0xe0 [ipv6]
[1629744.927935] [<ffffffffa0005200>] ? ip6_fragment+0x9b0/0x9b0 [ipv6]
[1629744.927939] [<ffffffffa0002e1f>] ip6_xmit+0x23f/0x4f0 [ipv6]
[1629744.927944] [<ffffffffa0001b50>] ? ac6_proc_exit+0x20/0x20 [ipv6]
[1629744.927952] [<ffffffffa0033ce5>] inet6_csk_xmit+0x85/0xd0 [ipv6]
[1629744.927955] [<ffffffff815aa56d>] tcp_transmit_skb+0x53d/0x910
[1629744.927957] [<ffffffff815aab13>] tcp_write_xmit+0x1d3/0xe90
[1629744.927959] [<ffffffff815aba31>] __tcp_push_pending_frames+0x31/0xa0
[1629744.927961] [<ffffffff8159a19f>] tcp_push+0xef/0x120
[1629744.927963] [<ffffffff8159e219>] tcp_sendmsg+0x6c9/0xac0
[1629744.927965] [<ffffffff815c84d3>] inet_sendmsg+0x73/0xb0
[1629744.927967] [<ffffffff81531728>] sock_sendmsg+0x38/0x50
[1629744.927969] [<ffffffff815317bb>] sock_write_iter+0x7b/0xd0
[1629744.927972] [<ffffffff811988ba>] __vfs_write+0xaa/0xe0
[1629744.927974] [<ffffffff81198f29>] vfs_write+0xa9/0x190
[1629744.927975] [<ffffffff81198e63>] ? vfs_read+0x113/0x130
[1629744.927977] [<ffffffff81199c16>] SyS_write+0x46/0xa0
[1629744.927979] [<ffffffff8161465b>] entry_SYSCALL_64_fastpath+0x16/0x6e
[1629744.927988] ---[ end trace 08584e4165caf3df ]---
IPOIB_MAX_PATH_REC_QUEUE is set to 3. If I'm reading the code correctly
if there are more than 3 outstanding packets for a neighbour this would
cause the code to drop the packets. Is this correct? Also I tried bumping
IPOIB_MAX_PATH_REC_QUEUE to 150 to see what will happen and this instead
moved the dropping to occur in ipoib_neigh_dtor:
[1629558.306405] [<ffffffffa04788ec>] ipoib_neigh_dtor+0x9c/0x130 [ib_ipoib]
[1629558.306407] [<ffffffffa0478999>] ipoib_neigh_reclaim+0x19/0x20 [ib_ipoib]
[1629558.306411] [<ffffffff810ad0fb>] rcu_process_callbacks+0x21b/0x620
[1629558.306413] [<ffffffff81057337>] __do_softirq+0x147/0x310
Since you've taken part in the development of the said code I'd like
to ask what's the purpose of the IPOIB_MAX_PATH_REC_QUEUE limit and why
do we drop packets if there are more than this many outstanding packets,
since having 50% packet drops is a very large amount of drops?
Regards,
Nikolay
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next reply other threads:[~2016-07-28 11:00 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-28 11:00 Nikolay Borisov [this message]
[not found] ` <5799E5E6.3060104-6AxghH7DbtA@public.gmane.org>
2016-08-01 8:01 ` [IPOIB] Excessive TX packet drops due to IPOIB_MAX_PATH_REC_QUEUE Erez Shitrit
[not found] ` <CAAk-MO83mJTq=E_MC=izqq8fEmVujY=5egVmKfFjxAz4jO3hHg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-08-01 8:20 ` Nikolay Borisov
[not found] ` <579F065C.602-6AxghH7DbtA@public.gmane.org>
2016-08-01 8:56 ` Erez Shitrit
[not found] ` <CAAk-MO9C7i0en5ZE=pufz6tMecUi23kL=5FR36JNfPzuO1G5-g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-08-01 9:46 ` Nikolay Borisov
2016-08-04 13:34 ` Slow veth performance over ipoib interface on 4.7.0 (and earlier) (Was Re: [IPOIB] Excessive TX packet drops due to IPOIB_MAX_PATH_REC_QUEUE) Nikolay Borisov
[not found] ` <57A34448.1040600-6AxghH7DbtA@public.gmane.org>
2016-08-04 14:08 ` Doug Ledford
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5799E5E6.3060104@kyup.com \
--to=kernel-6axghh7dbta@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=roland-BHEL68pLQRGGvPXPguhicg@public.gmane.org \
--cc=shlomop-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.