【性能】Linux上网络状态和软硬中断动态查看

【性能】Linux上网络状态和软硬中断动态查看,第1张

1. 找系统类的错误, dmesg | tail

2. 直接的网络错误 sar -n ETCP 1 或者 sar -n EDEV 1

3.查看网络状态, netstat -s 或者 watch -d netstat -s

4.网络状态的统计 ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}'

#  netstat -s

#  watch -d netstat -s

#  netstat -s -u

# watch -d netstat -s -u

# cat /proc/softirqs

# watch -d "/bin/cat /proc/softirqs | /usr/bin/awk 'NR == 1{printf \"%-15s %-15s %-15s %-15s %-15s\n\",\" \",\$1,\$2,\$3,\$4} NR > 1{printf \"%-15s %-15s %-15s %-15s %-15s\n\",\$1,\$2,\$3,\$4,\$5}'"

# watch-d   "cat /proc/interrupts"

先说说环境1.硬件:DELL R410

2.网卡:板载1000M BCM5709

2.OS: RHEL 5.5 x86_64

3.KERNEL: 2.6.18-194.el5

所出现的问题

1.网卡毫无征兆的down掉,而且没有任何log信息

2.当流量增大时,不到理论上限的1/3时机器出现网络延迟严重,伴随大量的丢包

3.机器的cpu软中断不均衡,只有1个cpu处理软中断,并且该cpu的软中断周期性的达到100%

4.内外网网卡做nat丢包数据量不一致,差别很大,不在同一个数量级

想必第一个问题,大部分使用bcm网卡,rhel 5.3以后得机器都会遇到这种情况,网上的资料比较的多,我也不多啰嗦了,直接升级网卡驱动就可以解决了。第二,三,四其实是同一个问题都是由于网卡中断过多,cpu处理不过来(准确的说,cpu分配不均衡,导致只有一个cpu处理,处理不过来),引起丢包,那么为什么两个网卡丢包的数量级不一样呢,下面从原理上进行解释,既然是做nat多出口,那么就有大量的路由信息,是一个网络应用,当一个数据包请求nat时,数据包先被网卡驱动的数据接收,网卡收到数据时,触发中断。在中断执行例程中,把skb挂入输入队列,并触发软中断。稍后的某个时刻,当软中断执行时,再从该队列中把skb取下来,投递给上层协议。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8476049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存