Да, все так. Посетить мероприятие можно бесплатно. Наслаждайтесь интересными докладами, общением и угощениями в перерывах!


System Level MeetupПод капотом C/C++ и Linux kernel

О МИТАПЕ
24 мая мы соберемся в Санкт-Петербурге, чтобы поглубже изучить C/C++ и ядро Linux. Наладим сериализацию и десериализацию JSON в проекте на C++, реализуем поддержку Sdtrig в RISC-V Linux и OpenSBI, разберем подход kernel bypass и user space I/O в ядре Linux, вплетем C++ в строго C-шную кодовую базу — и на этом список интересного не заканчивается.
Офлайн-участников также ждет демозона с «железом» YADRO для ЦОД и телеком-операторов, технические интерактивы и подарки от компании.
программа
Направление:
10:0011:00
11:0011:10
Зал 1:C++
Приветственное слово
Вы узнаете больше о компании-организаторе, программно-аппаратных комплексах YADRO, их важности для цифровизации экономики, а также о роли и задачах разработчиков на С++ в этих процессах.
Зал 2:C/Linux Kernel
Приветственное слово
Поделимся планами на дальнейшие митапы Linux Kernel. Также расскажем о компании YADRO, организующей их, о программно-аппаратных комплексах YADRO, связанных ролях и задачах разработчиков.
11:1012:00
Зал 1:C++
Девиртуализация в C++, в компиляторах и в вашей программе
Мы поговорим про виртуальные функции, рассмотрим, какие проблемы они вызывают и как эти проблемы решаются компиляторами. Обсудим спекулятивную девиртуализацию, странные случаи ее несрабатывания, а также дадим рекомендации для практикующих разработчиков.
Зал 2:C/Linux Kernel
Реализация поддержки Sdtrig в RISC-V Linux и OpenSBI
Мой доклад — о том, как мы добавляли поддержку Hardware Breakpoint в OpenSBI и ядре Linux. Я расскажу об устройстве подсистемы Hardware Breakpoint (расширения Sdtrig) и сравню реализацию ее интерфейса на Linux с реализациями в x86 и arm64. Опишу механизмы, на которых она основана здесь и в имплементациях на других архитектурах — Perf Event Framework, Generic PMU, ptrace syscall.
Далее обсудим плюсы и минусы реализации на RISC-V в сравнении с другими архитектурами, проблемы из-за излишней гибкости спецификаций RISC-V, а также способы их обойти — как эффективные, так и костыльные.
12:0012:10
Перерыв
12:1013:00
Зал 1:C++
Кодек для json'ов с фиксированной схемой
Мы рассмотрим построение системы сериализации/десериализации json для проекта на C++. Разберем с примерами архитектуру нашего json-кодека: структуры данных, encoder/decoder, аллокатор. Справимся с громоздкими описаниями структур с помощью автогенерации. Сравним кодек с существующими решениями (simdjson, rapidjson, yyjson, nlohmann). Напоследок раскроем текущие ограничения инструмента и то, что еще предстоит в нем реализовать.
Зал 2:C/Linux Kernel
Linux Kernel, DPDK и kernel bypass
Мы рассмотрим подход kernel bypass и user space I/O в ядре Linux, уделяя внимание как общим принципам работы, так и реализации на примере DPDK. Обсудим основные компоненты DPDK, включая аллокацию памяти, взаимодействие с драйверами и процесс обработки пакетов. Я покажу, как технологии kernel bypass интегрируются с инфраструктурой Linux и работают на практике — в том числе на примере генератора-анализатора трафика LR100Gen компании ИнфоТеКС.
По итогам доклада вы получите целостное представление о функционировании kernel bypass в рамках Linux Kernel и его применении в современных сетевых решениях.
13:0014:00
Обед: еда, нетворкинг, а также стенды и квесты от YADRO
14:0015:00
Зал 1:C++
Как писать меньше на C++?
C++ часто кажется незаменимым инструментом. Но что, если на других языках можно добиться большего с меньшим объемом кода?
На дискуссии мы обсудим, когда стоит отказаться от C++ в пользу более гибких решений. Например, использовать Python вместо C++ для написания REST-интерфейса, оставив «плюсы» только для ресурсоемких частей. Ведь современные языки предоставляют понятные интерфейсы для интеграции с C/C++, и это открывает новые возможности для организации кода.
Зачем писать все на C++, если можно использовать более простые и удобные инструменты?
Зал 2:C/Linux Kernel
Эволюция ядра Linux
Мы поговорим о том, как поменялось ядро Linux за последние годы, какие технологии появляются в разработке сегодня и с какими вызовами сталкиваются разработчики на системном уровне. Обсудим ключевые фичи этих технологий и то, как подходы к производительности, безопасности и архитектуре трансформируются под новые нагрузки.
15:0015:15
Перерыв
15:1515:50
Зал 2:C/Linux Kernel
DMA из Userspace на Zynq US+
Этот доклад посвящен одному из вариантов сбора AXI-Stream данных для обработки на CPU. Мы рассмотрим блок AXI DMA, его возможности и требования. Примерим роль аппаратного дизайнера, поуправляем когерентностью кэшей (hw/sw hp/hpc/lpd порты в цинке) и увидим, что на самом деле требуется от драйвера ядра.
15:5016:40
Зал 1:C++
Шаблонное мета-программирование в современном C++ для задач космической баллистики
Рассмотрим, как надежность mission-critical IT-решений в российской аэрокосмической индустрии растет благодаря программированию с развитыми системами типов, а именно на C++ стандартов 11–23.
Для этой цели реализованы библиотеки C++ с открытым исходным кодом. SpaceBallistics включает type-safe-модели динамики ракет-носителей и космических аппаратов, методы дизайна и оптимизации траекторий. DimTypes реализует систему размерных типов на основе compile-time Z_p-арифметики.
16:4017:10
Кофе-пауза ☕
17:1018:00
Зал 1:C++
C++ внутри PostgreSQL: удобство против традиций
Работая над СУБД Pangolin, основанной на PostgreSQL, я попробовал аккуратно вплести C++ в строго C-шную кодовую базу. Цель была прагматичная: упростить управление ресурсами и сделать код понятнее. В результате я смог достичь тонкого баланса между философией PostgreSQL и выразительностью C++.
В докладе расскажу, где C++ действительно помог, как мы решали вопросы совместимости и как не наломать дров в кодовой базе с миллионами строк на C. Покажу конкретные участки кода «до» и «после». Под конец обсудим «грабли» и удачные решения, которые также применимы в других проектах.
Зал 2:C/Linux Kernel
Использование Rust для написания драйверов устройств
Подробно поговорим о поддержке Rust в ядре Linux и о том, как с помощью фреймворка VFIO можно писать драйверы PCI-устройств в пространстве пользователя. Обсудим, насколько Rust вообще готов для такой задачи.
18:0019:00
Закрытие: еда, нетворкинг, а также стенды и квесты от YADRO
Спикеры
Программный комитет

Илья Казаков
разработчик в команде систем хранения данных, YADRO
Ведущий потока С++. Начал писать на С еще в школе. Затем стал схемотехником: работал со звуком, делал источники питания. В 2020 году попал в настоящее IT и начал писать на С++. Работает в команде, которая занимается системами хранения данных Datapath. Спикер и соведущий конференции C++ Russia.
Ведущий потока С++. Начал писать на С еще в школе. Затем стал схемотехником: работал со звуком, делал источники питания. В 2020 году попал в настоящее IT и начал писать на С++. Работает в команде, которая занимается системами хранения данных Datapath. Спикер и соведущий конференции C++ Russia.

Илья Мамай
инженер-программист, Syntacore
Ранее исследовал out-of-order-микроархитектуры, искал в коде узкие места реализаций микроархитектур. Сейчас работает с обратной стороной «железа» — загрузчиками и ОС, расширяет их функционал и поддержку новых расширений RISC-V. Иногда возвращает к жизни советские процессоры.
Ранее исследовал out-of-order-микроархитектуры, искал в коде узкие места реализаций микроархитектур. Сейчас работает с обратной стороной «железа» — загрузчиками и ОС, расширяет их функционал и поддержку новых расширений RISC-V. Иногда возвращает к жизни советские процессоры.

Илья Шишков
R&D-разработчик в СУБД Pangolin, Сбертех
Ex-Яндекс, создатель курсов «Пояса по С++». Программирует на C++ с 2006 года.

Никита Пешаков
инженер-программист YADRO
Познает код через починку багов. Вырос на телекоме. Стажером писал 4G Packet Core. Сейчас в роли техлида разрабатывает 5G Packet Core. К приходу 6G надеется дотянуться до архитектора.
Познает код через починку багов. Вырос на телекоме. Стажером писал 4G Packet Core. Сейчас в роли техлида разрабатывает 5G Packet Core. К приходу 6G надеется дотянуться до архитектора.

Степан Репин
ведущий программист ИнфоТеКС
Последние пять лет работает над генератором-анализатором трафика на базе DPDK. Интересуется оптимизацией программ, сетевыми технологиями и операционными системами.
Последние пять лет работает над генератором-анализатором трафика на базе DPDK. Интересуется оптимизацией программ, сетевыми технологиями и операционными системами.

Константин Владимиров
руководитель отдела компиляторов и инструментов разработки Syntacore
Регулярный докладчик крупных конференций. Ведущий YouTube- и Telegram-канала с лекциями о С++, автор книги «Оптимизирующие компиляторы».
Регулярный докладчик крупных конференций. Ведущий YouTube- и Telegram-канала с лекциями о С++, автор книги «Оптимизирующие компиляторы».

Илья Андреев
старший инженер в отделе компиляторов и средств разработки Syntacore
Специалист с опытом более пяти лет в разработке компиляторов, автор улучшенной девиртуализации в Syntacore Development Toolkit.
Специалист с опытом более пяти лет в разработке компиляторов, автор улучшенной девиртуализации в Syntacore Development Toolkit.

Владимир Исаев
ведущий инженер-программист Syntacore
Занимается системным софтом для сетевых устройств и процессоров.

Данил Ефимов
инженер-программист YADRO
Последние четыре года работает в телекоме и сейчас активно занимается алгоритмом DPD (digital predistortion). Участвовал в разработке модема для миссии «Рассвет-2».
Последние четыре года работает в телекоме и сейчас активно занимается алгоритмом DPD (digital predistortion). Участвовал в разработке модема для миссии «Рассвет-2».

Станислав Богатырев
эксперт по разработке ПО YADRO
Ведущий секции Linux Kernel. Координатор и активный участник сообщества SPbLUG с опытом в индустрии более двадцати лет.
Ведущий секции Linux Kernel. Координатор и активный участник сообщества SPbLUG с опытом в индустрии более двадцати лет.

Леонид Меркин
прикладной математик, Computer Scientist и C++ инженер. Doctor of Mathematics (TU Delft, The Netherlands, 1997)
В 2020–2022 гг. был научным руководителем проекта InnoChain по созданию первой в мире формально верифицированной системы распределенного реестра. Сегодня является профессором Департамента информатики НИУ ВШЭ в Санкт-Петербурге. Также преподает в МФТИ (Физтех-школа прикладной математики и информатики) и работает в финансовой индустрии. Основные области компетенций: финансовая математика, стохастический анализ, численные методы, теория типов, формальная верификация ПО, высоконадежные системы реального времени, платформы и стратегии высокочастотной алгоритмической торговли.
В 2020–2022 гг. был научным руководителем проекта InnoChain по созданию первой в мире формально верифицированной системы распределенного реестра. Сегодня является профессором Департамента информатики НИУ ВШЭ в Санкт-Петербурге. Также преподает в МФТИ (Физтех-школа прикладной математики и информатики) и работает в финансовой индустрии. Основные области компетенций: финансовая математика, стохастический анализ, численные методы, теория типов, формальная верификация ПО, высоконадежные системы реального времени, платформы и стратегии высокочастотной алгоритмической торговли.

Алексей Щербаков
старший разработчик и тимлид МойОфис
Более семи лет опыта в разработке настольных приложений на C++ с использованием Qt. Руководит командой разработки библиотеки для построения диаграмм на TypeScript с использованием D3.js и ее интеграцией в C++/Qt-приложение.
Более семи лет опыта в разработке настольных приложений на C++ с использованием Qt. Руководит командой разработки библиотеки для построения диаграмм на TypeScript с использованием D3.js и ее интеграцией в C++/Qt-приложение.

Ярослав Бесараб
руководитель отдела в TATLIN.FLEX, YADRO
Долгое время работал с операционными системами в режиме SMM. Успел написать несколько UEFI-модулей. Также писал приложения для работы с TEE. В настоящее время руководит командой разработки модулей ядра Linux. Полностью погружен в работу над улучшением Data Plane в СХД.
Долгое время работал с операционными системами в режиме SMM. Успел написать несколько UEFI-модулей. Также писал приложения для работы с TEE. В настоящее время руководит командой разработки модулей ядра Linux. Полностью погружен в работу над улучшением Data Plane в СХД.

Владислав Шиповский
тимлид команды системного ПО Сбер
Закончил МГТУ им. Баумана по специальности «Плазменные энергетические установки». В системном программировании 10 лет, занимался в основном разработкой драйверов для различных устройств. Энтузиаст использования Rust для системного программирования. Области интересов: высокопроизводительный I/O, техники kernel-bypass.
Закончил МГТУ им. Баумана по специальности «Плазменные энергетические установки». В системном программировании 10 лет, занимался в основном разработкой драйверов для различных устройств. Энтузиаст использования Rust для системного программирования. Области интересов: высокопроизводительный I/O, техники kernel-bypass.
