On 2/27/20 10:34 PM, Matthew Wilcox wrote: > On Thu, Feb 27, 2020 at 05:55:43PM +0800, Ian Kent wrote: >> Not all file systems even produce negative hashed dentries. >> >> The most beneficial use of them is to improve performance of rapid >> fire lookups for non-existent names. Longer lived negative hashed >> dentries don't give much benefit at all unless they suddenly have >> lots of hits and that would cost a single allocation on the first >> lookup if the dentry ttl expired and the dentry discarded. >> >> A ttl (say jiffies) set at appropriate times could be a better >> choice all round, no sysctl values at all. > The canonical argument in favour of negative dentries is to improve > application startup time as every application searches the library path > for the same libraries. Only they don't do that any more: > > $ strace -e file cat /dev/null > execve("/bin/cat", ["cat", "/dev/null"], 0x7ffd5f7ddda8 /* 44 vars */) = 0 > access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) > openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 > openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 > openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3 > openat(AT_FDCWD, "/dev/null", O_RDONLY) = 3 > > So, are they still useful? Or should we, say, keep at most 100 around? > It is the shell that does the path search, not the command itself. Cheers, Longman