netperf/iperf

目录
1 测试环境: 2
2 测试样例 2
2.1 测试情景一:全带宽测试100s 2
2.1.1 Normal 2
2.1.2 Probe 2
2.2 测试情景二:发送数据包大小1byte持续测试100s 3
2.2.1 Normal 3
2.2.2 Probe 3
2.3 测试情景三:发送1000000个包,大小为1024byte 4
2.3.1 Normal 4
2.3.2 Probe 5
2.4 测试情景五:模拟真实网络环境 5
2.4.1 Normal 5
2.4.2 Probe 6
3 结论 6

1 测试环境:
Server: x86;1cpu*4core;内存3.6G;完全idle;
Client: x86;2cpu*24core;内存30G
测试工具:netperf, iperf(netserver –p 10000)
对client进行perf probe采样。
2 测试样例
2.1 测试情景一:全带宽测试100s
2.1.1 Normal
2.1.1.1 命令
perf record -a netperf -t TCP_STREAM -H 10.110.48.59 -l 100 -p 10000
2.1.1.2 结果
Cpu 0.3
Perf-Data 9万

2.1.2 Probe
2.1.2.1 命令
perf record -e probe:tcp_sendmsg -e probe:tcp_v4_rcv -a netperf -t TCP_STREAM -H 10.110.48.59 -l 100 -p 10000
2.1.2.2 结果
Cpu 0.3
Perf-Data 18万

2.2 测试情景二:发送数据包大小1byte持续测试100s
2.2.1 Normal
2.2.1.1 命令
perf record -a netperf -t TCP_STREAM -H 10.110.48.59 -l 100 -p 10000 – -m 1
2.2.1.2 结果
Cpu 99%
Perf-Data 40万
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 1 100.16 17.22
2.2.2 Probe
2.2.2.1 命令
perf record -e probe:tcp_sendmsg -e probe:tcp_v4_rcv -a netperf -t TCP_STREAM -H 10.110.48.59 -l 100 -p 10000 – -m 1
2.2.2.2 结果
Cpu 99%
Perf-Data 3100万+
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 1 100.04 8.02

2.3 测试情景三:发送1000000个包,大小为1024byte
关注点:执行时间
2.3.1 Normal
2.3.1.1 命令
perf record -a iperf -c 10.110.48.59 -F filename -p 10001
2.3.1.2 结果
Cpu 0.3~0.7%
Time 10s,40s,30s,80s,90s(测试值每次差别很大,可能是由于测试环境原因,以下是不测试时系统的网路状态)

[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.0 sec 240 MBytes 201 Mbits/sec

2.3.2 Probe
2.3.2.1 命令
perf record -e probe:tcp_sendmsg -e probe:tcp_v4_rcv -a iperf -c 10.110.48.59 -n 1024000000 -m 1024 -p 10001
2.3.2.2 结果
Cpu 0.3~0.7%
time 50s,65s,30s,35s,30s,30s((测试值每次差别很大,可能是由于测试环境原因,以下是不测试时系统的网路状态))

2.4 测试情景四:模拟真实网络环境
发包大小32byte,响应报大小1024byte,持续测试100s
2.4.1 Normal
2.4.1.1 命令
perf record -a netperf -t TCP_RR -H 10.110.48.59 -l 100 -p 10000 – -r 32,1024
2.4.1.2 结果
Cpu 0%
Perf-Data 10万+
Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 32 1024 100.02 23.66
16384 87380
2.4.2 Probe
2.4.2.1 命令
perf record -e probe:tcp_sendmsg -e probe:tcp_v4_rcv -a netperf -t TCP_RR -H 10.110.48.59 -l 100 -p 10000 – -r 32,1024
2.4.2.2 结果
Cpu 0%
Perf-Data 5000+

Local /Remote
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 32 1024 100.00 24.18
16384 87380
3 结论
由于perf probe底层实现是采用了kprobe的原理,即在被测函数或指令处使用中断指令替换,当执行到被替换的地方时,引发异常,进入异常处理流程,从而进行数据采样。这种方式在一定程度上会对系统性能造成损耗,但是相比网络通信场景下的时延,由于异常处理带来的损耗不是很明显。
从以上实验测试结果来看,也确实没有很大的性能损耗,因此可以使用perf probe技术对网络场景进行采样。

你可能感兴趣的:(运维)