Search

Varnish Enterprise 6.0.17r4 Release

Published May 12, 2026.

About the release

Varnish Enterprise 6.0.17r4 is a feature and bug fix release. The headline change is a rewrite of the MSE4 eviction (LRU) machinery to run lock-free, which significantly improves performance and tail latency for caches with high object churn. The release also adds new tuning knobs for MSE4 and expands vmod_tcp with backend-side TCP information logging.

The new features and notable changes are highlighted below. Please see the changelog for the complete list of changes.

New features

Lockless LRU for Massive Storage Engine 4 (MSE4)

Massive Storage Engine 4 (MSE4) introduces a lockless LRU (Least Recently Used) eviction algorithm developed to resolve production bottlenecks in highly taxing, exabyte-scale workloads. The new implementation manages the eviction list without taking any mutexes, improving performance for caches with high object churn by allowing entries to be inserted, promoted, and evicted in parallel across any CPU core. In testing under concurrent workloads, the lockless design resolved previous performance regressions and stabilized latencies, sustaining 75,000 chunk evictions per second at 1.2 terabits per second on Gen 5 NVMes, with a p50 of 1.65 ms and a p99 of 3.5 ms for 2M chunks.

Configuration impact and subdivisions

Because the LRU lists are now lockless, the historical need for storage subdivisions has largely gone away. Previously, subdivisions were configured primarily to introduce additional mutexes to artificially distribute load and achieve parallelism.

To reflect this optimization, the default_subdivisions setting has been changed from 4 to 1. While the underlying subdivision infrastructure remains intact, and utilizing it would simply create multiple lockless LRU lists per subdivision, it is our strong recommendation to run with just one subdivision moving forward. We advise reviewing and updating your MSE configuration to align with this new architectural default.

MSE4 tuning parameters

Alongside the lockless rewrite, two new parameters give operators finer control over eviction behavior:

  • *reorder_interval*: a new per-category setting, together with the default_reorder_interval environment parameter, controls the minimum interval between LRU reorder operations. This replaces the role previously played by the global lru_interval parameter, which no longer has any effect on MSE4 caches.

  • eviction_busy_promotion: a new environment parameter that controls promotion of busy entries during eviction. When an entry has been skipped this many times due to being busy, it is promoted to the head of the eviction list so that it no longer blocks eviction at the tail. Defaults to 4; set to 0 to disable.

vmod_tcp: backend TCP information logging

A new log_backend_info() function mirrors the client-side log_info() for backend connections. It logs selected kernel TCP metrics for the backend socket at the end of the backend transaction, under the betcpinfo record prefix by default.

Field selection, delta: prefixes, and the text / column / json output formats all work the same way as for log_info(). When extrachance retries kick in, one record is produced per attempt, so a single fetch can yield multiple betcpinfo records on a flaky path.

Typical usage:

sub vcl_backend_response {
    tcp.log_backend_info();
}

This helps diagnose backend-side network issues such as retransmissions, congestion-window evolution, and RTT on a per-request basis. See the vmod_tcp reference for the full list of available fields.

Notable bug fixes

  • vmod_tcp client logging on early session end: vmod_tcp now properly reports client-side TCP information at the end of processing even when the client session is ended early. (VS issue #3115)

References


®Varnish Software, Wallingatan 12, 111 60 Stockholm, Organization nr. 556805-6203