test/benchmark/cmp_table.sh - ktap

  1. #!/bin/sh

  2. # This script compare table performance between ktap and stap.
  3. #
  4. # 1. ktap -e 'trace syscalls:sys_enter_futex { s[execname] += 1 }'
  5. # 2. ktap -e 'kdebug.tracepoint("sys_enter_futex", function () { s[execname] += 1 })'
  6. # 3. ktap -e 'kdebug.kprobe("SyS_futex", function () { s[execname] += 1 })'
  7. # 4. stap -e 'probe syscall.futex { s[execname()] += 1 }'
  8. # 5. ktap -e 'kdebug.kprobe("SyS_futex", function () { s[probename] += 1 })'
  9. # 6. stap -e 'probe syscall.futex { s[name] += 1 }'
  10. # 7. ktap -e 'kdebug.kprobe("SyS_futex", function () { s["constant_string_key"] += 1 })'
  11. # 8. stap -e 'probe syscall.futex { s["constant_string_key"] += 1 }'

  12. #Result:
  13. #Currently ktap table operation overhead is smaller than stap.


  14. gcc -o sembench sembench.c -O2 -lpthread

  15. COMMAND="./sembench -t 200 -w 20 -r 30 -o 2"

  16. #------------------------------------------------------------#

  17. echo -e "without tracing:"
  18. $COMMAND; $COMMAND; $COMMAND

  19. #------------------------------------------------------------#

  20. ../../ktap -q -e 'var s = {} trace syscalls:sys_enter_futex { s[execname] += 1 }' &

  21. echo -e "\nktap tracing: trace syscalls:sys_enter_futex { s[execname] += 1 }"
  22. $COMMAND; $COMMAND; $COMMAND
  23. pid=`pidof ktap`
  24. disown $pid; kill -9 $pid; sleep 1

  25. #------------------------------------------------------------#

  26. ../../ktap -q -e 'var s = {} kdebug.tracepoint("sys_enter_futex", function () {
  27.     s[execname] += 1 })' &

  28. echo -e '\nktap tracing: kdebug.tracepoint("sys_enter_futex", function () { s[execname] += 1})'
  29. $COMMAND; $COMMAND; $COMMAND
  30. pid=`pidof ktap`
  31. disown $pid; kill -9 $pid; sleep 1

  32. #------------------------------------------------------------#

  33. ../../ktap -q -e 'var s = {} kdebug.kprobe("SyS_futex", function () {
  34.     s[execname] += 1 })' &

  35. echo -e '\nktap tracing: kdebug.kprobe("SyS_futex", function () { s[execname] += 1 })'
  36. $COMMAND; $COMMAND; $COMMAND
  37. pid=`pidof ktap`
  38. disown $pid; kill -9 $pid; sleep 1

  39. #------------------------------------------------------------#

  40. stap -e 'global s; probe syscall.futex { s[execname()] += 1 }' &

  41. echo -e "\nstap tracing: probe syscall.futex { s[execname()] += 1 }"
  42. $COMMAND; $COMMAND; $COMMAND
  43. pkill stap

  44. #------------------------------------------------------------#

  45. ../../ktap -q -e 'var s = {} kdebug.kprobe("SyS_futex", function () {
  46.     s[probename] += 1 })' &

  47. echo -e '\nktap tracing: kdebug.kprobe("SyS_futex", function () { s[probename] += 1 })'
  48. $COMMAND; $COMMAND; $COMMAND
  49. pid=`pidof ktap`
  50. disown $pid; kill -9 $pid; sleep 1

  51. #------------------------------------------------------------#

  52. stap -e 'global s; probe syscall.futex { s[name] += 1 }' &

  53. echo -e "\nstap tracing: probe syscall.futex { s[name] += 1 }"
  54. $COMMAND; $COMMAND; $COMMAND
  55. pkill stap

  56. #------------------------------------------------------------#

  57. ../../ktap -q -e 'var s = {} s["const_string_key"] = 0 kdebug.kprobe("SyS_futex", function () {
  58.     s["const_string_key"] += 1 })' &

  59. echo -e '\nktap tracing: kdebug.kprobe("SyS_futex", function () { s["const_string_key"] += 1 })'
  60. $COMMAND; $COMMAND; $COMMAND
  61. pid=`pidof ktap`
  62. disown $pid; kill -9 $pid; sleep 1

  63. #------------------------------------------------------------#

  64. stap -e 'global s; probe syscall.futex { s["const_string_key"] += 1 }' &

  65. echo -e "\nstap tracing: probe syscall.futex { s["const_string_key"] += 1 }"
  66. $COMMAND; $COMMAND; $COMMAND
  67. pkill stap

  68. #------------------------------------------------------------#

  69. stap -o /dev/null -e 'global s; probe syscall.futex { s["const_string_key"] <<< 1 }' &

  70. echo -e "\nstap tracing: probe syscall.futex { s["const_string_key"] <<< 1 }"
  71. $COMMAND; $COMMAND; $COMMAND
  72. pkill stap

  73. #------------------------------------------------------------#


  74. rm -rf ./sembench