Все

Когда тормозит память: парсим гигабайты в секунду

Видео backend
Андрей делится увлекательной историей из продакшна Авито.

Активных объявлений у нас 200 миллионов, архивных миллиарды, поэтому «One Billion Row Challenge» — это не только лишь развлечение на Новый Год, но и ежедневная работа. Например, предельно быстро перевести около 100 GB неких дополнительных данных из TSV файликов в поисковые индексы. Несложная задачка-то!

Ловушка кроется в слове «предельно»: «просто» быстро можно сделать «обычными» оптимизациями, но за дело взялась инфраструктура поиска и немного увлеклась, отчего просто «быстро» не получилось.

В ходе исследований «что тормозит на текущем шаге» выяснилось, что тормозило вообще всё: начиная от SSD (ожидаемо) и кончая RAM. По самый, неожиданно, memset() или там LZ4 (которые мы, неожиданно, тоже научились оптимизировать). В итоге получился очень разнообразный ряд из примерно 10 довольно <s>упоротых</s> необычных оптимизаций, о которых Андрей и рассказывает подробно в докладе.