[Comm] Тормозит сеть в виртуальной машине

Peter V. Saveliev =?iso-8859-1?q?peet_=CE=C1_altlinux=2Eru?=
Ср Ноя 7 15:51:25 MSK 2007


On Wednesday 07 November 2007, Сергей Бялко wrote:
> У меня стоят вот такие лимиты и превышение нигде нет:
>
> Служба значение макс. значение пороговое значение макс. значение кол-во
> превышений   kmemsize 1133889 2244907  0  lockedpages 0 0  0  privvmpages
> 2617 14053  0  shmpages 0 0  0  numproc 9 15  0  physpages 2144 2567  0
> vmguarpages 0 0  0  oomguarpages 2144 2567  0  numtcpsock 2 3  0  numflock
> 1 2  0  numpty 2 3  0  numsiginfo 0 3  0  tcpsndbuf 0 0  0  tcprcvbuf 0 0 
> 0 othersockbuf 6936 24456  0  dgramrcvbuf 0 8456  0  numothersock 7 12  0
> dcachesize 0 0  0  numfile 228 290  0  numiptent 10 10  0
>
<skip />

Странно, у меня даже при почти неработающем контейнере есть превышение 
othersockbuf. У Вас точно в tcpsndbuf/tcprcvbuf значение failcnt == 0? 
Используете venet или veth?

Просто описанные симптомы очень похожи не на железную проблему, а на работу 
congestion algo в tcp: при потере пакетов снижать скорость. А потеря может 
быть, в частности, из-за превышения размера буфера на передачу. В нормальных 
системах такое не происходит, однако при закрученных гайках в ovz я нечто 
похожее наблюдал.

Можно попробовать сделать так, на материнской системе:

# modprobe tcp_veno
# sysctl -w net.ipv4.tcp_congestion_control=veno

После чего попробовать снова скачать что-нибудь с ftp. Если станет немножко 
лучше, дело в потерях пакетов, а где они теряются -- ну, см. сами. Мне бы 
казалось, что в лимитах ovz.

ЗЫ: использовать veno на проводном линке на рабочей машине не стоит, после 
эксперимента вернуть обратно:

# sysctl -w net.ipv4.tcp_congestion_control=bic

-- 
Peter V. Saveliev


Подробная информация о списке рассылки community