From: Rostislav Lisovy Date: Fri, 14 Oct 2011 12:26:19 +0000 (+0200) Subject: benchmark: Added benchmarking of SFQ qdisc. X-Git-Url: https://rtime.felk.cvut.cz/gitweb/lisovros/iproute2_canprio.git/commitdiff_plain/62177c8d41cb2e04e796508dd43d8bb5a69c919a benchmark: Added benchmarking of SFQ qdisc. --- diff --git a/tc/ftrace_benchmark.sh b/tc/ftrace_benchmark.sh index 779fb0d..36818f5 100755 --- a/tc/ftrace_benchmark.sh +++ b/tc/ftrace_benchmark.sh @@ -21,6 +21,7 @@ COUNT=5000 DATA=i LENGTH=8 FRMTYPE="" +DEV="can0" echo "Benchmarking ..." @@ -34,56 +35,69 @@ do # Default (pfifo qdisc) echo "[pfifo]" - . setcanprio.sh del + . setcanfltr.sh del ${DEV} echo > ${FTRDIR}/trace - cangen ${FRMTYPE} can0 -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} + cangen ${FRMTYPE} ${DEV} -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_pfifo1.txt echo > ${FTRDIR}/trace - cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} + cangen ${FRMTYPE} ${DEV} -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_pfifo2.txt # With PRIO qdisc; all traffic is classified into first class echo "[prio]" echo > ${FTRDIR}/trace - . setcanprio.sh del - . setcanprio.sh prio - cangen ${FRMTYPE} can0 -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} + . setcanfltr.sh del ${DEV} + . setcanfltr.sh prio ${DEV} + cangen ${FRMTYPE} ${DEV} -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_prio1.txt # With PRIO qdisc; most of the traffic goes to "default" class echo > ${FTRDIR}/trace - cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} + cangen ${FRMTYPE} ${DEV} -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_prio1b.txt # With PRIO qdisc; There is maximum rules for each (except the last) class echo "[prio2]" echo > ${FTRDIR}/trace - . setcanprio.sh del + . setcanfltr.sh del ${DEV} if [ ${X} == "eff" ]; then - . setcanprio.sh prio2eff + . setcanfltr.sh prio2eff ${DEV} else - . setcanprio.sh prio2sff + . setcanfltr.sh prio2sff ${DEV} fi - cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} + cangen ${FRMTYPE} ${DEV} -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_prio2.txt # With HTB qdisc echo "[htb]" echo > ${FTRDIR}/trace - . setcanprio.sh del - . setcanprio.sh htb - cangen ${FRMTYPE} can0 -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} + . setcanfltr.sh del ${DEV} + . setcanfltr.sh htb ${DEV} + cangen ${FRMTYPE} ${DEV} -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_htb1.txt echo > ${FTRDIR}/trace - cangen ${FRMTYPE} can0 -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} + cangen ${FRMTYPE} ${DEV} -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_htb2.txt + + # With SFQ qdisc + echo "[sfq]" + echo > ${FTRDIR}/trace + . setcanfltr.sh del ${DEV} + . setcanfltr.sh sfq ${DEV} + cangen -b 18432 ${FRMTYPE} ${DEV} -I 123 -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} + cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_sfq.txt + + echo > ${FTRDIR}/trace + cangen -b 18432 ${FRMTYPE} ${DEV} -I i -L ${LENGTH} -D ${DATA} -g ${GAP} -n ${COUNT} + cp ${FTRDIR}/trace ${DESTDIR}/ftrace_${X}_sfq2.txt + done diff --git a/tc/setcanfltr.sh b/tc/setcanfltr.sh index 6fe99dc..60b6f36 100755 --- a/tc/setcanfltr.sh +++ b/tc/setcanfltr.sh @@ -63,6 +63,49 @@ elif [ "$1" == "prio" ]; then # create Prio qdiscs and configure can filter tc qdisc show dev ${DEV} +elif [ "$1" == "htb" ]; then # Hierarchy Token Bucket + + tc qdisc add dev ${DEV} root handle 1: htb + + tc class add dev ${DEV} parent 1: classid 1:1 htb rate 100kbps ceil 100kbps + tc class add dev ${DEV} parent 1:1 classid 1:10 htb rate 30kbps ceil 100kbps + tc class add dev ${DEV} parent 1:1 classid 1:11 htb rate 10kbps ceil 100kbps + tc class add dev ${DEV} parent 1:1 classid 1:12 htb rate 60kbps ceil 100kbps + + tc filter add dev ${DEV} parent 1:0 prio 1 \ + can sffid 0x123:0x7ff effid 0x123:0x7ff flowid 1:10 + tc filter add dev ${DEV} parent 1:0 prio 2 \ + can sffid 0x124:0x7ff effid 0x124:0x7ff flowid 1:11 + tc filter add dev ${DEV} parent 1:0 prio 3 \ + can sffid 0x125:0x7ff effid 0x125:0x7ff flowid 1:12 + + tc qdisc add dev ${DEV} parent 1:12 handle 40: sfq perturb 10 + +elif [ "$1" == "sfq" ]; then + + tc qdisc add dev ${DEV} root handle 1: prio + + tc filter add dev ${DEV} parent 1:0 prio 1 \ + can sffid 0x111 effid 0x111 flowid 1:1 + + tc filter add dev ${DEV} parent 1:0 prio 2 \ + can \ + sffid 0x123 effid 0x123 \ + sffid 0x124 effid 0x124 \ + sffid 0x125 effid 0x125 \ + flowid 1:2 + + tc filter add dev ${DEV} parent 1:0 prio 3 \ + can sffid 0x0:0x0 effid 0x0:0x0 flowid 1:3 + # default class + + # SFQ + tc qdisc add dev ${DEV} parent 1:2 handle 10: \ + sfq perturb 10 + + tc qdisc add dev ${DEV} parent 1:3 handle 11: \ + sfq perturb 10 + elif [ "$1" == "prio2sff" ]; then # create Prio qdiscs and configure can filter tc qdisc add dev ${DEV} root handle 1: prio bands 5 @@ -317,28 +360,10 @@ elif [ "$1" == "prio2eff" ]; then # create Prio qdiscs and configure can filte tc qdisc show dev ${DEV} - -elif [ "$1" == "htb" ]; then # Hierarchy Token Bucket - - tc qdisc add dev ${DEV} root handle 1: htb - - tc class add dev ${DEV} parent 1: classid 1:1 htb rate 100kbps ceil 100kbps - tc class add dev ${DEV} parent 1:1 classid 1:10 htb rate 30kbps ceil 100kbps - tc class add dev ${DEV} parent 1:1 classid 1:11 htb rate 10kbps ceil 100kbps - tc class add dev ${DEV} parent 1:1 classid 1:12 htb rate 60kbps ceil 100kbps - - tc filter add dev ${DEV} parent 1:0 prio 1 \ - can sffid 0x123:0x7ff effid 0x123:0x7ff flowid 1:10 - tc filter add dev ${DEV} parent 1:0 prio 2 \ - can sffid 0x124:0x7ff effid 0x124:0x7ff flowid 1:11 - tc filter add dev ${DEV} parent 1:0 prio 3 \ - can sffid 0x125:0x7ff effid 0x125:0x7ff flowid 1:12 - - tc qdisc add dev ${DEV} parent 1:12 handle 40: sfq perturb 10 else echo -e "Usage: $0 [ del | stat | show | change | " echo -e "\t\t\t change2 | change3 | head_drop | tbf | prio | " - echo -e "\t\t\t prio2sff | prio2eff | htb ]" + echo -e "\t\t\t sfq | prio2sff | prio2eff | htb ]" fi