Urgent.News

What's breaking now, across thousands of outlets.

Tech

[$] Buffer sizes for FUSE io_uring

The Filesystem in Userspace (FUSE) subsystem provides a way to service filesystem requests from a user-space server, which moves the format-handling code out of the kernel. The FUSE server can use the io_uring facility for better performance, but Bernd Schubert is concerned that memory is being wasted because the current implementation has a single, large buffer size that is excessive for small…

In the 2026 Linux Storage, Filesystem, Memory Management, and BPF Summit held in Zagreb, Croatia, Bernd Schubert led a discussion on buffer sizes for FUSE io_uring. He expressed concern that the current implementation uses a single large buffer size, which is excessive for small I/O operations. Schubert proposed a solution that would separate headers from payloads and allow for multiple buffer sizes, such as 4KB, 64KB, 128KB, and 1MB.

This would enable the right-sized entry to be chosen based on the size of the I/O operation, reducing memory waste. Joanne Koong suggested using multiple rings with different buffer sizes, but Schubert preferred a single ring to minimize system calls. FUSE maintainer Miklos Szeredi raised concerns about memory management and fragmentation, but Schubert noted that his approach statically sets up multiple buffers of each size, avoiding fragmentation.

Koong argued that waiting for an available buffer of the right size could add unnecessary latency, while Schubert believed there were not enough small requests to justify waiting for smaller buffers. Ultimately, the proposed solution aims to reduce memory usage while handling metadata requests efficiently, without causing significant performance issues.

Written by urgent.news from LWN's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at lwn.net →

More in Tech

More from Monday 3 August →