July 1st, 2024

Sieve: Cache eviction can be simple, effective, and scalable

Researchers introduce SIEVE, a new cache eviction algorithm emphasizing simplicity and efficiency. SIEVE utilizes lazy promotion and quick demotion, outperforming LRU in efficiency. It offers a promising approach to optimize cache management.

Read original articleLink Icon
Sieve: Cache eviction can be simple, effective, and scalable

Researchers have introduced a new cache eviction algorithm called SIEVE, aiming to simplify the process while maintaining efficiency and scalability. Traditional algorithms like LRU are effective but leave room for improvement. SIEVE focuses on lazy promotion and quick demotion to enhance cache performance. It utilizes a single FIFO list and a pointer to track objects for eviction, distinguishing itself from other algorithms like FIFO-Reinsertion. By implementing SIEVE and other algorithms on various datasets, researchers found that SIEVE outperformed LRU in terms of efficiency. The study highlights the importance of optimizing cache eviction strategies, especially in modern web cache workloads where objects often exhibit skewed popularity distributions. SIEVE's design and operations offer a promising approach to balancing simplicity with effectiveness in cache management, addressing the challenges posed by evolving data access patterns and the need for efficient cache utilization.

Related

Eight million pixels and counting: improving texture atlas allocation in Firefox (2021)

Eight million pixels and counting: improving texture atlas allocation in Firefox (2021)

Improving texture atlas allocation in WebRender with the guillotiere crate reduces texture memory usage. The guillotine algorithm was replaced due to fragmentation issues, leading to a more efficient allocator. Visualizing the atlas in SVG aids debugging. Rust's simplicity and Cargo fuzz testing are praised for code development and robustness. Enhancements in draw call batching and texture upload aim to boost performance on low-end Intel GPUs by optimizing texture atlases.

Exploring How Cache Memory Works

Exploring How Cache Memory Works

Cache memory, crucial for programmers, stores data inside the CPU for quick access, bridging the CPU-RAM speed gap. Different cache levels vary in speed and capacity, optimizing performance and efficiency.

Compressing graphs and indexes with recursive graph bisection (2016)

Compressing graphs and indexes with recursive graph bisection (2016)

Graph reordering is applied to boost compression in graphs and indexes. A new compression-friendly technique using recursive graph bisection shows improved rates for large-scale graphs, enhancing storage and processing efficiency.

Tracing garbage collection for arenas

Tracing garbage collection for arenas

Tracing garbage collection in systems programming languages like C++, Rust, and Ada is compared to reference counting. A simplified tracing garbage collection approach inspired by Mark-and-Sweep is proposed for languages like Zig or Odin.

Extreme Measures Needed to Scale Chips

Extreme Measures Needed to Scale Chips

Semiconductor technology faces challenges in scaling for AI demands. Innovations like EUV lithography and chip stacking are key. Japanese researchers explore linear accelerators for EUV light. Attracting young talent is crucial.

Link Icon 3 comments
By @jerf - 11 months
I was just looking at this last week when I needed to bash a cache together for something. It's an easier problem than SIEVE's use case, because I don't mind setting a value for "how many things this cache will hold", letting it balloon up to 2x that size, then just purging it back down to the limit when it gets hit. (Which isn't entirely algorithmically dissimilar from SIEVE in some sense, not entirely unlike batching up the entire eviction process rather than running it continuously.) A neat thing about the observations in SIEVE is that you can use the observation that just a single bit "was this used since last time?" flag is very, very simple to implement in almost any cache implementation, way easier than pulling in a tree or something, but gets you a lot of the effectiveness of those algorithms. It's a real time saver when you have to build your own cache and you want something better than FIFO but don't want to implement something complicated and hard-to-test.
By @n4r9 - 11 months
HN discussion of blog post about SIEVE algorithm 5 months ago: https://news.ycombinator.com/item?id=38911740