From: Goswin v. B. <gos...@we...> - 2012-03-19 13:24:52
|
Han-Wen Nienhuys <ha...@gm...> writes: > Hi there, > > I am trying to understand under what circumstances FUSE may FORGET inodes. > > When running > > ./zipfs -debug /tmp/x /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/src.zip > > and doing > > find /tmp/x > > I notice that the live inode count goes up to 1114. Then, a > > echo 3 > /proc/sys/vm/drop_caches > > makes the inode count drop to 96. When I umount the FS, these last > inodes get duly forgotten, but can't they be forgotten earlier? Since > I only ran a find on the mount, there is nothing from userspace > holding on to any data. No idea. What if you drop caches again? > Background: I have a file system being used in production that is > using too much memory for inodes if any process tries to scan the > mount. Are there ways to make FUSE recollect inodes more aggressively, > or is there a way to tune the behavior? If not, I could imagine that > the daemon could issue some sort of NOTIFY to trigger a forget event. > > thanks! The forget is issued by the kernel independent of fuse and happens when the kernel thinks it is a good time to do so. If your filesystem is using up too much memory then maybe just stop keeping all those inodes cached. Nothing requires you to keep inodes in memory until they get a forget. Just keep your inode+generation number straight. MfG Goswin |