- PVSM.RU - https://www.pvsm.ru -

Современные устройства ввода-вывода быстрее, чем процессоры. Обзор статьи

Современные устройства ввода-вывода быстрее, чем процессоры. Обзор статьи - 1

Хочу рассказать о статье "I/O Is Faster Than the CPU – Let’s Partition Resources
and Eliminate (Most) OS Abstractions"
, опубликованной на личной странице одного из разработчиков ScyllaDB, Pekka Enberg. О ней узнал из видео [1].

С докладом по этой статье авторы должны были выступать на HOTOS17 [2] (Hot Topics in Operating Systems) воркшопе 12 -15 мая 2019. Насколько понял там обсуждают наработки на ранних этапах их жизни.

Моя статья носит новостной характер с целью возбудить пытливые умы на обдумывание этой темы и размышления в комментариях.

Общая суть

Ввод-ввывод на серверах с быстрыми программируемыми сетевыми картами и энергонезависимой памятью приближается к скорости энергозависимых ОЗУ, а скорость одного ядра процессора, остается на месте. Приложения не могут использовать преимущества современных аппаратных средств, т.к. вынуждены использовать интерфейсы построенные на абстракциях предполагающих медленные системы ввода-вывода.

Авторы предлагают свою структуру ОС, которую называют parakernel, она устраняет большинство абстракций ОС и предоставляет интерфейс для приложений, чтобы они могли использовать весь потенциал оборудования. Parakernel облегчает параллелизм на уровне приложений путем безопасного разделения ресурсов и мультиплексирования неразделяемых ресурсов.

Архитектура современных ОС была придумана, когда скорость ввода-вывода была намного меньше, и приложения ожидали выполнения операций ввода-вывода. В текущее время устройства ввода-вывода с легкостью могут насытить процессор.

По словам авторов, современные сетевые стеки выполняют слишком много работы на пакет. Кроме того ОС обычно реализуют API POSIX сокетов, который имеет большие издержки переключения контекста и загрязнения кэша процессора.

Аппаратные предпосылки

Современная 40Гбит сетевая карта может получать пакет соизмеримый со строкой кэша каждые 5 нс, а задержка доступа к LLC (last level cache) процессоров примерно 15 нс.

Например в Linux вели разработку POSIX AIO интерфейса, который должен бы был предоставлять простой и эффективный асинхронный интерфейс ввода-вывода. Реализация, поддержка и применение подобного интерфейса с сохранением POSIX семантики оказалась очень сложной и от него отказались в пользу нового io_uring [3].

Какое предлагается решение

Новая структура ОС, которую авторы называют parakernel, предназначена для упрощения распараллеливания задач. Приложениям выделяются ресурсы и они имеют полный контроль над ними, ресурсы которые нельзя разделить мультиплексируются ядром.

Совместное использование ресурсов в многоядерных системах требует синхронизации между ядрами процессора, что препятствует параллелизму на уровне приложения. Это препятствие можно уменьшить разделив ресурсы между ядрами процессора.

Итоги

Некоторые абстракции операционных систем ограничивают производительность ввода-вывода. Авторы представляют структуру ОС, которая разделяет разделяемые ресурсы и мультиплексирует неразделяемые ресурсы. Parakernel упрощает параллелизм уровня приложения, и дополняет дизайн поток на ядро.

Прототип parakernel написан на Rust и сейчас находится в разработке. В статье я не увидел название операционной системы, но нашел другой материал одного из авторов Manticore Operating System [4] и делаю вывод, что вот [5] репозиторий этой разработки.

Что в остальном мире

Как оказывается, производители процессоров не спят и тоже пытаются решать проблему медленной прослойки между их продукцией и потребителями. Значит многих не устраивает бутылочное горлышко производительности в виде ядра операционной системы.
Интересные нововведения от Intel, подробнее о которых можно прочитать в этой статье [6]. Приведу выдержку из нее:

  • Intel Volume Management Device (Intel VMD) — позволяет работать с накопителями NVM Express напрямую, «отдавая» девайс сразу системе хранения. Как следствие, стала возможна полноценная горячая замена SSD, индикация статуса и использование технологии Intel VROC.
  • Intel Virtual RAID on CPU (Intel VROC). Позволяет создавать RAID из NVMe накопителей средствами процессора, с ним можно отказаться от программных решений или дополнительных адаптеров для создания массивов из скоростных PCIe SSD.
  • Internet Wide-Area RDMA Protocol (iWARP). Расширение RDMA теперь поддерживается встроенными сетевыми адаптерами Intel X722, ведь процессор поддерживает четыре 10-гигабитных (или гигабитных) порта Ethernet. Напомню, RDMA получает доступ к данным по сети напрямую из памяти, минуя ядро и операционную систему.

Всегда очень интересно узнавать о новых концепциях в уже укоренившихся системах.

Прошу писать о замеченных ошибках и необходимых дополнениях.

UPD: В данную статью силами сообщества вносятся изменения.

Спасибо за помощь:

Строка рекламы подкаста "Цинковый прод [12]" в котором на правах темы мы обсудим данную статью.

Автор: Nikita Vasilchenko

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/sistemnoe-programmirovanie/317971

Ссылки в тексте:

[1] видео: https://www.youtube.com/watch?v=SM3PhGGllL0

[2] HOTOS17: http://hotos19.sigops.org/

[3] io_uring: http://kernel.dk/io_uring.pdf

[4] Manticore Operating System: https://readrust.net/operating-systems/

[5] вот: https://github.com/manticoreos/manticore

[6] этой статье: https://habr.com/ru/company/pc-administrator/blog/340808/

[7] red75prim: https://habr.com/ru/users/red75prim/

[8] POSIX AIO: https://habr.com/ru/post/451966/#comment_20164330

[9] ArsMak: https://habr.com/ru/users/arsmak/

[10] Nikobraz: https://habr.com/ru/users/nikobraz/

[11] совет про обзор VROC и iWARP: https://habr.com/ru/post/451966/#comment_20165230

[12] Цинковый прод: https://soundcloud.com/znprod

[13] Источник: https://habr.com/ru/post/451966/?utm_source=habrahabr&utm_medium=rss&utm_campaign=451966