[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAM_iQpV6ZjKWmy8ou6xM=fP8gfE19cS9r=YT4P2xW7rBJwAyZA@mail.gmail.com>
Date: Tue, 4 Aug 2015 20:26:28 -0700
From: Cong Wang <xiyou.wangcong@...il.com>
To: Shaun Crampton <Shaun.Crampton@...aswitch.com>
Cc: "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Linux Kernel Network Developers <netdev@...r.kernel.org>
Subject: Re: veths often slow to come up
(Cc'ing netdev for network issues)
On Tue, Aug 4, 2015 at 6:42 AM, Shaun Crampton
<Shaun.Crampton@...aswitch.com> wrote:
> Please CC me on any responses, thanks.
>
> Setting both ends of a veth to be oper UP completes very quickly but I
> find that pings only start flowing over the veth after about a second.
> This seems to correlate with the NO-CARRIER flag being set or the
> interface being in "state UNKNOWN" or "state DOWN² for about a second
> (demo script below).
>
> If I run the script repeatedly then sometimes it completes very quickly on
> subsequent runs as if there¹s a hot cache somewhere.
>
> Could this be a bug or is there a configuration to speed this up? Seems
> odd that it¹s almost exactly 1s on the first run.
>
> Seen on these kernels:
> * 3.13.0-57-generic #95-Ubuntu SMP Fri Jun 19 09:28:15 UTC 2015 x86_64
> x86_64 x86_64 GNU/Linux
> * 4.0.9-coreos #2 SMP Thu Jul 30 01:07:55 UTC 2015 x86_64 Intel(R) Xeon(R)
> CPU @ 2.50GHz GenuineIntel GNU/Linux
>
> Regards,
>
> -Shaun
>
>
> Running my test script below (Assumes veth0/1 do not already exist):
>
> $ sudo ./veth-test.sh
> Time to create veth:
>
> real 0m0.019s
> user 0m0.002s
> sys 0m0.010s
>
> Time to wait for carrier:
>
> real 0m1.005s
> user 0m0.007s
> sys 0m0.123s
>
>
>
> # veth-test.sh
>
> #!/bin/bash
> function create_veth {
> ip link add type veth
> ip link set veth0 up
> ip link set veth1 up
> }
> function wait_for_carrier {
> while ! ip link show | grep -qE 'veth[01]';
> do
> sleep 0.05
> done
> while ip link show | grep -E 'veth[01]¹ | \
> grep -Eq 'NO-CARRIER|state DOWN|state UNKNOWN';
> do
> sleep 0.05
> done
> }
> echo "Time to create veth:"
> time create_veth
> echo
> echo "Time to wait for carrier:"
> time wait_for_carrier
> ip link del veth0
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists