This folder contains results of benchmarks of canprio filter. Test1 + Test2 ============= Output files of this two tests show time of execution of can_send() function measured by Ftrace function tracer. Main algorithm of benchmark consists of running "cangen" command (with different parameters) on different qdisc + filter configurations and measuring time of execution of function can_send(). Testing set of Test2 is identical to Test1 besides the delay between each sent frame -- Test1 measures on packets sent in 1 ms interval while Test2 on packets sent in 0 ms interval. Absolute times (for each single test) measured in Test1 and Test2 differ in some constant value (cca 12 us), but the relative change in time among each single test in a set is in Test1 and Test2 quite the same. Observations: * Classification with canprio (measured on P4 CPU) has negligible overhead. * Processing of EFF frames takes longer than of SFF frames. * Storing SFF rules in bitmap leads to much quicker classification (difference grows with number of rules). * Sending frames with "0 ms" delay leads to buffering them and storing into device after some periode (unlike sending in 1 ms interval sends each frame separately -- i.e. communication with hardware because of each frame). Test3 + Test4 + Test5 ===================== Test3, 4, 5 are similar to Test1 and 2 -- the only difference is 3, 4 and 5 were run on PPC CPU (MPC5200). Test3 makes statistics while cangen sends packets in 0 ms interval, while Test4 is for packets sent in 1 ms interval. In test4/sff_array/ftrace_sff_prio2.txt there are mostly two essential values (second one is cca twice as big as the first one) which occur quite equally. This behaviour can be caused by frequent invocation of some interrupt handler. It can even be caused by CAN device sending data (in interrupt context). Therefore Test5 was run on packets sent in 2 ms interval (above described behaviour is no more observable.) Note ==== Simple command to calculate median value from ftrace measurements: cd /test1/sff_array/ for X in $(ls *txt); do echo -n "${X}: "; cat ${X} | \ cut -d" " -f 4 | sort -n | \ awk '{arr[NR]=$1} END { if (NR%2==1) print arr[(NR+1)/2]; \ else print (arr[NR/2]+arr[NR/2+1])/2}'; done