Unconventional approaches to performance in Ozon's search engine
summary
A talk about performance engineering inside Ozon’s O2 search engine (built on Apache Lucene) focusing on low-level, service-specific optimizations used to handle thousands of RPS across tens of millions of documents and ~14k sparse fields. It covers techniques such as code generation to reduce virtual calls on hot query paths, allocation reduction strategies (ByteBuffer vs VarHandle and allocation-free tuples), reducing indirections and memory jumps, and a cautionary example of how misuse of Objects.requireNonNull harmed performance; the talk also explains how they monitor and run performance investigations.
AI-written summary · about
chapters (10)
- 0:00Introduction
- 3:54Data size and load
- 6:04Virtual call overhead
- 11:41Cogeneration solution
- 15:11Fighting allocations
- 23:19Java's new features
- 25:49Optimization pitfalls
- 29:59Summary and recommendations
- 31:02Refactoring story
- 41:44Q&A
related talks
42mApache Ozone - State of the Union
40mNon-Obvious Things to Know When Coding in OpenSearch
24mOxia - A Horizontally Scalable Alternative to Apache Zookeeper
38mTechniques and Tools for a Coherent Discussion about Performance in Complex...
19mYou Know, for Search. Querying 24 Billion Records in 900ms
42m5 GB of Traces per Second, or How Ozon's Tracing System Works
50mA Homegrown S3 Server: Challenges of Building Stable Storage
32mElevating Scalable Object Storage: A Comprehensive Exploration of Ozone’s Trailblazing Capabilities
