On Tue, 2024-08-06 at 21:22 +0200, Mateusz Guzik wrote: > On Tue, Aug 6, 2024 at 9:11 PM Andi Kleen <ak@xxxxxxxxxxxxxxx> wrote: > > > > Mateusz Guzik <mjguzik@xxxxxxxxx> writes: > > > > > > I would bench with that myself, but I temporarily don't have > > > handy > > > access to bigger hw. Even so, the below is completely optional > > > and > > > perhaps more of a suggestion for the future :) > > > > > > I hacked up the test case based on tests/open1.c. > > > > Don't you need two test cases? One where the file exists and one > > where it doesn't. Because the "doesn't exist" will likely be slower > > than before because it will do the lookups twice, > > and it will likely even slow single threaded. > > > > I assume the penalty will also depend on the number of entries > > in the path. > > > > That all seem to be an important considerations in judging the > > benefits > > of the patch. > > > > This is why I suggested separately running "unlink1" which is > guaranteed to create a file every time -- all iterations will fail > the > proposed fast path. > > Unless you meant a mixed variant where only some of the threads > create > files. Perhaps worthwhile to add, not hard to do (one can switch the > mode based on passed worker number). > Well... # ./unlink1_processes -t 70 -s 100 average: v6.10: 114455 v6.10 + patch: 149513 I suspect what's happening here is that this patch relieves contention for the inode_lock and that allows the unlinks to proceed faster. Running it with a single process though: average: v6.10: 200106 v6.10 + patch: 199188 So, ~.4% degradation there? That doesn't seem too bad given the gain in the threaded test. -- Jeff Layton <jlayton@xxxxxxxxxx>