EROFS Switches To Buffered I/O For File-Backed Mounts To Speed-Up Container Start Times


LINUX STORAGE

Back for the Linux 6.12 kernel EROFS introduced support for file-backed mounts to help with container and sandboxing use-cases. As part of the EROFS “fixes” merged yesterday to the Linux 6.13 kernel, file-backed mounts are now using buffered I/O by default to speed-up container start times.

Merged yesterday for next weekend’s Linux 6.13-rc4 release are the EROFS fixes that include using buffered I/O by default for file-backed mounts.

Alibaba engineer Gao Xiang explained with the change:

For many use cases (e.g. container images are just fetched from remote),
performance will be impacted if underlay page cache is up-to-date but
direct i/o flushes dirty pages first.

Instead, let's use buffered I/O by default to keep in sync with loop
devices and add a (re)mount option to explicitly give a try to use
direct I/O if supported by the underlying files.

The container startup time is improved as below:
[workload] docker.io/library/workpress:latest
                                     unpack        1st run  non-1st runs
EROFS snapshotter buffered I/O file  4.586404265s  0.308s   0.198s
EROFS snapshotter direct I/O file    4.581742849s  2.238s   0.222s
EROFS snapshotter loop               4.596023152s  0.346s   0.201s
Overlayfs snapshotter                5.382851037s  0.206s   0.214s

So good for container start times. Those wanting the old behavior of using direct I/O for file-backed mounts with this open-source read-only file-system can use the “directio” mount option for restoring that usage.



Source link

Leave a Comment

Your email address will not be published. Required fields are marked *