Хабрахабр

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

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

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

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

Общая суть

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

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

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

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

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

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

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

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

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

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

Итоги

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

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

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

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

  • 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: В данную статью силами сообщества вносятся изменения.

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

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть