No subject

M. V. bored_to_death85 at yahoo.com
Fri May 10 13:05:09 UTC 2013


hi,

I have a FreeBSD 8.2 server with some em & igb interfaces. (em driver version is 7.3.2 & igb driver version is 2.3.1)
It doesn't have a full-load traffic on it (maximum 50-100Mbps per-interface on 1Gbps interface). but occasionally one of its interfaces stopped responding (mostly "em") and when I log in to server and ping the other side from it, i got "no buffer space available" error. and I have to do a "ifconfig em0 down; ifconfig em0 up" to solve the problem.
related buffer sizes seem more than enough for existing low traffic on server:
kern.ipc.nmbclusters=1000000
kern.ipc.maxsockbuf=4000000
net.inet.tcp.sendbuf_max=16777216
net.inet.tcp.recvbuf_max=16777216
net.inet.tcp.sendspace=1000000
net.inet.tcp.recvspace=1000000
net.inet.udp.recvspace=1000000

hw.igb.rxd=1024
hw.igb.txd=1024
hw.em.rxd=1024
hw.em.txd=1024

problem is, most of the time I'm not at the server when it happens and I can't update it's kernel for now (although I don't even know if it helps). So I wanted to write a simple shell  that gets executed in background and everytime this problem happened on an interface, it automatically "down/up"s it to make it work.

so my question is:
1- how can I discover if an interface's buffer is filled out, and "no buffer space available" situation is happened on that interface?
2- I know "down/up"ing interface is not an ideal work to do, but it's the only solution I can think of. any other suggestions?


thank you.


More information about the freebsd-net mailing list