udpgso_bench.sh 1019 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/bin/bash
  2. # SPDX-License-Identifier: GPL-2.0
  3. #
  4. # Run a series of udpgso benchmarks
  5. wake_children() {
  6. local -r jobs="$(jobs -p)"
  7. if [[ "${jobs}" != "" ]]; then
  8. kill -1 ${jobs} 2>/dev/null
  9. fi
  10. }
  11. trap wake_children EXIT
  12. run_one() {
  13. local -r args=$@
  14. ./udpgso_bench_rx &
  15. ./udpgso_bench_rx -t &
  16. ./udpgso_bench_tx ${args}
  17. }
  18. run_in_netns() {
  19. local -r args=$@
  20. ./in_netns.sh $0 __subprocess ${args}
  21. }
  22. run_udp() {
  23. local -r args=$@
  24. echo "udp"
  25. run_in_netns ${args}
  26. echo "udp gso"
  27. run_in_netns ${args} -S
  28. }
  29. run_tcp() {
  30. local -r args=$@
  31. echo "tcp"
  32. run_in_netns ${args} -t
  33. echo "tcp zerocopy"
  34. run_in_netns ${args} -t -z
  35. }
  36. run_all() {
  37. local -r core_args="-l 4"
  38. local -r ipv4_args="${core_args} -4 -D 127.0.0.1"
  39. local -r ipv6_args="${core_args} -6 -D ::1"
  40. echo "ipv4"
  41. run_tcp "${ipv4_args}"
  42. run_udp "${ipv4_args}"
  43. echo "ipv6"
  44. run_tcp "${ipv4_args}"
  45. run_udp "${ipv6_args}"
  46. }
  47. if [[ $# -eq 0 ]]; then
  48. run_all
  49. elif [[ $1 == "__subprocess" ]]; then
  50. shift
  51. run_one $@
  52. else
  53. run_in_netns $@
  54. fi