性能测试-操作和优化分析

打流工具

iperf

测试吞吐率

服务端:iperf -u -s

客户端:iperf -u -c 1.1.1.1 -b 500M -t 10

测试结果

------------------------------------------------------------

Client connecting to 192.168.56.106, UDP port 5001

Sending 1470 byte datagrams, IPG target: 22.43 us (kalman adjust)

UDP buffer size:  208 KByte (default)

------------------------------------------------------------

[  3] local 192.168.56.104 port 50270 connected with 192.168.56.106 port 5001

[ ID] Interval       Transfer     Bandwidth

[  3]  0.0-10.0 sec   617 MBytes   517 Mbits/sec

[  3] Sent 440029 datagrams

[  3] Server Report:

[  3]  0.0-10.0 sec   617 MBytes   518 Mbits/sec   0.037 ms    0/440029 (0%)

丢包率为0时,带宽是518Mb。

hping3

# 发送 udp 报文 到 192.168.1.1:80。伪造随机源地址,洪水攻击。

sudo hping3 --udp 192.168.180.133 -p 80 --rand-source --flood

sudo hping3 --udp -s 6666 -p 53 -a 29.29.29.29 --flood 192.168.180.133

可以看到有一个CPU占用率达到接近100%,

查看流量

sar -n DEV 1 5

查看当前主机流量大小在500M左右和iperf结果一致。

hping3功能以及参数介绍:http://e.betheme.net/article/show-225648.html?action=onClick

性能测试

优化发送流量

考虑先把发送的流量的吞吐大小打上来

思路可以参考:https://segmentfault.com/a/1190000022882475?utm_source=sf-similar-article

观察iperf 打流前后的CPU占用:

执行iperf后CPU占用:

性能测试-操作和优化分析_第1张图片

 

需要注意的是接近100%的值。

参数说明:

1)us和ni高,说明用户态进程占用了较多的CPU ,应该排查进程的性能问题。

2)sy高,说明内核态占用了较多的CPU ,应该排查内核线程或者系统调用的性能问题。3)%CPU这里显示的所有的cpu加起来的使用率,超过100%说明你的CPU是多核的,

4)si CPU服务软中断所耗费的时间总额,这里可以看到接近100%

相关命令

查看每个CPU的占用

运行top后按下键盘1看看,可以显示每个cpu的使用率,top里显示的是把所有使用率加起来。

查看进程的各线程占用CPU的情况

top -H -p   查看iperf各个线程占用CPU情况。

性能测试-操作和优化分析_第2张图片

 

从这里可以到看到多个逻辑CPU并没有占满。

mpstat -P ALL 1  类似top命令有也可以查看CPU的统计信息。

通过这命令也可以到%soft占用经常到100%,

软中断的含义:linux mpstat工具统计的软中断百分比原理_OS Developer的博客-CSDN博客

对于网卡来说,如果每次网卡收包时中断的时间都过长,那很可能造成丢包的可能性

使用中断,中断的时间越短越好,尽快放开处理器,让它可以去响应下次中断甚至进行调度工作。

基于这样的考虑,我们将中断分成了上下两部分,上半部分(硬中断)就是上面说的中断部分,需要快速及时响应,越快结束越好。而下半部分(软中断)就是完成一些可以推后执行的工作。

对于网卡收包来说,网卡收到数据包,通知内核数据包到了,中断处理将数据包存入内存这些都是急切需要完成的工作,放到上半部完成。

而解析处理数据包的工作则可以放到下半部去执行。

软中断通过软件模仿硬件中断的处理过程,但是和硬件没有关系,单纯的通过软件达到一种异步处理的方式。软中断的处理机制还包括tasklet,工作队列等。

依据所处理的场合不同,选择不同的硬件或软件中断机制,网卡收包一般使用软中断,最大程度地交给软中断处理,最大程度简化硬中断处理。

调节发送参数

发包参数-P改成2把线程调整为2个,能看到占用sys比较高的核也会减少。

单线程把发送流量不断调大也可以看到soft的值不断升高,最高达到100%。

此时测试带宽757 Mbits/sec

查看软中断统计

软中断

通过执行cat /proc/softirqs观察到,NET_TX软中断主要发生在CPU0上面,其他CPU上发生的较少。

硬中断

通过cat /proc/interrupts观察到,这个系统网络中断只发生在CPU0上面。

未完待续。。。

你可能感兴趣的:(网络,udp,网络协议)