Published Sep 3, 2019

SE-Radio Episode 277: Gil Tene on Tail Latency

Gil Tene delves into the complexities of managing and measuring tail latency in software systems, revealing its crucial impact on distributed systems and user experiences. He shares strategies to optimize performance, emphasizing the importance of high-percentile latency measurements and their economic implications.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Predictive Models

    Predictive models play a crucial role in managing latency, especially in the context of garbage collection. explains that predicting when garbage collections will occur requires understanding the current workload and various unpredictable factors. This complexity demands sophisticated engineering to anticipate system behavior and prevent latency issues.

    Chances are that your garbage collections will happen for 30% more frequently. Now you need a predictive model that tells you, based on the current workload, how long.

    ---

    These predictive models are essential for maintaining system performance and avoiding outdated practices that lead to inefficiencies 1.

       

    Timeout & Retry

    Timeout and retry strategies are effective methods for handling latency issues. describes how setting short timeouts and retrying requests can help achieve desired performance levels, even when some responses are delayed or fail. However, he warns that excessive retries can overload systems, leading to cascading failures.

    Circuit breakers fundamentally are things that attempt to react to bad performance, bad behavior, bad reliability, by easing up the pressure rather than pushing harder.

    ---

    Implementing circuit breakers can mitigate these effects by reducing system pressure and allowing recovery time 2 3.

       

    Capacity Planning

    Capacity planning is vital to prevent latency from affecting system performance. emphasizes the importance of empirical techniques over theoretical models to determine system capacity. By testing systems under various loads, organizations can identify the "misery point" and plan accordingly to avoid it.

    Capacity planning is about the prevention of crossing the misery line.

    ---

    This approach ensures that systems remain efficient and responsive, even under heavy loads 4.

       

    Bounded Latency

    Designing systems for bounded latency involves various engineering techniques to meet specific performance requirements. discusses the challenge of creating reliable systems from components with variable latency. Techniques like idempotent designs and quorum-based protocols can help manage latency, but they are complex to implement.

    We want the 99.9 percentile to be below x and all those, even though the components we have are worse than that.

    ---

    Ultimately, the goal is to shape latency behavior to fit within acceptable limits, ensuring a consistent user experience 5 6.

Related Episodes