-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathveth_perf_test.sh
More file actions
executable file
·158 lines (141 loc) · 4.25 KB
/
veth_perf_test.sh
File metadata and controls
executable file
·158 lines (141 loc) · 4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/bin/bash
HCALL_DIR=/root/nchild/linux/tools/perf
dev=$1
peer_dev=$2
ip=$3
peer_ip=$4
peer_pub=$5
# assumes 64 procs on both, 16 tx queues on devices
log_dir=veth_test_results/$(date +"%Y_%m_%d_%I_%M_%p")
mkdir -p $log_dir
run_iperf () {
# $1 == output file
(ssh $peer_pub -C "iperf -s > /dev/null "&)
sleep 3
iperf -c $peer_ip -B $ip -P 4 -l 5M -i 3 > $1
pkill iperf
ssh $peer_pub -C "pkill iperf"
}
iperf_iterations () {
# $1 == test_name
# $2 == num_iterations
mkdir -p $log_dir/$1
i=1
while [ $i -le $2 ]; do
run_iperf $log_dir/$1/${i}_iperf.txt
sleep 1
((i=i+1))
done
}
xps_read () {
echo "XPS on host:"
grep -r /sys/class/net/${dev}/queues/tx-*/xps_cpus -e '.' | sort -t- -k2,2n
echo "XPS on peer:"
ssh $peer_pub -C "grep -r /sys/class/net/${peer_dev}/queues/tx-*/xps_cpus -e '.' | sort -t- -k2,2n"
}
xps_on_all () {
echo "turning on xps to all cpus on both peer and host"
for i in {0..15}; do
echo ffffffff,ffffffff > /sys/class/net/${dev}/queues/tx-${i}/xps_cpus
ssh $peer_pub -C "echo ffffffff,ffffffff > /sys/class/net/${peer_dev}/queues/tx-${i}/xps_cpus" ;
done
xps_read
}
xps_off () {
echo "turning off xps on peer and host"
for i in {0..15}; do
echo 00000000,00000000 > /sys/class/net/${dev}/queues/tx-${i}/xps_cpus
ssh $peer_pub -C "echo 00000000,00000000 > /sys/class/net/${peer_dev}/queues/tx-${i}/xps_cpus" ;
done
xps_read
}
xps_distributed () {
echo "turning xps on distributed cpu's on peer and host"
# 64 procs, 16 tx queues = every queue gets 4 cpu (ie f)
map="f"
for i in {0..15}; do
if [ $i -gt 7 ]; then
echo $map,0 > /sys/class/net/${dev}/queues/tx-${i}/xps_cpus
ssh $peer_pub -C "echo $map,0 > /sys/class/net/${peer_dev}/queues/tx-${i}/xps_cpus" ;
else
echo $map > /sys/class/net/${dev}/queues/tx-${i}/xps_cpus
ssh $peer_pub -C "echo $map > /sys/class/net/${peer_dev}/queues/tx-${i}/xps_cpus" ;
fi
map="${map}0"
if [ $i -eq 7 ]; then
map="f"
fi
done
xps_read
}
rps_read () {
echo "RPS on host:"
cat /sys/class/net/$dev/queues/rx-0/rps_cpus
echo "RPS on peer:"
ssh $peer_pub -C "cat /sys/class/net/$peer_dev/queues/rx-0/rps_cpus"
}
rps_on_all () {
echo "turning rps on all cpus' on peer and host"
echo ffffffff,ffffffff > /sys/class/net/$dev/queues/rx-0/rps_cpus
ssh $peer_pub -C "echo ffffffff,ffffffff > /sys/class/net/$peer_dev/queues/rx-0/rps_cpus"
rps_read
}
rps_off () {
echo "turning rps off for peer and host"
echo 00000000,00000000 > /sys/class/net/$dev/queues/rx-0/rps_cpus
ssh $peer_pub -C "echo 00000000,00000000 > /sys/class/net/$peer_dev/queues/rx-0/rps_cpus"
rps_read
}
rfs_read () {
echo "RFS on host:"
cat /sys/class/net/$dev/queues/rx-0/rps_flow_cnt
cat /proc/sys/net/core/rps_sock_flow_entries
echo "RFS on peer:"
ssh $peer_pub -C "cat /sys/class/net/$peer_dev/queues/rx-0/rps_flow_cnt"
ssh $peer_pub -C "cat /proc/sys/net/core/rps_sock_flow_entries"
}
rfs_on () {
echo "turning RFS on for peer and host (flow_cnt = 32768)"
echo 32768 > /sys/class/net/$dev/queues/rx-0/rps_flow_cnt
echo 32768 > /proc/sys/net/core/rps_sock_flow_entries
ssh $peer_pub -C "echo 32768 > /sys/class/net/$peer_dev/queues/rx-0/rps_flow_cnt"
ssh $peer_pub -C "echo 32768 > /proc/sys/net/core/rps_sock_flow_entries"
rfs_read
}
rfs_off () {
echo "setting RFS off for host and peer"
echo 0 > /sys/class/net/$dev/queues/rx-0/rps_flow_cnt
echo 0 > /proc/sys/net/core/rps_sock_flow_entries
ssh $peer_pub -C "echo 0 > /sys/class/net/$peer_dev/queues/rx-0/rps_flow_cnt"
ssh $peer_pub -C "echo 0 > /proc/sys/net/core/rps_sock_flow_entries"
rfs_read
}
rfs_off
rps_off
xps_off
iperf_iterations all_off 10
rps_on_all
iperf_iterations rps_all 10
xps_on_all
iperf_iterations rps_all_xps_all 10
xps_off
xps_distributed
iperf_iterations rps_all_xps_dist 10
rps_off
xps_off
rfs_on
iperf_iterations rfs 10
rfs_off
xps_on_all
iperf_iterations xps_all 10
rfs_on
iperf_iterations rfs_xps_all 10
xps_distributed
iperf_iterations rfs_xps_dist 10
rfs_off
xps_off
xps_distributed
iperf_iterations xps_dist 10
xps_off
rps_off
rfs_off