Tuesday, April 24, 2012

Замена r8169 на r8168 или глюки сетевых карт на Linux

Суть в чем - есть сервак с 2мя гигабитными карточками 
Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02).
Нагрузка - порядка 2000 звонков в сутки, в пиковые часы - 10-15 одновременных звонков (alaw). Вроде и немного, просто на нем же лежит FTP на который складываются записи. Так вот, повадился сервер этот пропадать из сети, причем в логах - все отлично, но просто не пингуется и все. Периодичность - где-то раз в 2-3 дня. Помогает только перезагрузка, но при этом локально на консоль попасть можно.
Проблема оказалась известной, просто как-то на сетевую обратили внимание не сразу, искали другие причины. А проблема в кривости реализации драйвера r8169. Падает он под большими нагрузками. Совет один - заменить его на r8168.


Проверить, какой драйвер используется можно через 


lsmod

А заменять его на Debian 6.0 так:

aptitude install build-essential linux-headers-`uname -r`
 
Потом получить исходный код:
http://download.hetzner.de/drivers/r8168-8.028.00.tar.bz2
http://code.google.com/p/r8168/
 
tar xjf r8168-8.ХХХ.00.tar.bz2
cd r8168-8.ХХХ.00
make all
 
depmod -a
echo "blacklist r8169" >> /etc/modprobe.d/blacklist.conf
echo "r8168" >> /etc/initramfs-tools/modules
update-initramfs -v -u -k `uname -r`
 
reboot 

1 comment: