cmd/syncthing: Report real hashing performance, including weakhash

Instead of

    [I6KAH] 19:05:56 INFO: Single thread hash performance is 359 MB/s using minio/sha256-simd (354 MB/s using crypto/sha256).

it now says

    [I6KAH] 19:06:16 INFO: Single thread SHA256 performance is 359 MB/s using minio/sha256-simd (354 MB/s using crypto/sha256).
    [I6KAH] 19:06:17 INFO: Actual hashing performance is 299.01 MB/s

which is more informative. This is also the number it reports in usage
reporting.

GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3918
This commit is contained in:
Jakob Borg 2017-01-23 21:56:43 +00:00 committed by Audrius Butkevicius
parent 9587b89d9d
commit 6d4fa27ea7
3 changed files with 12 additions and 8 deletions

View File

@ -613,6 +613,8 @@ func syncthingMain(runtimeOptions RuntimeOptions) {
sha256.SelectAlgo() sha256.SelectAlgo()
sha256.Report() sha256.Report()
perf := cpuBench(3, 150*time.Millisecond)
l.Infof("Actual hashing performance is %.02f MB/s", perf)
// Emit the Starting event, now that we know who we are. // Emit the Starting event, now that we know who we are.

View File

@ -22,7 +22,7 @@ import (
"github.com/syncthing/syncthing/lib/dialer" "github.com/syncthing/syncthing/lib/dialer"
"github.com/syncthing/syncthing/lib/model" "github.com/syncthing/syncthing/lib/model"
"github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/protocol"
"github.com/syncthing/syncthing/lib/sha256" "github.com/syncthing/syncthing/lib/scanner"
"github.com/syncthing/syncthing/lib/upgrade" "github.com/syncthing/syncthing/lib/upgrade"
"github.com/thejerf/suture" "github.com/thejerf/suture"
) )
@ -291,22 +291,24 @@ func cpuBench(iterations int, duration time.Duration) float64 {
perf = v perf = v
} }
} }
blocksResult = nil
return perf return perf
} }
var blocksResult []protocol.BlockInfo // so the result is not optimized away
func cpuBenchOnce(duration time.Duration) float64 { func cpuBenchOnce(duration time.Duration) float64 {
chunkSize := 100 * 1 << 10 dataSize := 16 * protocol.BlockSize
h := sha256.New() bs := make([]byte, dataSize)
bs := make([]byte, chunkSize)
rand.Reader.Read(bs) rand.Reader.Read(bs)
t0 := time.Now() t0 := time.Now()
b := 0 b := 0
for time.Since(t0) < duration { for time.Since(t0) < duration {
h.Write(bs) r := bytes.NewReader(bs)
b += chunkSize blocksResult, _ = scanner.Blocks(r, protocol.BlockSize, int64(dataSize), nil, true)
b += dataSize
} }
h.Sum(nil)
d := time.Since(t0) d := time.Since(t0)
return float64(int(float64(b)/d.Seconds()/(1<<20)*100)) / 100 return float64(int(float64(b)/d.Seconds()/(1<<20)*100)) / 100
} }

View File

@ -89,7 +89,7 @@ func Report() {
otherImpl = defaultImpl otherImpl = defaultImpl
} }
l.Infof("Single thread hash performance is %s using %s (%s using %s).", formatRate(selectedRate), selectedImpl, formatRate(otherRate), otherImpl) l.Infof("Single thread SHA256 performance is %s using %s (%s using %s).", formatRate(selectedRate), selectedImpl, formatRate(otherRate), otherImpl)
} }
func selectMinio() { func selectMinio() {