On Tue, 10 May 2022 at 06:27, Ian Kent <raven@xxxxxxxxxx> wrote: > > Was there ever a test patch for systemd using fsinfo(2)? I think > > not. > > Mmm ... I'm hurt you didn't pay any attention to what I did on this > during the original fsinfo() discussions. I can't find anything related to this in my mailbox. Maybe you mentioned it at some point, but I have not been involved with the actual systemd changes. So not meant to belittle your work at all. > > Until systemd people start to reengineer the mount handing to allow > > for retrieving a single mount instead of the complete mount table we > > will never know where the performance bottleneck lies. > > We didn't need the systemd people to do this only review and contribute > to the pr for the change and eventually merge it. > > What I did on this showed that using fsinfo() allone about halved the > CPU overhead (from around 4 processes using about 80%) and once the > mount notifications was added too it went down to well under 10% per > process. The problem here was systemd is quite good at servicing events > and reducing event processing overhead meant more events would then be > processed. Utilizing the mount notifications queueing was the key to > improving this and that was what I was about to work on at the end. > > But everything stopped before the work was complete. > > As I said above it's been a long time since I looked at the systemd > work and it definitely was a WIP so "what you see is what you get" > at https://github.com/raven-au/systemd/commits/. It looks like the > place to look to get some idea of what was being done is branch > notifications-devel or notifications-rfc-pr. Also note that this > uses the libmount fsinfo() infrastrucure that was done by Karal Zak > (and a tiny bit by me) at the time. Looks great as a first step. What do you mean by "Utilizing the mount notifications queueing"? Do you mean batching of notifications? I think that's a very important issue: processing each individual notifcation may not make sense when there are lots of them. For example, doing ceate mount+remote mount in a loop a million times will result in two million notification messages (with high likelyhood of queue overflow), but in the end the mount table will end up being the same... Thanks, Miklos