Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
netdev budget: fix criteria for budget increase
because we can have net_rx_action() run on different processors
we may have cases where we do not see increases for every sample
but the increases do happen for different cpus; as such, relax
criteria for time_squeezed to simply increase from one sample to
the next.

Also fix budget test to verify budget + budget_usecs increase.

Signed-off-by: Alan Maguire <[email protected]>
  • Loading branch information
alan-maguire committed Dec 19, 2024
commit a9fa5ebcbfd9cd14a184387882291a0421f0edf3
5 changes: 1 addition & 4 deletions src/net_buffer_tuner.bpf.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,7 @@ int BPF_PROG(net_rx_action)
if (!last_time_squeezep)
return 0;
last_time_squeeze = *last_time_squeezep;
/* if time squeeze increased for every instance of
* net_rx_action() since last sample, we increase.
*/
if (time_squeeze <= (last_time_squeeze + bpftune_sample_rate))
if (time_squeeze <= last_time_squeeze)
return 0;
*last_time_squeezep = time_squeeze;
/* did not have previous time_squeeze value for comparison, bail. */
Expand Down
15 changes: 12 additions & 3 deletions test/budget_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,14 @@ for FAMILY in ipv4 ipv6 ; do

test_start "$0|budget test to $ADDR:$PORT $FAMILY opts $CLIENT_OPTS $LATENCY"

budget_orig=($(sysctl -n net.core.netdev_max_backlog))
budget_orig=($(sysctl -n net.core.netdev_budget))
usecs_orig=($(sysctl -n net.core.netdev_budget_usecs))
test_setup true

sysctl -w net.core.netdev_budget=10
sysctl -w net.core.netdev_budget_usecs=100
budget_pre=($(sysctl -n net.core.netdev_budget))
usecs_pre=($(sysctl -n net.core.netdev_budget_usecs))
declare -A results
for MODE in baseline test ; do

Expand All @@ -60,7 +63,7 @@ for FAMILY in ipv4 ipv6 ; do
LOGSZ=$(wc -l $LOGFILE | awk '{print $1}')
LOGSZ=$(expr $LOGSZ + 1)
fi
test_run_cmd_local "ip netns exec $NETNS $IPERF3 -fm -t 20 $CLIENT_OPTS -c $PORT -c $ADDR" true
test_run_cmd_local "ip netns exec $NETNS $IPERF3 -fm -t 10 -P 20 $CLIENT_OPTS -c $PORT -c $ADDR" true
sleep $SLEEPTIME

sresults=$(grep -E "sender" ${CMDLOG} | awk '{print $7}')
Expand All @@ -80,10 +83,16 @@ for FAMILY in ipv4 ipv6 ; do
done

budget_post=($(sysctl -n net.core.netdev_budget))
usecs_post=($(sysctl -n net.core.netdev_budget_usecs))
sleep $SLEEPTIME
sysctl -w net.core.netdev_budget="$budget_orig"
sysctl -w net.core.netdev_budget_usecs="$usecs_orig"
echo "budget ${budget_pre} -> ${budget_post}"
echo "usecs ${usecs_pre} -> ${usecs_post}"
if [[ "$budget_post" -gt "$budget_pre" ]]; then
test_pass
if [[ "$usecs_post" -gt "$usecs_pre" ]]; then
test_pass
fi
fi
test_cleanup
done
Expand Down