[PATCH mptcp-next v5 00/11] refactor push pending

Geliang Tang posted 11 patches 1 year, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/multipath-tcp/mptcp_net-next tags/patchew/cover.1665058388.git.geliang.tang@suse.com
Maintainers: Mat Martineau <mathew.j.martineau@linux.intel.com>, Matthieu Baerts <matthieu.baerts@tessares.net>, "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
There is a newer version of this series
net/mptcp/pm.c         |   9 +-
net/mptcp/pm_netlink.c |   3 -
net/mptcp/protocol.c   | 285 ++++++++++++++++++++++-------------------
net/mptcp/protocol.h   |   5 +-
net/mptcp/sched.c      |  61 +++++----
5 files changed, 184 insertions(+), 179 deletions(-)
[PATCH mptcp-next v5 00/11] refactor push pending
Posted by Geliang Tang 1 year, 6 months ago
v5:
- address Mat's comments in v4.

v4:
- update __mptcp_subflow_push_pending as Mat suggested.
- add more patches from "BPF redundant scheduler" series.

v3:
- add a cleanup patch.
- remove msk->last_snd in mptcp_subflow_get_send().
- add the loop that calls the scheduler again in __mptcp_push_pending().

v2:
- add snd_burst check in dfrags loop as Mat suggested.

Refactor __mptcp_push_pending() and __mptcp_subflow_push_pending() to
remove duplicate code and support redundant scheduler more easily in
__mptcp_subflow_push_pending().

Geliang Tang (11):
  Squash to "mptcp: add get_subflow wrappers"
  mptcp: 'first' argument for subflow_push_pending
  mptcp: refactor push_pending logic
  mptcp: drop last_snd for burst scheduler
  mptcp: simplify push_pending
  mptcp: multi subflows push_pending
  mptcp: use msk instead of mptcp_sk
  mptcp: refactor subflow_push_pending logic
  mptcp: simplify subflow_push_pending
  mptcp: multi subflows subflow_push_pending
  mptcp: multi subflows retrans support

 net/mptcp/pm.c         |   9 +-
 net/mptcp/pm_netlink.c |   3 -
 net/mptcp/protocol.c   | 285 ++++++++++++++++++++++-------------------
 net/mptcp/protocol.h   |   5 +-
 net/mptcp/sched.c      |  61 +++++----
 5 files changed, 184 insertions(+), 179 deletions(-)

-- 
2.35.3
Re: [PATCH mptcp-next v5 00/11] refactor push pending
Posted by Mat Martineau 1 year, 6 months ago
On Thu, 6 Oct 2022, Geliang Tang wrote:

> v5:
> - address Mat's comments in v4.
>

Hi Geliang -

I do think these changes are getting closer to being good to merge, 
there's a remaining bisectability issue that I mention in patch 3 and the 
feedback on the squash-to patches to address.

- Mat

> v4:
> - update __mptcp_subflow_push_pending as Mat suggested.
> - add more patches from "BPF redundant scheduler" series.
>
> v3:
> - add a cleanup patch.
> - remove msk->last_snd in mptcp_subflow_get_send().
> - add the loop that calls the scheduler again in __mptcp_push_pending().
>
> v2:
> - add snd_burst check in dfrags loop as Mat suggested.
>
> Refactor __mptcp_push_pending() and __mptcp_subflow_push_pending() to
> remove duplicate code and support redundant scheduler more easily in
> __mptcp_subflow_push_pending().
>
> Geliang Tang (11):
>  Squash to "mptcp: add get_subflow wrappers"
>  mptcp: 'first' argument for subflow_push_pending
>  mptcp: refactor push_pending logic
>  mptcp: drop last_snd for burst scheduler
>  mptcp: simplify push_pending
>  mptcp: multi subflows push_pending
>  mptcp: use msk instead of mptcp_sk
>  mptcp: refactor subflow_push_pending logic
>  mptcp: simplify subflow_push_pending
>  mptcp: multi subflows subflow_push_pending
>  mptcp: multi subflows retrans support
>
> net/mptcp/pm.c         |   9 +-
> net/mptcp/pm_netlink.c |   3 -
> net/mptcp/protocol.c   | 285 ++++++++++++++++++++++-------------------
> net/mptcp/protocol.h   |   5 +-
> net/mptcp/sched.c      |  61 +++++----
> 5 files changed, 184 insertions(+), 179 deletions(-)
>
> -- 
> 2.35.3
>
>
>

--
Mat Martineau
Intel
Re: [PATCH mptcp-next v5 00/11] refactor push pending
Posted by Mat Martineau 1 year, 6 months ago
On Thu, 6 Oct 2022, Geliang Tang wrote:

> v5:
> - address Mat's comments in v4.

Hi Geliang -

Thanks for the v5. I haven't finished looking over all the patches in 
detail yet, but two things I do want to reply to right now:

  * Thanks for explaining in patch 4 that last_snd is still useful for 
round robin. I had forgotten about that, and it looked like a "write-only" 
variable in the kernel code.

  * In the meeting today Paolo suggested that a good test for the new 
scheduler loop would be to modify simult_flows.sh to use much larger 
files, then see if the modified code slowed down any of the simult_flows 
tests.

He suggested making the test file 10x larger in simult_flows.sh:

-	size=$((2 * 2048 * 4096))
+	size=$((2 * 2048 * 4096 * 10))

Can you compare the test times between the export branch and this series, 
with both of them using the larger file size?


Thanks,

Mat


>
> v4:
> - update __mptcp_subflow_push_pending as Mat suggested.
> - add more patches from "BPF redundant scheduler" series.
>
> v3:
> - add a cleanup patch.
> - remove msk->last_snd in mptcp_subflow_get_send().
> - add the loop that calls the scheduler again in __mptcp_push_pending().
>
> v2:
> - add snd_burst check in dfrags loop as Mat suggested.
>
> Refactor __mptcp_push_pending() and __mptcp_subflow_push_pending() to
> remove duplicate code and support redundant scheduler more easily in
> __mptcp_subflow_push_pending().
>
> Geliang Tang (11):
>  Squash to "mptcp: add get_subflow wrappers"
>  mptcp: 'first' argument for subflow_push_pending
>  mptcp: refactor push_pending logic
>  mptcp: drop last_snd for burst scheduler
>  mptcp: simplify push_pending
>  mptcp: multi subflows push_pending
>  mptcp: use msk instead of mptcp_sk
>  mptcp: refactor subflow_push_pending logic
>  mptcp: simplify subflow_push_pending
>  mptcp: multi subflows subflow_push_pending
>  mptcp: multi subflows retrans support
>
> net/mptcp/pm.c         |   9 +-
> net/mptcp/pm_netlink.c |   3 -
> net/mptcp/protocol.c   | 285 ++++++++++++++++++++++-------------------
> net/mptcp/protocol.h   |   5 +-
> net/mptcp/sched.c      |  61 +++++----
> 5 files changed, 184 insertions(+), 179 deletions(-)
>
> -- 
> 2.35.3
>
>
>

--
Mat Martineau
Intel
Re: [PATCH mptcp-next v5 00/11] refactor push pending
Posted by Geliang Tang 1 year, 6 months ago
On Thu, Oct 06, 2022 at 05:16:55PM -0700, Mat Martineau wrote:
> On Thu, 6 Oct 2022, Geliang Tang wrote:
> 
> > v5:
> > - address Mat's comments in v4.
> 
> Hi Geliang -
> 
> Thanks for the v5. I haven't finished looking over all the patches in detail
> yet, but two things I do want to reply to right now:
> 
>  * Thanks for explaining in patch 4 that last_snd is still useful for round
> robin. I had forgotten about that, and it looked like a "write-only"
> variable in the kernel code.
> 
>  * In the meeting today Paolo suggested that a good test for the new
> scheduler loop would be to modify simult_flows.sh to use much larger files,
> then see if the modified code slowed down any of the simult_flows tests.
> 
> He suggested making the test file 10x larger in simult_flows.sh:
> 
> -	size=$((2 * 2048 * 4096))
> +	size=$((2 * 2048 * 4096 * 10))
> 
> Can you compare the test times between the export branch and this series,
> with both of them using the larger file size?

10x larger failed in my tests with timeout. So I changed it to 5x
larger.

Here's the patch:

@@ -52,7 +52,7 @@ setup()
 	sout=$(mktemp)
 	cout=$(mktemp)
 	capout=$(mktemp)
-	size=$((2 * 2048 * 4096))
+	size=$((2 * 2048 * 4096 * 5))

 	dd if=/dev/zero of=$small bs=4096 count=20 >/dev/null 2>&1
 	dd if=/dev/zero of=$large bs=4096 count=$((size / 4096)) >/dev/null 2>&1
@@ -210,13 +210,13 @@ do_transfer()
 	fi

 	echo " [ fail ]"
-	echo "client exit code $retc, server $rets" 1>&2
-	echo -e "\nnetns ${ns3} socket stat for $port:" 1>&2
-	ip netns exec ${ns3} ss -nita 1>&2 -o "sport = :$port"
-	echo -e "\nnetns ${ns1} socket stat for $port:" 1>&2
-	ip netns exec ${ns1} ss -nita 1>&2 -o "dport = :$port"
-	ls -l $sin $cout
-	ls -l $cin $sout
+	#echo "client exit code $retc, server $rets" 1>&2
+	#echo -e "\nnetns ${ns3} socket stat for $port:" 1>&2
+	#ip netns exec ${ns3} ss -nita 1>&2 -o "sport = :$port"
+	#echo -e "\nnetns ${ns1} socket stat for $port:" 1>&2
+	#ip netns exec ${ns1} ss -nita 1>&2 -o "dport = :$port"
+	#ls -l $sin $cout
+	#ls -l $cin $sout

 	cat "$capout"
 	return 1

All logs are attached. "5x_10times_export.log" is for the export branch
and "5x_10times_refactor_v5.log" is for this series.

Thanks,
-Geliang

> 
> 
> Thanks,
> 
> Mat
> 
> 
> > 
> > v4:
> > - update __mptcp_subflow_push_pending as Mat suggested.
> > - add more patches from "BPF redundant scheduler" series.
> > 
> > v3:
> > - add a cleanup patch.
> > - remove msk->last_snd in mptcp_subflow_get_send().
> > - add the loop that calls the scheduler again in __mptcp_push_pending().
> > 
> > v2:
> > - add snd_burst check in dfrags loop as Mat suggested.
> > 
> > Refactor __mptcp_push_pending() and __mptcp_subflow_push_pending() to
> > remove duplicate code and support redundant scheduler more easily in
> > __mptcp_subflow_push_pending().
> > 
> > Geliang Tang (11):
> >  Squash to "mptcp: add get_subflow wrappers"
> >  mptcp: 'first' argument for subflow_push_pending
> >  mptcp: refactor push_pending logic
> >  mptcp: drop last_snd for burst scheduler
> >  mptcp: simplify push_pending
> >  mptcp: multi subflows push_pending
> >  mptcp: use msk instead of mptcp_sk
> >  mptcp: refactor subflow_push_pending logic
> >  mptcp: simplify subflow_push_pending
> >  mptcp: multi subflows subflow_push_pending
> >  mptcp: multi subflows retrans support
> > 
> > net/mptcp/pm.c         |   9 +-
> > net/mptcp/pm_netlink.c |   3 -
> > net/mptcp/protocol.c   | 285 ++++++++++++++++++++++-------------------
> > net/mptcp/protocol.h   |   5 +-
> > net/mptcp/sched.c      |  61 +++++----
> > 5 files changed, 184 insertions(+), 179 deletions(-)
> > 
> > -- 
> > 2.35.3
> > 
> > 
> > 
> 
> --
> Mat Martineau
> Intel
1

balanced bwidth                                             transfer slower than expected! runtime 36150 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36135 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36087 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36103 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           18173 max 18227      [ OK ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18284 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     18160 max 18227      [ OK ]
unbalanced bwidth with unbalanced delay - reverse direction 18169 max 18227      [ OK ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18349 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse direction18170 max 18227      [ OK ]

2

balanced bwidth                                             transfer slower than expected! runtime 36085 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36095 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36104 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36106 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           transfer slower than expected! runtime 18364 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18272 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     transfer slower than expected! runtime 18246 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay - reverse direction 18150 max 18227      [ OK ]
unbalanced bwidth with opposed, unbalanced delay            18216 max 18227      [ OK ]
unbalanced bwidth with opposed, unbalanced delay - reverse direction18199 max 18227      [ OK ]

3

balanced bwidth                                             transfer slower than expected! runtime 36114 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36082 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36125 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36093 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           18198 max 18227      [ OK ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18431 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     transfer slower than expected! runtime 18312 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay - reverse direction 18197 max 18227      [ OK ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18284 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18450 ms, expected 18227 ms max 18227       [ fail ]

4

balanced bwidth                                             transfer slower than expected! runtime 36111 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36112 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36126 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36106 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           18217 max 18227      [ OK ]
unbalanced bwidth - reverse direction                       18214 max 18227      [ OK ]
unbalanced bwidth with unbalanced delay                     transfer slower than expected! runtime 18366 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18347 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            18218 max 18227      [ OK ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18459 ms, expected 18227 ms max 18227       [ fail ]

5

balanced bwidth                                             transfer slower than expected! runtime 36128 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36106 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36125 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36108 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           18172 max 18227      [ OK ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18288 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     transfer slower than expected! runtime 18312 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18265 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18344 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse direction18133 max 18227      [ OK ]

6

balanced bwidth                                             transfer slower than expected! runtime 36114 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36085 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36156 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36109 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           transfer slower than expected! runtime 18345 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18409 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     18167 max 18227      [ OK ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18317 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            18178 max 18227      [ OK ]
unbalanced bwidth with opposed, unbalanced delay - reverse direction18163 max 18227      [ OK ]

7

balanced bwidth                                             transfer slower than expected! runtime 36150 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36087 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36108 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36082 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           transfer slower than expected! runtime 18292 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18442 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     transfer slower than expected! runtime 18283 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay - reverse direction 18203 max 18227      [ OK ]
unbalanced bwidth with opposed, unbalanced delay            18218 max 18227      [ OK ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18383 ms, expected 18227 ms max 18227       [ fail ]

8

balanced bwidth                                             transfer slower than expected! runtime 36090 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36089 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36106 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36101 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           transfer slower than expected! runtime 18271 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18267 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     transfer slower than expected! runtime 18330 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18323 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18332 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18357 ms, expected 18227 ms max 18227       [ fail ]

9

balanced bwidth                                             transfer slower than expected! runtime 36134 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36108 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36110 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36077 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           transfer slower than expected! runtime 18256 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18232 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     transfer slower than expected! runtime 18265 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay - reverse direction 18211 max 18227      [ OK ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18389 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse direction18165 max 18227      [ OK ]

10

balanced bwidth                                             transfer slower than expected! runtime 36113 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36089 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36092 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36103 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           transfer slower than expected! runtime 18413 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth - reverse direction                       18162 max 18227      [ OK ]
unbalanced bwidth with unbalanced delay                     18139 max 18227      [ OK ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18349 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18256 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18540 ms, expected 18227 ms max 18227       [ fail ]

1

balanced bwidth                                             transfer slower than expected! runtime 36095 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36168 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36112 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36120 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           transfer slower than expected! runtime 18235 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18445 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     transfer slower than expected! runtime 18310 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18299 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18388 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18493 ms, expected 18227 ms max 18227       [ fail ]

2

balanced bwidth                                             transfer slower than expected! runtime 36134 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36202 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36174 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36145 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           18144 max 18227      [ OK ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18329 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     transfer slower than expected! runtime 18281 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18512 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18297 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18361 ms, expected 18227 ms max 18227       [ fail ]

3

balanced bwidth                                             transfer slower than expected! runtime 36186 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36166 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36157 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36185 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           18207 max 18227      [ OK ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18270 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     18148 max 18227      [ OK ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18247 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18405 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18495 ms, expected 18227 ms max 18227       [ fail ]

4

balanced bwidth                                             transfer slower than expected! runtime 36128 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36145 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36176 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36109 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           transfer slower than expected! runtime 18355 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18521 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     18203 max 18227      [ OK ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18282 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18473 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18415 ms, expected 18227 ms max 18227       [ fail ]

5

balanced bwidth                                             transfer slower than expected! runtime 36131 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36167 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36173 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36143 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           18182 max 18227      [ OK ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18377 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     18184 max 18227      [ OK ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18274 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            18151 max 18227      [ OK ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18450 ms, expected 18227 ms max 18227       [ fail ]

6

balanced bwidth                                             transfer slower than expected! runtime 36129 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36199 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36133 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36158 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           18133 max 18227      [ OK ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18488 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     transfer slower than expected! runtime 18334 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18457 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18379 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18271 ms, expected 18227 ms max 18227       [ fail ]

7

balanced bwidth                                             transfer slower than expected! runtime 36135 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36119 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36131 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36112 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           transfer slower than expected! runtime 18344 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18378 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     18145 max 18227      [ OK ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18434 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18612 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18535 ms, expected 18227 ms max 18227       [ fail ]

8

balanced bwidth                                             transfer slower than expected! runtime 36158 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36180 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36108 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36136 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           18183 max 18227      [ OK ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18352 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     18151 max 18227      [ OK ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18423 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18333 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18373 ms, expected 18227 ms max 18227       [ fail ]

9

balanced bwidth                                             transfer slower than expected! runtime 36123 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36152 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36112 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36128 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           transfer slower than expected! runtime 18267 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18311 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     18167 max 18227      [ OK ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18294 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18279 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18392 ms, expected 18227 ms max 18227       [ fail ]

10

balanced bwidth                                             transfer slower than expected! runtime 36152 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth - reverse direction                         transfer slower than expected! runtime 36164 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay                       transfer slower than expected! runtime 36172 ms, expected 36005 ms max 36005       [ fail ]
balanced bwidth with unbalanced delay - reverse direction   transfer slower than expected! runtime 36170 ms, expected 36005 ms max 36005       [ fail ]
unbalanced bwidth                                           transfer slower than expected! runtime 18345 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth - reverse direction                       transfer slower than expected! runtime 18317 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay                     transfer slower than expected! runtime 18367 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with unbalanced delay - reverse direction transfer slower than expected! runtime 18407 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay            transfer slower than expected! runtime 18444 ms, expected 18227 ms max 18227       [ fail ]
unbalanced bwidth with opposed, unbalanced delay - reverse directiontransfer slower than expected! runtime 18489 ms, expected 18227 ms max 18227       [ fail ]
Re: [PATCH mptcp-next v5 00/11] refactor push pending
Posted by Geliang Tang 1 year, 6 months ago
Geliang Tang <geliang.tang@suse.com> 于2022年10月7日周五 16:59写道:
>
> On Thu, Oct 06, 2022 at 05:16:55PM -0700, Mat Martineau wrote:
> > On Thu, 6 Oct 2022, Geliang Tang wrote:
> >
> > > v5:
> > > - address Mat's comments in v4.
> >
> > Hi Geliang -
> >
> > Thanks for the v5. I haven't finished looking over all the patches in detail
> > yet, but two things I do want to reply to right now:
> >
> >  * Thanks for explaining in patch 4 that last_snd is still useful for round
> > robin. I had forgotten about that, and it looked like a "write-only"
> > variable in the kernel code.
> >
> >  * In the meeting today Paolo suggested that a good test for the new
> > scheduler loop would be to modify simult_flows.sh to use much larger files,
> > then see if the modified code slowed down any of the simult_flows tests.
> >
> > He suggested making the test file 10x larger in simult_flows.sh:
> >
> > -     size=$((2 * 2048 * 4096))
> > +     size=$((2 * 2048 * 4096 * 10))
> >
> > Can you compare the test times between the export branch and this series,
> > with both of them using the larger file size?
>
> 10x larger failed in my tests with timeout. So I changed it to 5x
> larger.
>
> Here's the patch:
>
> @@ -52,7 +52,7 @@ setup()
>         sout=$(mktemp)
>         cout=$(mktemp)
>         capout=$(mktemp)
> -       size=$((2 * 2048 * 4096))
> +       size=$((2 * 2048 * 4096 * 5))
>
>         dd if=/dev/zero of=$small bs=4096 count=20 >/dev/null 2>&1
>         dd if=/dev/zero of=$large bs=4096 count=$((size / 4096)) >/dev/null 2>&1
> @@ -210,13 +210,13 @@ do_transfer()
>         fi
>
>         echo " [ fail ]"
> -       echo "client exit code $retc, server $rets" 1>&2
> -       echo -e "\nnetns ${ns3} socket stat for $port:" 1>&2
> -       ip netns exec ${ns3} ss -nita 1>&2 -o "sport = :$port"
> -       echo -e "\nnetns ${ns1} socket stat for $port:" 1>&2
> -       ip netns exec ${ns1} ss -nita 1>&2 -o "dport = :$port"
> -       ls -l $sin $cout
> -       ls -l $cin $sout
> +       #echo "client exit code $retc, server $rets" 1>&2
> +       #echo -e "\nnetns ${ns3} socket stat for $port:" 1>&2
> +       #ip netns exec ${ns3} ss -nita 1>&2 -o "sport = :$port"
> +       #echo -e "\nnetns ${ns1} socket stat for $port:" 1>&2
> +       #ip netns exec ${ns1} ss -nita 1>&2 -o "dport = :$port"
> +       #ls -l $sin $cout
> +       #ls -l $cin $sout
>
>         cat "$capout"
>         return 1
>
> All logs are attached. "5x_10times_export.log" is for the export branch
> and "5x_10times_refactor_v5.log" is for this series.

I compared the two log data. The test time of this series is indeed
longer than that of export, but the difference is very small.

I removed the useless information in the two logs and only retained
the running time and expected time. It looks like this:

> cat 5x_export.log | head
36150 max 36005
36135 max 36005
36087 max 36005
36103 max 36005
18284 max 18227
18349 max 18227

Add all running time and expected time:

> awk '{ sum += $1 }; END { print sum }' 5x_export.log
2540920
> awk '{ sum += $3 }; END { print sum }' 5x_export.log
2533820

The ratio of the total running time to the total expected time is
1.00280209 (2540920/2533820).

Use the same method to calculate data in 5x_10times_refactor_v5.log:

> cat 5x_refactor_v5.log | head
36095 max 36005
36168 max 36005
36112 max 36005
36120 max 36005
18235 max 18227
18445 max 18227

> awk '{ sum += $1 }; END { print sum }' 5x_refactor_v5.log
2546024
> awk '{ sum += $3 }; END { print sum }' 5x_refactor_v5.log
2533820

The ratio is 1.00481644.  It is 0.002 more than export data. I think
this difference is acceptable.

Thanks,
-Geliang

>
> Thanks,
> -Geliang
>
> >
> >
> > Thanks,
> >
> > Mat
> >
> >
> > >
> > > v4:
> > > - update __mptcp_subflow_push_pending as Mat suggested.
> > > - add more patches from "BPF redundant scheduler" series.
> > >
> > > v3:
> > > - add a cleanup patch.
> > > - remove msk->last_snd in mptcp_subflow_get_send().
> > > - add the loop that calls the scheduler again in __mptcp_push_pending().
> > >
> > > v2:
> > > - add snd_burst check in dfrags loop as Mat suggested.
> > >
> > > Refactor __mptcp_push_pending() and __mptcp_subflow_push_pending() to
> > > remove duplicate code and support redundant scheduler more easily in
> > > __mptcp_subflow_push_pending().
> > >
> > > Geliang Tang (11):
> > >  Squash to "mptcp: add get_subflow wrappers"
> > >  mptcp: 'first' argument for subflow_push_pending
> > >  mptcp: refactor push_pending logic
> > >  mptcp: drop last_snd for burst scheduler
> > >  mptcp: simplify push_pending
> > >  mptcp: multi subflows push_pending
> > >  mptcp: use msk instead of mptcp_sk
> > >  mptcp: refactor subflow_push_pending logic
> > >  mptcp: simplify subflow_push_pending
> > >  mptcp: multi subflows subflow_push_pending
> > >  mptcp: multi subflows retrans support
> > >
> > > net/mptcp/pm.c         |   9 +-
> > > net/mptcp/pm_netlink.c |   3 -
> > > net/mptcp/protocol.c   | 285 ++++++++++++++++++++++-------------------
> > > net/mptcp/protocol.h   |   5 +-
> > > net/mptcp/sched.c      |  61 +++++----
> > > 5 files changed, 184 insertions(+), 179 deletions(-)
> > >
> > > --
> > > 2.35.3
> > >
> > >
> > >
> >
> > --
> > Mat Martineau
> > Intel
Re: [PATCH mptcp-next v5 00/11] refactor push pending
Posted by Mat Martineau 1 year, 6 months ago
On Mon, 10 Oct 2022, Geliang Tang wrote:

> Geliang Tang <geliang.tang@suse.com> 于2022年10月7日周五 16:59写道:
>>
>> On Thu, Oct 06, 2022 at 05:16:55PM -0700, Mat Martineau wrote:
>>> On Thu, 6 Oct 2022, Geliang Tang wrote:
>>>
>>>> v5:
>>>> - address Mat's comments in v4.
>>>
>>> Hi Geliang -
>>>
>>> Thanks for the v5. I haven't finished looking over all the patches in detail
>>> yet, but two things I do want to reply to right now:
>>>
>>>  * Thanks for explaining in patch 4 that last_snd is still useful for round
>>> robin. I had forgotten about that, and it looked like a "write-only"
>>> variable in the kernel code.
>>>
>>>  * In the meeting today Paolo suggested that a good test for the new
>>> scheduler loop would be to modify simult_flows.sh to use much larger files,
>>> then see if the modified code slowed down any of the simult_flows tests.
>>>
>>> He suggested making the test file 10x larger in simult_flows.sh:
>>>
>>> -     size=$((2 * 2048 * 4096))
>>> +     size=$((2 * 2048 * 4096 * 10))
>>>
>>> Can you compare the test times between the export branch and this series,
>>> with both of them using the larger file size?
>>
>> 10x larger failed in my tests with timeout. So I changed it to 5x
>> larger.
>>
>> Here's the patch:
>>
>> @@ -52,7 +52,7 @@ setup()
>>         sout=$(mktemp)
>>         cout=$(mktemp)
>>         capout=$(mktemp)
>> -       size=$((2 * 2048 * 4096))
>> +       size=$((2 * 2048 * 4096 * 5))
>>
>>         dd if=/dev/zero of=$small bs=4096 count=20 >/dev/null 2>&1
>>         dd if=/dev/zero of=$large bs=4096 count=$((size / 4096)) >/dev/null 2>&1
>> @@ -210,13 +210,13 @@ do_transfer()
>>         fi
>>
>>         echo " [ fail ]"
>> -       echo "client exit code $retc, server $rets" 1>&2
>> -       echo -e "\nnetns ${ns3} socket stat for $port:" 1>&2
>> -       ip netns exec ${ns3} ss -nita 1>&2 -o "sport = :$port"
>> -       echo -e "\nnetns ${ns1} socket stat for $port:" 1>&2
>> -       ip netns exec ${ns1} ss -nita 1>&2 -o "dport = :$port"
>> -       ls -l $sin $cout
>> -       ls -l $cin $sout
>> +       #echo "client exit code $retc, server $rets" 1>&2
>> +       #echo -e "\nnetns ${ns3} socket stat for $port:" 1>&2
>> +       #ip netns exec ${ns3} ss -nita 1>&2 -o "sport = :$port"
>> +       #echo -e "\nnetns ${ns1} socket stat for $port:" 1>&2
>> +       #ip netns exec ${ns1} ss -nita 1>&2 -o "dport = :$port"
>> +       #ls -l $sin $cout
>> +       #ls -l $cin $sout
>>
>>         cat "$capout"
>>         return 1
>>
>> All logs are attached. "5x_10times_export.log" is for the export branch
>> and "5x_10times_refactor_v5.log" is for this series.
>
> I compared the two log data. The test time of this series is indeed
> longer than that of export, but the difference is very small.
>
> I removed the useless information in the two logs and only retained
> the running time and expected time. It looks like this:
>
>> cat 5x_export.log | head
> 36150 max 36005
> 36135 max 36005
> 36087 max 36005
> 36103 max 36005
> 18284 max 18227
> 18349 max 18227
>
> Add all running time and expected time:
>
>> awk '{ sum += $1 }; END { print sum }' 5x_export.log
> 2540920
>> awk '{ sum += $3 }; END { print sum }' 5x_export.log
> 2533820
>
> The ratio of the total running time to the total expected time is
> 1.00280209 (2540920/2533820).
>
> Use the same method to calculate data in 5x_10times_refactor_v5.log:
>
>> cat 5x_refactor_v5.log | head
> 36095 max 36005
> 36168 max 36005
> 36112 max 36005
> 36120 max 36005
> 18235 max 18227
> 18445 max 18227
>
>> awk '{ sum += $1 }; END { print sum }' 5x_refactor_v5.log
> 2546024
>> awk '{ sum += $3 }; END { print sum }' 5x_refactor_v5.log
> 2533820
>
> The ratio is 1.00481644.  It is 0.002 more than export data. I think
> this difference is acceptable.
>

Thanks for taking a look at the data Geliang. To me it seems like the 0.2% 
difference is well within the margin of error, so there doesn't seem to be 
a significant performance regression in your data.

Paolo, how does this performance look to you?


--
Mat Martineau
Intel