Description
The normalized DN cache uses concread::ARCache, which provides transactional snapshot-consistent reads. Those guarantees are unnecessary here: the NDN cache is a pure-function lookup over a deterministic transform (slapi_dn_normalize_ext).
Switch the implementation to a sharded S3-FIFO cache (Yang et al., SOSP 2023) in Rust. The memberOf performance suite runs 12% faster end-to-end than with concread, and the hit-path microbench is an order of magnitude faster. Config (nsslapd-ndn-cache-enabled, nsslapd-ndn-cache-max-size) and monitor counters (normalizedDNcache*) are preserved. No protocol change.
Description
The normalized DN cache uses
concread::ARCache, which provides transactional snapshot-consistent reads. Those guarantees are unnecessary here: the NDN cache is a pure-function lookup over a deterministic transform (slapi_dn_normalize_ext).Switch the implementation to a sharded S3-FIFO cache (Yang et al., SOSP 2023) in Rust. The memberOf performance suite runs 12% faster end-to-end than with concread, and the hit-path microbench is an order of magnitude faster. Config (
nsslapd-ndn-cache-enabled,nsslapd-ndn-cache-max-size) and monitor counters (normalizedDNcache*) are preserved. No protocol change.