From f73aee72f87ba6cd3e46184ae75824fd38250f04 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Mon, 5 Apr 2021 18:20:17 +0200 Subject: fusefrontend: print dirCache stats after unmount --- internal/fusefrontend/dircache.go | 29 ++++++++++++++++++----------- internal/fusefrontend/root_node.go | 6 ++++++ 2 files changed, 24 insertions(+), 11 deletions(-) (limited to 'internal') diff --git a/internal/fusefrontend/dircache.go b/internal/fusefrontend/dircache.go index ea0d1c8..6732de1 100644 --- a/internal/fusefrontend/dircache.go +++ b/internal/fusefrontend/dircache.go @@ -151,17 +151,24 @@ func (d *dirCache) expireThread() { for { time.Sleep(60 * time.Second) d.Clear() - if enableStats { - d.Lock() - lookups := d.lookups - hits := d.hits - d.lookups = 0 - d.hits = 0 - d.Unlock() - if lookups > 0 { - fmt.Printf("dirCache: hits=%3d lookups=%3d, rate=%3d%%\n", hits, lookups, (hits*100)/lookups) - } - } + d.stats() + } +} + +// stats prints hit rate statistics and resets the counters. No-op if +// enableStats == false. +func (d *dirCache) stats() { + if !enableStats { + return + } + d.Lock() + lookups := d.lookups + hits := d.hits + d.lookups = 0 + d.hits = 0 + d.Unlock() + if lookups > 0 { + fmt.Printf("dirCache: hits=%3d lookups=%3d, rate=%3d%%\n", hits, lookups, (hits*100)/lookups) } } diff --git a/internal/fusefrontend/root_node.go b/internal/fusefrontend/root_node.go index 2b4ad24..3a2ecf3 100644 --- a/internal/fusefrontend/root_node.go +++ b/internal/fusefrontend/root_node.go @@ -76,6 +76,12 @@ func NewRootNode(args Args, c *contentenc.ContentEnc, n nametransform.NameTransf return rn } +// main.doMount() calls this after unmount +func (rn *RootNode) AfterUnmount() { + // print stats before we exit + rn.dirCache.stats() +} + // mangleOpenFlags is used by Create() and Open() to convert the open flags the user // wants to the flags we internally use to open the backing file. // The returned flags always contain O_NOFOLLOW. -- cgit v1.2.3