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(-)
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
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
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
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 ]
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
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
© 2016 - 2026 Red Hat, Inc.