Optimize FileInfo(Version) transfer (#10775)

File Info decoding, in particular, is showing up as a major 
allocator and time consumer for internode data transfers

Switch to message pack for cross-server transfers:

```
MSGP:

Size: 945 bytes

BenchmarkEncodeFileInfoMsgp-32    	 1558444	       866 ns/op	   1.16 MB/s	       0 B/op	       0 allocs/op
BenchmarkDecodeFileInfoMsgp-32    	  479968	      2487 ns/op	   0.40 MB/s	     848 B/op	      18 allocs/op

GOB:

Size: 1409 bytes

BenchmarkEncodeFileInfoGOB-32    	  333339	      3237 ns/op	   0.31 MB/s	     576 B/op	      19 allocs/op
BenchmarkDecodeFileInfoGOB-32    	   20869	     57837 ns/op	   0.02 MB/s	   16439 B/op	     428 allocs/op
```
This commit is contained in:
Klaus Post
2020-11-02 17:07:52 -08:00
committed by GitHub
parent 86e0d272f3
commit 37749f4623
8 changed files with 1777 additions and 41 deletions

View File

@@ -897,7 +897,7 @@ func (s *xlStorage) WalkSplunk(ctx context.Context, volume, dirPath, marker stri
fi = FileInfo{
Volume: volume,
Name: walkResult.entry,
Mode: os.ModeDir,
Mode: uint32(os.ModeDir),
}
} else {
var err error
@@ -985,7 +985,7 @@ func (s *xlStorage) WalkVersions(ctx context.Context, volume, dirPath, marker st
{
Volume: volume,
Name: walkResult.entry,
Mode: os.ModeDir,
Mode: uint32(os.ModeDir),
},
},
}
@@ -1066,7 +1066,7 @@ func (s *xlStorage) Walk(ctx context.Context, volume, dirPath, marker string, re
fi = FileInfo{
Volume: volume,
Name: walkResult.entry,
Mode: os.ModeDir,
Mode: uint32(os.ModeDir),
}
} else {
var err error