diff options
author | Jakob Unterwurzacher | 2020-05-17 21:37:36 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2020-05-17 21:37:36 +0200 |
commit | f8ad2ac3e252108ccfedd115eb3009a5a7d77106 (patch) | |
tree | 66b9ddec7b8a2eddda7e432389ee23ee4abb410b /internal | |
parent | f6088e5008606ba8ca8f7be2b95b5087b59e5cab (diff) |
dircache: increase cache size & lifetime
Looking at the dircache debug output, we see
that a "git status" workload has a very bad
cache hit rate because the entries expire or
get evicted before they can be reused.
Increase both cache size and lifetime for
a 4x speedup:
Before: 75s
After: 17s
https://github.com/rfjakob/gocryptfs/issues/410
Diffstat (limited to 'internal')
-rw-r--r-- | internal/fusefrontend/dircache.go | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/internal/fusefrontend/dircache.go b/internal/fusefrontend/dircache.go index 718e5b2..d6ec52c 100644 --- a/internal/fusefrontend/dircache.go +++ b/internal/fusefrontend/dircache.go @@ -12,11 +12,11 @@ import ( ) const ( - // Number of entries in the dirCache. Three entries work well for two - // (probably also three) parallel tar extracts (hit rate around 92%). + // Number of entries in the dirCache. + // 20 entries work well for "git stat" on a small git repo on sshfs. // Keep in sync with test_helpers.maxCacheFds ! // TODO: How to share this constant without causing an import cycle? - dirCacheSize = 3 + dirCacheSize = 20 // Enable Lookup/Store/Clear debug messages enableDebugMessages = false // Enable hit rate statistics printing @@ -151,7 +151,7 @@ func (d *dirCacheStruct) Lookup(dirRelPath string) (fd int, iv []byte) { // expireThread is started on the first Lookup() func (d *dirCacheStruct) expireThread() { for { - time.Sleep(1 * time.Second) + time.Sleep(60 * time.Second) d.Clear() if enableStats { d.Lock() |