aboutsummaryrefslogtreecommitdiff
path: root/internal/fusefrontend/dircache.go
diff options
context:
space:
mode:
authorJakob Unterwurzacher2020-05-17 21:37:36 +0200
committerJakob Unterwurzacher2020-05-17 21:37:36 +0200
commitf8ad2ac3e252108ccfedd115eb3009a5a7d77106 (patch)
tree66b9ddec7b8a2eddda7e432389ee23ee4abb410b /internal/fusefrontend/dircache.go
parentf6088e5008606ba8ca8f7be2b95b5087b59e5cab (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/fusefrontend/dircache.go')
-rw-r--r--internal/fusefrontend/dircache.go8
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()