Pull to refresh

Comments 10

То есть вся статья ради того, чтобы сказать, что у вас сетевые карты на 14 гбит, а не на 20?
Щиорт побери.

А где куда более важная инфа про irq, про то, что одна сессия всё равно будет в 10G?
Насколько я знаю, round-robin — единственный из механизмов port bonding, позволяющий увеличивать скорость одной сессии. Жалко, работает не везде и как попало (очень сильно зависит от конкретного свитча)
Да, увеличивает, только резко возрастает количество TCP out of order пакетов, даже при crossover подключении без свичей вовсе. Поэтому нужно задирать параметр net.ipv4.tcp_reordering.
Узкое место: PCI-E, а точнее серверный мост, который является посредником между CPU и PCI-E устройствами. Начиная с чипсета intel c202/c602 PCI-E линии подключены напрямую к CPU. По сравнению с intel 5500/5520 ускорение на порядок! Возможно Ваша платформа не имеет прямых линий на CPU.
Мне казалось, для аггрегирования обычно используют mode=4 (IEEE 802.3ad) (LACP).
Автору статьи нужно было запустить, например, htop, чтобы посмотреть, как дела с прерываниями.
Если видно, что загружено только одно ядро процессора загрузкой ядра linux (в htop красненький цвет), то драйвер упирался прерываниями в CPU.
У интелового драйвера можно выставить 4 или 8 векторов прерываний, которые могут висеть каждое на своем ядре.
Тогда драйвер сетевухи будет размазывать нагрузку на 4-8 ядер, а не на одно.
Вполне возможно, тогда автор получил бы 20 Гб сразу.
Через iperf автор ни с каким режимом кроме round-robin никогда бы не получил больше 10Гбит.

Ибо все эти режимы используют хеш от (srcip | dstip | srcport | dstport | srcmac | dstmac) в разных режимах и комбинациях для выбора интерфейса для передачи данных.

В таком виде единственный TCP поток пойдет всегда по одному интерфейсу.
Ну, не совсем. Iperf поддерживает работу в несколько потоков.
Каждый поток открывает свое соединение.
Я получил вот такую картину:
22:42:09.093381 IP 127.0.0.1.51086 > 127.0.0.1.5001: tcp 65483
22:42:09.093446 IP 127.0.0.1.51090 > 127.0.0.1.5001: tcp 106
22:42:09.093463 IP 127.0.0.1.5001 > 127.0.0.1.51090: tcp 0
22:42:09.093479 IP 127.0.0.1.51090 > 127.0.0.1.5001: tcp 65483
22:42:09.093562 IP 127.0.0.1.51088 > 127.0.0.1.5001: tcp 65483
22:42:09.093590 IP 127.0.0.1.5001 > 127.0.0.1.51088: tcp 0
22:42:09.093642 IP 127.0.0.1.51086 > 127.0.0.1.5001: tcp 65483
22:42:09.093670 IP 127.0.0.1.5001 > 127.0.0.1.51086: tcp 0
22:42:09.093719 IP 127.0.0.1.51089 > 127.0.0.1.5001: tcp 106
22:42:09.093735 IP 127.0.0.1.5001 > 127.0.0.1.51089: tcp 0
22:42:09.093750 IP 127.0.0.1.51091 > 127.0.0.1.5001: tcp 65483
22:42:09.093774 IP 127.0.0.1.5001 > 127.0.0.1.51091: tcp 0
22:42:09.093843 IP 127.0.0.1.51087 > 127.0.0.1.5001: tcp 65483


Автору статьи нужно было просто указать -P 2, или -P 4.
Это понятно, но, как я понял, целью его был разгон именно одного потока.
Да и никто не гарантирует, что та комбинация IP:PORT, которая будет получена приведёт к использованию двух разных интерфейсов.
> Это понятно, но, как я понял, целью его был разгон именно одного потока.
Мне кажется, автор просто не подумал об этом.
Как говорится, не ищите хитрый план там…
Я не знаю примеров реальной нагрузки, где нужно отдавать 10Г в одну TCP сессию.
Sign up to leave a comment.