From 53b7c17261dbf0aeb46ebb448f7c97d5c9fad986 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Thu, 1 Jun 2017 20:53:03 +0200 Subject: [PATCH] Don't cap GOMAXPROCS at 4. Before Go 1.5, GOMAXPROCS defaulted to 1, hence it made sense to unconditionally increase it to 4. But since Go 1.5, GOMAXPROCS defaults to the number of cores, so don't keep it from increasing above 4. Also, update the performance numbers. --- Documentation/performance.txt | 1 + main.go | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Documentation/performance.txt b/Documentation/performance.txt index 21d9b0c..de2c1bc 100644 --- a/Documentation/performance.txt +++ b/Documentation/performance.txt @@ -28,6 +28,7 @@ v1.2.1-33 112 21 12 1.6 4.4 (go1.8) v1.2.1-33 -serialize_reads 116 21 39 1.5 4.4 v1.3-27 113 20 11 1.4 4.2 +v1.3-53-gf44902a 119 19 12 1.6 4.1 Results for EncFS for comparison (benchmark.bash -encfs): diff --git a/main.go b/main.go index 9b0e31b..58d5e06 100644 --- a/main.go +++ b/main.go @@ -11,6 +11,8 @@ import ( "strings" "time" + "github.com/hanwen/go-fuse/fuse" + "github.com/rfjakob/gocryptfs/internal/configfile" "github.com/rfjakob/gocryptfs/internal/contentenc" "github.com/rfjakob/gocryptfs/internal/exitcodes" @@ -18,7 +20,6 @@ import ( "github.com/rfjakob/gocryptfs/internal/speed" "github.com/rfjakob/gocryptfs/internal/stupidgcm" "github.com/rfjakob/gocryptfs/internal/tlog" - "github.com/hanwen/go-fuse/fuse" ) // GitVersion is the gocryptfs version according to git, set by build.bash @@ -111,7 +112,11 @@ func printVersion() { } func main() { - runtime.GOMAXPROCS(4) + mxp := runtime.GOMAXPROCS(0) + if mxp < 4 { + // On a 2-core machine, setting maxprocs to 4 gives 10% better performance + runtime.GOMAXPROCS(4) + } var err error // Parse all command-line options (i.e. arguments starting with "-") // into "args". Path arguments are parsed below.