Перейти к содержимому
Калькуляторы

Какие интересные изменения в сетевой подсистеме нового ядра.

 

В сетевую подсистему внесены оптимизации, направленные на увеличение производительности пакетной передачи данных. Изменения особенно заметны при обработке большого объёма мелких пакетов. Производительность повышена за счёт организации групповых операций блокировки очереди, а также заполнения/очистки очереди и взаимодействия с драйвером сетевой карты не на уровне отдельных пакетов, а манипулируя порциями пакетов. Внесённые изменения позволяют добиться обработки полной пропускной способности высокоскоростных сетевых интерфейсов даже на относительно слабом оборудовании (например, на обычном компьютере продемонстрирована обработка потока в 40 гбит/сек), даже если в трафике преобладают пакеты небольшого размера;

http://www.opennet.ru/opennews/art.shtml?num=41210

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

посмотрите коммиты, относящиеся к сети, но не относящиеся к конкретным драйверам. не так уж и сложно это сделать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Разработчикам удалось добиться wirespeed TX @ 10 Gbit/s на одном ядре современного CPU, но только в случае генерации пакетов модулем pktgen.ko. В forwarding case не все так радужно, но тоже должно стать лучше. Наверное...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Крутота! От 40 гигабит на пустом месте становится тепло и приятно на душе! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сферические 40 гбит в вакууме :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Парни, отпишитесь, как ядро кто трогал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Парни, отпишитесь, как ядро кто трогал?

+1 тоже хотелось бы знать, стоит переходить или нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Они бы лучше RCV_LOWAT допилили наконец, это много где может уронить уронить нагрузку на проц в разы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

+1 тоже хотелось бы знать, стоит переходить или нет

 

Я потрогал, NAT и firewall, никаких особых изменений не заметил. Проапгрейдился, т.к. на этом сервере был 3.14, и случались изредка ребуты.

Надо будет пощупать с шейперами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не удалось откомпилить драйвера ixgbe под 3.18

http://sourceforge.net/p/e1000/bugs/443/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос даже не в том, компилится ли ixgbe или нет. Вопрос скорее в том, когда они (Intel и прочие производители дров) добавят основную фичу в драйверы:

 

The initial plan for 3.18 was to specify a new function that drivers could provide:
void (*ndo_xmit_flush)(struct net_device *dev, u16 queue);

 

Вот когда это будет в драйвере, стоит и ожидать кардинального и прироста производительности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот когда это будет в драйвере, стоит и ожидать кардинального и прироста производительности.

Если использовать родной драйвер (который идет с ядром, а не с Sourceforge) то там это уже реализовано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот когда это будет в драйвере, стоит и ожидать кардинального и прироста производительности.

Если использовать родной драйвер (который идет с ядром, а не с Sourceforge) то там это уже реализовано.

 

ООО, круто! Получается же что он самый новый. Зачем тогда дрова с SF тащить по крайне мере сейчас? Ведь ядреный самый новый получается на данный момент.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ведь ядреный самый новый получается на данный момент.

Ну да, и опций-то модуль принимает чуть больше чем одну полезную ;)

 

filename: /lib/modules/3.18.0-031800-lowlatency/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko

version: 3.19.1-k

license: GPL

description: Intel® 10 Gigabit PCI Express Network Driver

author: Intel Corporation, <linux.nics@intel.com>

srcversion: F9275BC210EF2A95410F915

alias: pci:v00008086d00001560sv*sd*bc*sc*i*

...

alias: pci:v00008086d000010B6sv*sd*bc*sc*i*

depends: mdio,ptp,dca

intree: Y

vermagic: 3.18.0-031800-lowlatency SMP preempt mod_unload modversions

signer: Magrathea: Glacier signing key

sig_key: 1E:6F:05:64:FA:C6:BD:B0:09:A7:AC:4B:C1:FC:7C:1E:51:4F:4C:C3

sig_hashalgo: sha512

parm: max_vfs:Maximum number of virtual functions to allocate per physical function - default is zero and maximum value is 63. (Deprecated) (uint)

parm: allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599-based adapters (uint)

parm: debug:Debug level (0=none,...,16=all) (int)

 

Против Интеловского:

 

filename: /lib/modules/3.16.2-031602-generic/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko

version: 3.22.3

license: GPL

description: Intel® 10 Gigabit PCI Express Network Driver

author: Intel Corporation, <linux.nics@intel.com>

srcversion: 46A1D1E98D09F1B499E601E

alias: pci:v00008086d00001560sv*sd*bc*sc*i*

...

alias: pci:v00008086d000010B6sv*sd*bc*sc*i*

depends: ptp,dca

vermagic: 3.16.2-031602-generic SMP mod_unload modversions

parm: InterruptType:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default IntMode (deprecated) (array of int)

parm: IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int)

parm: MQ:Disable or enable Multiple Queues, default 1 (array of int)

parm: DCA:Disable or enable Direct Cache Access, 0=disabled, 1=descriptor only, 2=descriptor and data (array of int)

parm: RSS:Number of Receive-Side Scaling Descriptor Queues, default 0=number of cpus (array of int)

parm: VMDQ:Number of Virtual Machine Device Queues: 0/1 = disable, 2-16 enable (default=8) (array of int)

parm: max_vfs:Number of Virtual Functions: 0 = disable (default), 1-63 = enable this many VFs (array of int)

parm: VEPA:VEPA Bridge Mode: 0 = VEB (default), 1 = VEPA (array of int)

parm: InterruptThrottleRate:Maximum interrupts per second, per vector, (0,1,956-488281), default 1 (array of int)

parm: LLIPort:Low Latency Interrupt TCP Port (0-65535) (array of int)

parm: LLIPush:Low Latency Interrupt on TCP Push flag (0,1) (array of int)

parm: LLISize:Low Latency Interrupt on Packet Size (0-1500) (array of int)

parm: LLIEType:Low Latency Interrupt Ethernet Protocol Type (array of int)

parm: LLIVLANP:Low Latency Interrupt on VLAN priority threshold (array of int)

parm: FdirPballoc:Flow Director packet buffer allocation level:

1 = 8k hash filters or 2k perfect filters

2 = 16k hash filters or 4k perfect filters

3 = 32k hash filters or 8k perfect filters (array of int)

parm: AtrSampleRate:Software ATR Tx packet sample rate (array of int)

parm: FCoE:Disable or enable FCoE Offload, default 1 (array of int)

parm: LRO:Large Receive Offload (0,1), default 1 = on (array of int)

parm: allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599 based adapters, default 0 = Disable (array of int)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не удалось откомпилить драйвера ixgbe под 3.18

http://sourceforge.net/p/e1000/bugs/443/

Собственно не поэтому не компилится:

 

root@iperf:/services/install/ixgbe-3.22.3/src# uname -a
Linux iperf 3.18.0-031800-lowlatency #201412071935 SMP PREEMPT Mon Dec 8 00:44:40 UTC 2014 x86_64 GNU/Linux

root@iperf:/services/install/ixgbe-3.22.3/src# make
make -C /lib/modules/3.18.0-031800-lowlatency/build SUBDIRS=/services/install/ixgbe-3.22.3/src modules
make[1]: вход в каталог «/usr/src/linux-headers-3.18.0-031800-lowlatency»
 CC [M]  /services/install/ixgbe-3.22.3/src/ixgbe_main.o
/services/install/ixgbe-3.22.3/src/ixgbe_main.c: In function ‘ixgbe_service_event_complete’:
/services/install/ixgbe-3.22.3/src/ixgbe_main.c:319:2: error: implicit declaration of function ‘smp_mb__before_clear_bit’ [-Werror=implicit-function-declaration]
 smp_mb__before_clear_bit();
 ^
cc1: some warnings being treated as errors
scripts/Makefile.build:257: ошибка выполнения рецепта для цели «/services/install/ixgbe-3.22.3/src/ixgbe_main.o»
make[2]: *** [/services/install/ixgbe-3.22.3/src/ixgbe_main.o] Ошибка 1
Makefile:1381: ошибка выполнения рецепта для цели «_module_/services/install/ixgbe-3.22.3/src»
make[1]: *** [_module_/services/install/ixgbe-3.22.3/src] Ошибка 2
make[1]: выход из каталога «/usr/src/linux-headers-3.18.0-031800-lowlatency»
Makefile:284: ошибка выполнения рецепта для цели «default»
make: *** [default] Ошибка 2
root@iperf:/services/install/ixgbe-3.22.3/src#

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ох, да, Ваша правда, кастрат какой-то :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

"ошибка выполнения рецепта для цели" !!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как ни странно, но ndo_xmit_flush (который и анонсирует ядру "я умею обработку кучи пакетов одним блоком") так и нету в новом ixgbe драйвере (3.23.2.1), который вышел 23го февраля. Может кто пнет Intel? Это реально сильно ускорит обработку трафика на Линукс боксах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В общем, я забил фич риквест на Сорсфорже, https://sourceforge.net/p/e1000/feature-requests/20/ плюсуем и комментируем, чтобы доказать заинтересованность :) Даешь прокачку роутинга!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А разве на стоковом драйвера из ядра сработает опция options ixgbe allow_unsupported_sfp ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А разве на стоковом драйвера из ядра сработает опция options ixgbe allow_unsupported_sfp ?

Да должно http://forum.nag.ru/forum/index.php?showtopic=99541&view=findpost&p=1051516

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как ни странно, но ndo_xmit_flush (который и анонсирует ядру "я умею обработку кучи пакетов одним блоком") так и нету в новом ixgbe драйвере (3.23.2.1), который вышел 23го февраля. Может кто пнет Intel? Это реально сильно ускорит обработку трафика на Линукс боксах.

 

this particular function was ripped out almost as soon as it landed in the net-next repository. In its place, the sk_buff structure has gained a new Boolean variable called xmit_more.

 

Ну и в ссылке на мейл лист активно обсуждается регрессия при применении предложеного патча... ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Производительность повышена за счёт организации групповых операций блокировки очереди, а также заполнения/очистки очереди и взаимодействия с драйвером сетевой карты не на уровне отдельных пакетов, а манипулируя порциями пакетов.

Не читайте opennet...читайте оригинальную статью.

 

the process of validating packets for transmission could be moved outside of the queue lock entirely, increasing concurrency in the system. The resulting patch had benefits that Eric described as awesome: full 40Gb/sec wire speed, even in the absence of segmentation offload. Needless to say, this patch, too, has been accepted into the net-next tree for the 3.18 merge window.

Патч http://lwn.net/Articles/615243/ вроде как отношения к дровам вообще не имеет - затрагивает только само ядро.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.