Thread (34 messages) 34 messages, 9 authors, 2020-03-21

Re: [PATCH 00/11] fs/dcache: Limit # of negative dentries

From: Ian Kent <raven@themaw.net>
Date: 2020-02-28 04:36:27
Also in: linux-fsdevel, lkml

On Fri, 2020-02-28 at 12:16 +0800, Ian Kent wrote:
On Thu, 2020-02-27 at 19:34 -0800, Matthew Wilcox wrote:
quoted
On Thu, Feb 27, 2020 at 05:55:43PM +0800, Ian Kent wrote:
quoted
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?
Who knows how old apps will be on distros., ;)
Or what admins put in the PATH, I've seen oddness in that
a lot.
But I don't think it matters.
And I don't think I made my answer to the question clear.

I don't think setting a minimum matters but there are other
sources of a possibly significant number of lookups on
paths that don't exist. I've seen evidence recently
(although I suspect unfounded) that systemd can generate
lots of these lookups at times.

And let's not forget that file systems are the primary
source of these and not all create them on lookups.
I may be mistaken, but I think ext4 does not while xfs
definitely does.

The more important metric I think is calculating a sensible
maximum to be pruned to prevent getting bogged down as there
could be times when a lot of these are present. After all this
is meant to be an iterative pruning measure.

Ian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help