From bdbb3ab329221c5fabf2f073ff4be6025302687b Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 5 May 2015 00:14:07 +0200 Subject: [PATCH] Remove pools.go --- archiver_test.go | 11 ++--- cmd/restic/main.go | 4 -- crypto/crypto_test.go | 15 ++---- pools.go | 111 ------------------------------------------ 4 files changed, 8 insertions(+), 133 deletions(-) delete mode 100644 pools.go diff --git a/archiver_test.go b/archiver_test.go index d7ef839eb..8babeed14 100644 --- a/archiver_test.go +++ b/archiver_test.go @@ -56,8 +56,8 @@ func BenchmarkChunkEncrypt(b *testing.B) { s := SetupBackend(b) defer TeardownBackend(b, s) - buf := restic.GetChunkBuf("BenchmarkChunkEncrypt") - buf2 := restic.GetChunkBuf("BenchmarkChunkEncrypt") + buf := make([]byte, chunker.MaxSize) + buf2 := make([]byte, chunker.MaxSize) chunkBuf := make([]byte, chunkerBufSize) b.ResetTimer() @@ -66,9 +66,6 @@ func BenchmarkChunkEncrypt(b *testing.B) { for i := 0; i < b.N; i++ { benchmarkChunkEncrypt(b, buf, buf2, chunkBuf, rd, s.Key()) } - - restic.FreeChunkBuf("BenchmarkChunkEncrypt", buf) - restic.FreeChunkBuf("BenchmarkChunkEncrypt", buf2) } func benchmarkChunkEncryptP(b *testing.PB, buf, chunkBuf []byte, rd Rdr, key *crypto.Key) { @@ -93,7 +90,7 @@ func BenchmarkChunkEncryptParallel(b *testing.B) { data := Random(23, 10<<20) // 10MiB - buf := restic.GetChunkBuf("BenchmarkChunkEncryptParallel") + buf := make([]byte, chunker.MaxSize) chunkBuf := make([]byte, chunkerBufSize) b.ResetTimer() @@ -105,8 +102,6 @@ func BenchmarkChunkEncryptParallel(b *testing.B) { benchmarkChunkEncryptP(pb, buf, chunkBuf, rd, s.Key()) } }) - - restic.FreeChunkBuf("BenchmarkChunkEncryptParallel", buf) } func archiveDirectory(b testing.TB) { diff --git a/cmd/restic/main.go b/cmd/restic/main.go index d5d7cd169..8b552ae26 100644 --- a/cmd/restic/main.go +++ b/cmd/restic/main.go @@ -10,7 +10,6 @@ import ( "golang.org/x/crypto/ssh/terminal" "github.com/jessevdk/go-flags" - "github.com/restic/restic" "github.com/restic/restic/backend" "github.com/restic/restic/backend/local" "github.com/restic/restic/backend/sftp" @@ -182,7 +181,4 @@ func main() { if err != nil { os.Exit(1) } - - // this prints some statistics for memory management using the debug package - restic.PoolAlloc() } diff --git a/crypto/crypto_test.go b/crypto/crypto_test.go index 8468b6c0f..faba9970c 100644 --- a/crypto/crypto_test.go +++ b/crypto/crypto_test.go @@ -8,7 +8,6 @@ import ( "os" "testing" - "github.com/restic/restic" "github.com/restic/restic/chunker" "github.com/restic/restic/crypto" . "github.com/restic/restic/test" @@ -29,7 +28,9 @@ func TestEncryptDecrypt(t *testing.T) { _, err := io.ReadFull(RandomReader(42, size), data) OK(t, err) - ciphertext, err := crypto.Encrypt(k, restic.GetChunkBuf("TestEncryptDecrypt"), data) + buf := make([]byte, size+crypto.Extension) + + ciphertext, err := crypto.Encrypt(k, buf, data) OK(t, err) Assert(t, len(ciphertext) == len(data)+crypto.Extension, "ciphertext length does not match: want %d, got %d", @@ -41,8 +42,6 @@ func TestEncryptDecrypt(t *testing.T) { "plaintext length does not match: want %d, got %d", len(data), len(plaintext)) - restic.FreeChunkBuf("TestEncryptDecrypt", ciphertext) - Equals(t, plaintext, data) } } @@ -226,8 +225,6 @@ func BenchmarkEncryptDecryptReader(b *testing.B) { _, err = io.Copy(ioutil.Discard, r) OK(b, err) } - - restic.PoolAlloc() } func BenchmarkDecrypt(b *testing.B) { @@ -236,10 +233,8 @@ func BenchmarkDecrypt(b *testing.B) { k := crypto.NewRandomKey() - ciphertext := restic.GetChunkBuf("BenchmarkDecrypt") - defer restic.FreeChunkBuf("BenchmarkDecrypt", ciphertext) - plaintext := restic.GetChunkBuf("BenchmarkDecrypt") - defer restic.FreeChunkBuf("BenchmarkDecrypt", plaintext) + plaintext := make([]byte, size) + ciphertext := make([]byte, size+crypto.Extension) ciphertext, err := crypto.Encrypt(k, ciphertext, data) OK(b, err) diff --git a/pools.go b/pools.go deleted file mode 100644 index 151752062..000000000 --- a/pools.go +++ /dev/null @@ -1,111 +0,0 @@ -package restic - -import ( - "sync" - - "github.com/restic/restic/chunker" - "github.com/restic/restic/crypto" - "github.com/restic/restic/debug" -) - -type poolStats struct { - m sync.Mutex - mget map[string]int - mput map[string]int - mmax map[string]int - - new int - get int - put int - max int -} - -const ( - maxCiphertextSize = crypto.Extension + chunker.MaxSize -) - -func (s *poolStats) Get(k string) { - s.m.Lock() - defer s.m.Unlock() - - s.get++ - cur := s.get - s.put - if cur > s.max { - s.max = cur - } - - if k != "" { - if _, ok := s.mget[k]; !ok { - s.mget[k] = 0 - s.mput[k] = 0 - s.mmax[k] = 0 - } - - s.mget[k]++ - - cur = s.mget[k] - s.mput[k] - if cur > s.mmax[k] { - s.mmax[k] = cur - } - } -} - -func (s *poolStats) Put(k string) { - s.m.Lock() - defer s.m.Unlock() - - s.put++ - - if k != "" { - s.mput[k]++ - } -} - -func newPoolStats() *poolStats { - return &poolStats{ - mget: make(map[string]int), - mput: make(map[string]int), - mmax: make(map[string]int), - } -} - -var ( - chunkPool = sync.Pool{New: newChunkBuf} - - chunkStats = newPoolStats() - nodeStats = newPoolStats() -) - -func newChunkBuf() interface{} { - chunkStats.m.Lock() - defer chunkStats.m.Unlock() - chunkStats.new++ - - // create buffer for iv, data and mac - return make([]byte, maxCiphertextSize) -} - -func GetChunkBuf(s string) []byte { - chunkStats.Get(s) - return chunkPool.Get().([]byte) -} - -func FreeChunkBuf(s string, buf []byte) { - chunkStats.Put(s) - chunkPool.Put(buf) -} - -func PoolAlloc() { - debug.Log("pools.PoolAlloc", "pool stats for chunk: new %d, get %d, put %d, diff %d, max %d\n", - chunkStats.new, chunkStats.get, chunkStats.put, chunkStats.get-chunkStats.put, chunkStats.max) - for k, v := range chunkStats.mget { - debug.Log("pools.PoolAlloc", "pool stats for chunk[%s]: get %d, put %d, diff %d, max %d\n", - k, v, chunkStats.mput[k], v-chunkStats.mput[k], chunkStats.mmax[k]) - } - - debug.Log("pools.PoolAlloc", "pool stats for node: new %d, get %d, put %d, diff %d, max %d\n", - nodeStats.new, nodeStats.get, nodeStats.put, nodeStats.get-nodeStats.put, nodeStats.max) - for k, v := range nodeStats.mget { - debug.Log("pools.PoolAlloc", "pool stats for node[%s]: get %d, put %d, diff %d, max %d\n", k, v, nodeStats.mput[k], v-nodeStats.mput[k], nodeStats.mmax[k]) - } -}