Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram
Поднимем Devuan на вершину Distrowatch! Просто перейдите по ссылке один раз в день.

Использование GPU для ускорения обработки сетевых пакетов в ядре Linux

Новости собранные из разных RSS источников
Аватара пользователя
root:#
Site Admin
Сообщения: 2154
Зарегистрирован: Вт ноя 08, 2022 3:27 pm
Благодарил (а): 60 раз
Поблагодарили: 28 раз

Использование GPU для ускорения обработки сетевых пакетов в ядре Linux

Сообщение root:# »

Использование GPU для ускорения обработки сетевых пакетов в ядре Linux
Для обсуждения разработчиками ядра Linux опубликован набор патчей c реализацией механизма KNOD, позволяющего использовать GPU AMD для ускорения обработки сетевых пакетов. KNOD взаимодействует с GPU напрямую, без обращения к фреймворкам в пространстве пользователя, таким как AMD ROCm и NVIDIA CUDA, самостоятельно управляет очередями GPU и выполняет JIT-компиляцию BPF-программ обработки пакетов для выполнения на GPU. Пакеты для обработки перенаправляются из памяти сетевого адаптера в GPU с использованием DMA и Device Memory TCP. Из сетевых возможностей сетевого стека, выполнение которых можно ускорить при помощи GPU, отмечаются обработчики сетевых протоколов, IPsec, туннели, шифрование, netfilter, управление трафиком, OVS (Open vSwitch) и XDP. На данном этапе развития внимание проекта сосредоточено на ускорении подсистемы XDP (eXpress Data Path), которая дополняет eBPF возможностью запускать BPF-программы на уровне сетевого драйвера, с поддержкой прямого доступа к DMA-буферу пакетов и работой на стадии до выделения памяти сетевым стеком. При выполнении таких операций, как балансировка нагрузки на транспортном уровне (L4 OSI) и IPsec-шифрование через XDP, производительность упирается в число ядер CPU. В контексте KNOD подобные BPF-программы при помощи JIT-компилятора транслируются в машинный код GPU и выполняются на GPU. Применение GPU даёт возможность тысячам потоков параллельно выполнять одну и ту же программу над разными сетевыми пакетами, перенося нагрузку с CPU на GPU и позволяя масштабировать пропускную способность за счёт массового параллелизма GPU (SIMT), а не количества ядер CPU. Проект может использоваться на системах с видеокартами AMD на базе архитектуры GCN. Выбор GPU AMD объясняется наличием полноценного открытого драйвера AMDGPU, интегрированного в основной состав ядра Linux, в котором документирована функциональность, необходимая для организации вычислений на GPU без лишних прослоек и абстракций. В будущем не исключается реализация поддержки GPU Intel. Поддержка GPU NVIDIA пока затруднена из-за отсутствия полноценного открытого драйвера в основном составе ядра (имеющихся драйвер Nouveau пока непригоден для использования в KNOD).
Источник: https://www.opennet.ru/opennews/art.shtml?num=65983