Pre-Content fanotify / fanotify Hierarchical Storage Management Expected For Linux 6.14
([Linux Storage] 26 December 06:22 AM EST
pre-content fanotify)
- Reference: 0001514898
- News link: https://www.phoronix.com/news/Linux-6.14-precontent-fanotify
- Source link:
Queued up by way of linux-fs.git's "for_next" Git branch is the fanotify HSM (Hierarchical Storage Management) implementation via the pre-content fanotify patch series.
This code has been worked on by Meta engineers for a while and already the code is used in production in Meta for fanotify-based Hierarchical Storage Management / Tiered Storage handling using the fanotify API. The fanotify API is used for notification and interception of file-system events.
Being worked on for several months has been the [1]pre-content hooks for fanotify worked on by Amir Goldstein and Josef Bacik. Bacik explained there:
"I did a bunch of testing, I also got some performance numbers. I copied a kernel tree, and then did remote-fetch, and then make -j4
Normal
real 9m49.709s
user 28m11.372s
sys 4m57.304s
HSM
real 10m6.454s
user 29m10.517s
sys 5m2.617s
So ~17 seconds more to build with HSM. I then did a make mrproper on both trees to see the size
[root@fedora ~]# du -hs /src/linux
1.6G /src/linux
[root@fedora ~]# du -hs dst
125M dst
This mirrors the sort of savings we've seen in production.
Meta has had these patches (minus the page fault patch) deployed in production for almost a year with our own utility for doing on-demand package fetching. The savings from this has been pretty significant.
The page-fault hooks are necessary for the last thing we need, which is on-demand range fetching of executables. Some of our binaries are several gigs large, having the ability to remote fetch them on demand is a huge win for us not only with space savings, but with startup time of containers."
The patches are queued up via [2]this merge to linux-fs.git for_next, so barring any last minute issues they should end up being merged for Linux 6.14 in the new year.
[1] https://lore.kernel.org/all/cover.1731684329.git.josef@toxicpanda.com/
[2] https://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git/commit/?h=for_next&id=3f1063103cf29ba66f7066d32a72778f99b7a046
This code has been worked on by Meta engineers for a while and already the code is used in production in Meta for fanotify-based Hierarchical Storage Management / Tiered Storage handling using the fanotify API. The fanotify API is used for notification and interception of file-system events.
Being worked on for several months has been the [1]pre-content hooks for fanotify worked on by Amir Goldstein and Josef Bacik. Bacik explained there:
"I did a bunch of testing, I also got some performance numbers. I copied a kernel tree, and then did remote-fetch, and then make -j4
Normal
real 9m49.709s
user 28m11.372s
sys 4m57.304s
HSM
real 10m6.454s
user 29m10.517s
sys 5m2.617s
So ~17 seconds more to build with HSM. I then did a make mrproper on both trees to see the size
[root@fedora ~]# du -hs /src/linux
1.6G /src/linux
[root@fedora ~]# du -hs dst
125M dst
This mirrors the sort of savings we've seen in production.
Meta has had these patches (minus the page fault patch) deployed in production for almost a year with our own utility for doing on-demand package fetching. The savings from this has been pretty significant.
The page-fault hooks are necessary for the last thing we need, which is on-demand range fetching of executables. Some of our binaries are several gigs large, having the ability to remote fetch them on demand is a huge win for us not only with space savings, but with startup time of containers."
The patches are queued up via [2]this merge to linux-fs.git for_next, so barring any last minute issues they should end up being merged for Linux 6.14 in the new year.
[1] https://lore.kernel.org/all/cover.1731684329.git.josef@toxicpanda.com/
[2] https://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git/commit/?h=for_next&id=3f1063103cf29ba66f7066d32a72778f99b7a046
phoronix