Инфопространство,
Москва, 07 октября 2019

Go Assembler, или Как мы в N раз ускорили наш код гомоморфного хэширования Вопросы производительности и хардкор

Доклад принят в программу конференции
Евгений Стратоников
Neo SPCC

Инженер-программист-математик.
Закончил математико-механический факультет СПбГУ, стажировался в JetBrains, работал в RAIDIX.

evgeniy@nspcc.ru
Тезисы

Мы разрабатываем децентрализованное объектное хранилище данных NeoFS, которое должно работать в недоверенной и ненадёжной среде. Для контроля целостности и доступности данных мы используем гомоморфное хэширование, а это весьма тяжеловесные алгоритмы.

Для нормальной работы надо уметь обрабатывать данные со скоростью примерно 30 Мб/с на одном ядре процессора, чтобы не отставать от чтения с дешёвого жёсткого диска, но наивная реализация на Go выдавала скорости на порядок меньше.

В докладе мы расскажем, как поэтапно, от простого к сложному, применить Go Assembler для ускорения критичных ко времени выполнения кусков кода на примере нашей функции хэширования, пройдём от наивных оптимизаций до внедрения инструкций AVX2, сравним код от человека и от компилятора, а также расскажем о проблемах и их преодолении.

Нам удалось ускорить обработку данных на порядок и добиться скорости хэширования 33.3 Мб/с. После доклада любой сможет повторить наш успех для своей задачи.

Защита информации
,
Бэкенд / другое
,
Оптимизация производительности
,
GO

Другие доклады секции Вопросы производительности и хардкор