reduced the time needed for each loop to 1/4; in my machine went from 22ms to 5ms per loop
Costa Tsaousis (ktsaou) committed
Apr 12, 2014 at 03:03 UTC
99b7c855552849c58f6a0159f3b594681b0fb892
1 file changed
+53
-20
tc-all.sh
+53
-20
@@ -1,33 +1,66 @@
1
#!/bin/sh
2
3
+echo "MYPID $$"
4
+
5
+# check if we have a valid number for interval
6
t=$1
4
-x=$(( t + 1 - 1 ))
5
-if [ "$x" -eq 0 ]
7
+sleep_time=$(( t + 1 - 1 ))
8
+if [ "$sleep_time" -eq 0 ]
9
then
7
- x=1
10
+ sleep_time=1
11
fi
12
10
-echo "MYPID $$"
13
+devices=
14
+fix_names=
15
+show_tc() {
16
+ local x="$1"
17
+
18
+ echo "BEGIN $x"
19
+
20
+ /sbin/tc -s class show dev $x
21
+
22
+ # check FireQOS names for classes
23
+ if [ ! -z "$fix_names" -a -f /var/run/fireqos/ifaces/$x ]
24
+ then
25
+ name="`cat /var/run/fireqos/ifaces/$x`"
26
+ echo "SETDEVICENAME $name"
27
+
28
+ interface_classes=
29
+ . /var/run/fireqos/$name.conf
30
+ for x in $interface_classes_monitor
31
+ do
32
+ echo "SETCLASSNAME $x"
33
+ done
34
+ fi
35
+ echo "END $x"
36
+}
37
38
+all_devices() {
39
+ cat /proc/net/dev | grep ":" | cut -d ':' -f 1 | while read dev
40
+ do
41
+ l=`/sbin/tc class show dev $dev | wc -l`
42
+ [ $l -ne 0 ] && echo $dev
43
+ done
44
+}
45
+
46
+names_every=$((120 / sleep_time))
47
+c=0
48
while [ 1 ]
49
do
14
- /sbin/tc qdisc show | cut -d ' ' -f 5 | sort -u | while read x
50
+ fix_names=
51
+ c=$((c + 1))
52
+
53
+ if [ $c -le 1 -o $c -ge $names_every ]
54
+ then
55
+ c=1
56
+ fix_names="YES"
57
+ devices="`all_devices`"
58
+ fi
59
+
60
+ for d in $devices
61
do
16
- echo "BEGIN $x"
17
- /sbin/tc -s class show dev $x
18
- if [ -f /var/run/fireqos/ifaces/$x ]
19
- then
20
- name="`cat /var/run/fireqos/ifaces/$x`"
21
- echo "SETDEVICENAME $name"
22
- interface_classes=
23
- . /var/run/fireqos/$name.conf
24
- for x in $interface_classes_monitor
25
- do
26
- echo "SETCLASSNAME $x"
27
- done
28
- fi
29
- echo "END $x"
62
+ show_tc $d
63
done
64
32
- sleep $x
65
+ sleep $sleep_time
66
done