Популярное

Музыка Кино и Анимация Автомобили Животные Спорт Путешествия Игры Юмор

Интересные видео

2025 Сериалы Трейлеры Новости Как сделать Видеоуроки Diy своими руками

Топ запросов

смотреть а4 schoolboy runaway турецкий сериал смотреть мультфильмы эдисон
dTub
Скачать

Zero Copy Receive using io_uring - David Wei

Автор: Linux Plumbers Conference

Загружено: 2023-11-29

Просмотров: 3788

Описание:

Memory bandwidth is a bottleneck in many distributed services running at scale as I/O bandwidth has not kept up with CPU or NIC speeds over time. One limitation of kernel socket-based networking is that data is first copied into kernel memory via DMA, and then again into user memory, which adds pressure to overall memory bandwidth and comes with a CPU cost. The classic way of addressing this limitation is to bypass the kernel entirely, moving packets either to host memory (e.g. DPDK, PF_RING and AF_XDP sockets) or device memory (e.g. RDMA, RoCE and InfiniBand) without involving the kernel at all. These require re-implementing the networking stack either in userspace or the NIC hardware, and re-working applications which can no longer assume generic kernel-based socket I/O.

With hardware support for features such as flow steering and header splitting and new kernel features such as page pool memory providers, it is now possible to have a hybrid solution that sits in between full kernel bypass and full kernel copying. This paper proposes a way of doing zero copy network RX into host userspace memory using io_uring for the user facing API. We use header splitting to direct headers into the kernel for handling the stateful aspects of the networking layer, and payloads directly to its intended destination in userspace memory without copying using DMA. Flows are forwarded to specific RX queues configured for this using flow steering.

In this paper, we first discuss our design using io_uring from end to end in detail. We then compare our design with existing zero copy RX APIs in kernel and kernel bypass methods, and share some preliminary performance results after that. As part of this, we go into kernel features (both WIP and still in proposal) that are needed to support our design.

In the second part of the paper, we discuss the limitations of zero copy receive, and the challenges of fully making use of it in userspace applications. Unlike TX where data size is known ahead of time, RX data size is unpredictable and potentially bursty. To get the most out of zero copy receive, the write end has to coordinate closely with the receive end to agree on the exact shape of the data in order to avoid more copies down the line. For example, if the final destination is to write to a block device, then there are requirements for O_DIRECT to work such as alignment. Finally, we talk about our plans for further work e.g. extending support to GPU device memory.

Zero Copy Receive using io_uring - David Wei

Поделиться в:

Доступные форматы для скачивания:

Скачать видео mp4

  • Информация по загрузке:

Скачать аудио mp3

Похожие видео

Enhancing Homa Linux for Efficient RPC Transportation - Dr Xiaochun Lu

Enhancing Homa Linux for Efficient RPC Transportation - Dr Xiaochun Lu

Ваш интернет-провайдер следит за всем — исправьте это с помощью DNS-фильтрации!

Ваш интернет-провайдер следит за всем — исправьте это с помощью DNS-фильтрации!

Эти 5 приемов работы с пользовательскими столбцами упростят использование Power Query.

Эти 5 приемов работы с пользовательскими столбцами упростят использование Power Query.

io_uring: пишем убийцу Nginx // Демо-занятие курса «Программист С»

io_uring: пишем убийцу Nginx // Демо-занятие курса «Программист С»

Kernel Recipes 2024 - Efficient zero-copy networking using io_uring

Kernel Recipes 2024 - Efficient zero-copy networking using io_uring

Как работает буферизация ввода

Как работает буферизация ввода

Zero-copy: Principle and Implementation (By Zhenyuan Zhang)

Zero-copy: Principle and Implementation (By Zhenyuan Zhang)

Kubernetes — Простым Языком на Понятном Примере

Kubernetes — Простым Языком на Понятном Примере

Сетевой стек Linux— КИТ 2024

Сетевой стек Linux— КИТ 2024

LLM и GPT - как работают большие языковые модели? Визуальное введение в трансформеры

LLM и GPT - как работают большие языковые модели? Визуальное введение в трансформеры

Supercharge your I/O in Rust with io_uring

Supercharge your I/O in Rust with io_uring

IO uring gets Zero Copy network operations

IO uring gets Zero Copy network operations

Стоило ли покупать УБИТЫЙ MacBook за 6000₽? Вскрытие меня Удивило! Ремонт MacBook Pro 13 2013 a1502

Стоило ли покупать УБИТЫЙ MacBook за 6000₽? Вскрытие меня Удивило! Ремонт MacBook Pro 13 2013 a1502

Unia Europejska upadnie? Co dalej z Europą?

Unia Europejska upadnie? Co dalej z Europą?

Network Performance in the Linux Kernel, Getting the most out of the Hardware

Network Performance in the Linux Kernel, Getting the most out of the Hardware

Для Чего РЕАЛЬНО Нужен был ГОРБ Boeing 747?

Для Чего РЕАЛЬНО Нужен был ГОРБ Boeing 747?

toolchain-agnostic build time improvements - Tanzir Hasan, Google & Nick Desaulniers, Google

toolchain-agnostic build time improvements - Tanzir Hasan, Google & Nick Desaulniers, Google

Сисадмины больше не нужны? Gemini настраивает Linux сервер и устанавливает cтек N8N. ЭТО ЗАКОННО?

Сисадмины больше не нужны? Gemini настраивает Linux сервер и устанавливает cтек N8N. ЭТО ЗАКОННО?

The Linux socket API explained

The Linux socket API explained

Проектирование системы: почему Kafka быстрый?

Проектирование системы: почему Kafka быстрый?

© 2025 dtub. Все права защищены.



  • Контакты
  • О нас
  • Политика конфиденциальности



Контакты для правообладателей: infodtube@gmail.com