Назад | Перейти на главную страницу

Потеря пакета Xen PV

У меня серьезные проблемы с потерей пакетов на одном из моих серверов. Этот сервер - несколько старая машина (эпохи P4), на которой запущены Debian Squeeze и Xen 4.0. На нем работают два domU (оба также Debian Squeeze), один шлюз и файловый сервер. К сожалению, у процессора нет расширений виртуализации, поэтому можно использовать только PV.

Изучая, почему наша сеть кажется медленнее, чем должна, я обнаружил довольно серьезную потерю пакетов (~ 25%). После дальнейшего исследования и нескольких экспериментов я провел измерение между dom0 и одним из domU:

Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:   110 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to dom0, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:   110 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.2(domU) port 33817 connected with 192.168.1.100(dom0) port 5001
[  4] local 192.168.1.2(domU) port 5001 connected with 192.168.1.100(dom0) port 48606
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  46.3 MBytes  38.7 Mbits/sec
[  3] Sent 33020 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec  46.2 MBytes  38.6 Mbits/sec  0.030 ms   89/33019 (0.27%)
[  3]  0.0-10.0 sec  1 datagrams received out-of-order
[  4]  0.0-10.2 sec  43.0 MBytes  35.3 Mbits/sec  13.074 ms 11575/42256 (27%)

tl; dr: 27% потеря пакетов от dom0 к domU с 50 Мбит UDP-пакетами.

То же самое происходит из любой точки сети. Проблема становится лучше для меньшей полосы пропускания (0,047% для 5 Мбит) и хуже для более высокой (59% для 200 Мбит).

Я увеличил CPU-вес dom0, подкачки не происходит, и фактическое сетевое оборудование не задействовано. Я никогда не ожидал, что Xen (или что-то подобное) сбросит пакеты, и я совершенно не знаю, что делать дальше.

У Xen были проблемы с Разгрузка контрольной суммы TCP, но я не уверен, используется ли это также для UDP и повлияет ли на ваш тест. Вы можете попробовать отключить это, запустив в domU следующее:

ethtool -K eth0 tx off