Заходят как-то в лофт разработчик на С++, доктор математических наук и инженер-программист Linux kernel — и вместо шутки начинается System Level Meetup. 24 мая в Санкт-Петербурге соберутся те, кто пишет код на уровне железа, оптимизирует ядро Linux и проектирует архитектуру сложных систем. Два трека — C++ и Linux kernel, десятки докладов, живое общение, стенды, квесты и железо от YADRO. Регистрируйтесь и подключайтесь — онлайн или офлайн.

Что в программе

System Level Meetup разделен на два параллельных трека: C++ и С/Linux kernel. 

Направление C++

Девиртуализация в C++, компиляторах и вашей программе

Константин Владимиров

Руководитель отдела компиляторов и инструментов разработки в Syntacore

Илья Андреев

Старший инженер в отделе компиляторов и средств разработки в Syntacore

Обсудим виртуальные функции: с какими проблемами они связаны, как компиляторы их решают, что такое спекулятивная девиртуализация, почему она иногда не работает и что с этим делать разработчику.

Кодек для JSON'ов с фиксированной схемой

Никита Пешаков

Инженер-программист в YADRO

Поговорим о том, как мы строили свою систему сериализации и десериализации JSON для проекта на C++. Покажем архитектуру нашего JSON-кодека на примерах: от структур данных до encoder'а, decoder'а и аллокатора. Расскажем, как справились с громоздкими описаниями с помощью автогенерации. Сравним наше решение с simdjson, rapidjson, yyjson и nlohmann. В завершение — о текущих ограничениях и планах по развитию инструмента.

Дискуссия: как писать меньше на C++?

Константин Владимиров

Руководитель отдела компиляторов и инструментов разработки в Syntacore

Илья Казаков

Разработчик в команде систем хранения данных в YADRO

Алексей Щербаков

Старший разработчик и тимлид в МойОфис

Василий Рамаданов

Инженер-программист в YADRO

C++ — мощный инструмент, но всегда ли он нужен? Обсудим случаи, когда проще и выгоднее отказаться от «плюсов» в пользу других языков. Например, писать REST-интерфейс на Python, а С++ оставить только для тяжелых вычислений. Современные языки легко интегрируются с C/C++, и это открывает новые подходы к архитектуре.

Реализация динамического полиморфизма для свободных функций

Кирилл Колодяжный

Инженер-программист в YADRO

Расскажу об одном из способов реализации динамического полиморфизма для свободных функций — когда одна сигнатура вызывает разные реализации в зависимости от аргументов. В ООП это делают через виртуальные методы, но я покажу, как автоматизировать подобный подход в процедурном стиле, используя аналог таблицы виртуальных вызовов. Также затрону тему составных ключей и техники type-erasure для упаковки функций. Такой подход применяется, например, в системах машинного обучения. Он позволяет писать универсальный код для тензорных вычислений, который работает на разных устройствах и в различных сценариях без изменений.

Шаблонное метапрограммирование в современном C++ для космической баллистики

Леонид Меркин

Прикладной математик, Computer Scientist и C++ инженер (доктор математических наук, TU Delft, The Netherlands, 1997) 

Поговорим о том, как современные стандарты C++ (11–23) и развитые системы типов повышают надежность и устойчивость IT-решений в российской аэрокосмической отрасли.

Я покажу open source-библиотеки, разработанные для этой цели:

  • SpaceBallistics — type-safe-модели динамики ракет и космических аппаратов, а также инструменты для проектирования и оптимизации траекторий.

  • DimTypes — система размерных типов на основе compile-time Z_p-арифметики.

C++ внутри PostgreSQL: удобство против традиций

Илья Шишков

R&D-разработчик в СУБД Pangolin в Сбертех

В работе над СУБД Pangolin на базе PostgreSQL я решил аккуратно внедрить C++ в строго C-шную кодовую базу. Цель — упростить управление ресурсами и сделать код более понятным. Мне удалось найти баланс между философией PostgreSQL и выразительностью C++.

В докладе я расскажу, где C++ действительно помог, как мы решали вопросы совместимости и как избежать ошибок в проекте с миллионами строк на C. Покажу фрагменты кода «до» и «после», а также разберу проблемы, которые могут у вас возникнуть.

Направление C/Linux kernel

Реализация поддержки Sdtrig в RISC-V Linux и OpenSBI

Илья Мамай

Инженер-программист в Syntacore

В докладе я расскажу, как мы добавили поддержку Hardware Breakpoint в OpenSBI и ядро Linux. Объясню, как работает подсистема Hardware Breakpoint (расширение Sdtrig) и как мы реализовали ее интерфейс на Linux. Сравню наш подход с реализациями на x86 и arm64.

Затем разберу плюсы и минусы подхода для RISC-V: какие проблемы создает гибкость его спецификаций и как мы с ними справились. Где получилось изящно, а где пришлось применить костыли.

Linux kernel, DPDK и kernel bypass

Степан Репин

Ведущий программист в ИнфоТеКС

Kernel bypass и user space I/O — ключевые технологии для высокопроизводительных сетевых решений. Мы разберем, как они устроены в Linux и как работают на практике, используя DPDK в качестве примера.

Рассмотрим основные компоненты DPDK: управление памятью, взаимодействие с драйверами и обработку пакетов. Покажу, как kernel bypass интегрируется с Linux-инфраструктурой и применяется в реальных задачах — например, в генераторе-анализаторе трафика LR100Gen от компании ИнфоТеКС.

В результате вы получите цельное представление о том, как kernel bypass работает в рамках Linux и какие преимущества дает в современных сетевых системах.

Дискуссия: эволюция ядра Linux

Владимир Исаев

Ведущий инженер-программист в Syntacore 

Владислав Шиповский

Тимлид команды системного ПО в Сбере

Ярослав Бесараб

Руководитель отдела в TATLIN.FLEX в YADRO

Как меняется ядро Linux — не в теории, а на практике? Мы разберем, что нового появилось за последние годы, какие технологии приходят в системную разработку сегодня и с какими вызовами сталкиваются инженеры.

Обсудим ключевые фичи, свежие подходы к производительности, безопасности и архитектуре и посмотрим, как все это адаптируется под современные нагрузки и требования.

DMA из Userspace на Zynq US+

Данил Ефимов

Инженер-программист в YADRO

Поговорим о том, как можно собирать AXI-Stream-данные для обработки на CPU. В центре внимания — блок AXI DMA: разберем его возможности, ограничения и реальные требования.

Попробуем себя в роли аппаратного дизайнера: поработаем с кэш-когерентностью, разберемся с hw/sw, HP/HPC/LPD портами в Zynq и выясним, чего на самом деле ждет ядро Linux от драйвера. Все — на конкретных примерах и без лишней теории.

Ремонт обхода кадров стека в ядре Linux для RISC-V

Матвей Быстрин

Инженер по системному программированию СнК в YADRO

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

В докладе разберем, как работает механизм обхода стека в ядре Linux и где он используется. Поработаем с gdb, посмотрим дизассемблированный код и, конечно, изучим спецификацию и фрагменты исходников ядра. Также немного углубимся в работу компилятора и заглянем «под капот» GCC.

Использование Rust для написания драйверов устройств

Владислав Шиповский

Тимлид команды системного ПО в Сбере

Разберем, как развивается поддержка Rust в ядре Linux и можно ли уже использовать его для серьезных задач. На примере фреймворка VFIO посмотрим, как писать драйверы PCI-устройств в user space — без погружения в ядро.

Обсудим, насколько Rust готов для такой работы, где он помогает, а где пока уступает привычным инструментам.

Кроме того, вас ждут демозона с оборудованием YADRO для ЦОД и телеком-операторов, технические интерактивы и квесты, а также подарки и сувениры от организаторов.

Где и когда встречаемся

System Level Meetup состоится 24 мая в Санкт-Петербурге в Loft Hall (Арсенальная наб. 1). Начало митапа — в 11:00, а гостей ждем с 10:00. 

Участие в митапе бесплатное, но требует регистрации. Подробности и расписание доступны на странице мероприятия.

Если вы хотите узнать больше о Linux и С++ прямо сейчас, читайте статьи на Хабре:

Комментарии (0)