Высоконагруженный CGo: как вызывать неблокирующий С/С++-код без удивления и ассемблера ☠️

Хардкор

C/C++
Оптимизация производительности
GO
Расширение кругозора

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Представим, что мы строим на Go числодробилку. Например, шифрование/сжатие данных в СХД. Все алгоритмы уже существуют, но на С. Элементарно: берем CGо, пишем интеграцию, тестируем, катим в прод... Тормозит! Евгений расскажет, как тут замешан CGо и как его укрощать!

Целевая аудитория

Доклад будет интересен тем, кто использует неблокирующие C/C++-вызовы из Go. Это в основном касается математических функций (распаковка и сжатие данных, аудио- и видеокодеки, криптография и прочее), а также асинхронных вызовов в ядро ОС.

Тезисы

CGо — это мощный и удобный инструмент, позволяющий вызывать любые функции на C/C++, не опасаясь блокировки своей Go-программы. Однако за это удобство приходится расплачиваться в случае неблокирующих вызовов, таких как асинхронные операции в ядре ОС или числодробительные задачи (сжатие/распаковка, криптография, математические расчеты и т. д.).

Помимо накладных расходов на каждый вызов C, нас также может ожидать неожиданная просадка производительности при обработке больших объемов данных. Кроме того, использование CGо может привести к потере гарантий на время исполнения горутин.

В докладе мы разберем случаи, когда CGо может негативно сказаться на производительности проекта. Обсудим, как Go внутри своего рантайма «экономит» на неблокирующих вызовах, как мы можем использовать эти механизмы, а также рассмотрим другие обходные пути.

Разрабатывал и реверсил от Hardware до Software. Сейчас занимается инфобезом и пишет управление системами хранения данных. Работает на стыке Go и системного программирования.

YADRO

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

Видео