A bottleneck is the component or operation that limits a system’s throughput or execution speed. Memory is one resource that vertical scaling can add, but the bottleneck discussion does not identify memory as the limiting resource. section 8.2
When performance reaches a limit, the described options are rewriting code or scaling. Scaling can add service instances horizontally or resources such as memory to an existing machine vertically; horizontal scaling may require code changes to coordinate distributed instances. section 8.2
Python bottleneck and Rust
A Mandelbrot workload is refactored so Python can call Rust through PyO3. The Rust function releases the GIL, allowing other threads to run; this addresses a Python performance bottleneck, not a specifically identified memory limit. section 8.6










