summaryrefslogtreecommitdiffhomepage
path: root/pkg
diff options
context:
space:
mode:
authorZhaozhong Ni <nzz@google.com>2018-05-08 10:06:14 -0700
committerShentubot <shentubot@google.com>2018-05-08 10:07:10 -0700
commitfea624b37a90c0e1efc0c1e7ae7dda7b2d1a0050 (patch)
treea5993ef86b85bf7d23a8d50007c24c9029da957e /pkg
parent09c323910d7f28fec9e4c92e5faaa92bb63bd431 (diff)
Sentry: always use "best speed" compression for save and remove the option.
PiperOrigin-RevId: 195835861 Change-Id: Ib696b1b571a6b061725a33c535cd7215fe518b97
Diffstat (limited to 'pkg')
-rw-r--r--pkg/sentry/state/state.go7
-rw-r--r--pkg/state/statefile/statefile.go10
-rw-r--r--pkg/state/statefile/statefile_test.go5
3 files changed, 10 insertions, 12 deletions
diff --git a/pkg/sentry/state/state.go b/pkg/sentry/state/state.go
index c306091da..393289926 100644
--- a/pkg/sentry/state/state.go
+++ b/pkg/sentry/state/state.go
@@ -50,11 +50,6 @@ type SaveOpts struct {
// Metadata is save metadata.
Metadata map[string]string
- // CompressionLevel is the compression level to use.
- //
- // See statefile.NewWriter for details.
- CompressionLevel int
-
// Callback is called prior to unpause, with any save error.
Callback func(err error)
}
@@ -76,7 +71,7 @@ func (opts SaveOpts) Save(k *kernel.Kernel, w *watchdog.Watchdog) error {
addSaveMetadata(opts.Metadata)
// Open the statefile.
- wc, err := statefile.NewWriter(opts.Destination, opts.Key, opts.Metadata, opts.CompressionLevel)
+ wc, err := statefile.NewWriter(opts.Destination, opts.Key, opts.Metadata)
if err != nil {
err = ErrStateFile{err}
} else {
diff --git a/pkg/state/statefile/statefile.go b/pkg/state/statefile/statefile.go
index b25b743b7..64b0a6312 100644
--- a/pkg/state/statefile/statefile.go
+++ b/pkg/state/statefile/statefile.go
@@ -45,6 +45,7 @@ package statefile
import (
"bytes"
+ "compress/flate"
"crypto/hmac"
"crypto/sha256"
"encoding/json"
@@ -86,7 +87,7 @@ var ErrMetadataInvalid = fmt.Errorf("metadata invalid, can't start with _")
// NewWriter returns a state data writer for a statefile.
//
// Note that the returned WriteCloser must be closed.
-func NewWriter(w io.Writer, key []byte, metadata map[string]string, compressionLevel int) (io.WriteCloser, error) {
+func NewWriter(w io.Writer, key []byte, metadata map[string]string) (io.WriteCloser, error) {
if metadata == nil {
metadata = make(map[string]string)
}
@@ -140,8 +141,11 @@ func NewWriter(w io.Writer, key []byte, metadata map[string]string, compressionL
w = hashio.NewWriter(w, h)
- // Wrap in compression.
- return compressio.NewWriter(w, compressionChunkSize, compressionLevel)
+ // Wrap in compression. We always use "best speed" mode here. When using
+ // "best compression" mode, there is usually only a little gain in file
+ // size reduction, which translate to even smaller gain in restore
+ // latency reduction, while inccuring much more CPU usage at save time.
+ return compressio.NewWriter(w, compressionChunkSize, flate.BestSpeed)
}
// MetadataUnsafe reads out the metadata from a state file without verifying any
diff --git a/pkg/state/statefile/statefile_test.go b/pkg/state/statefile/statefile_test.go
index 6e67b51de..66d9581ed 100644
--- a/pkg/state/statefile/statefile_test.go
+++ b/pkg/state/statefile/statefile_test.go
@@ -16,7 +16,6 @@ package statefile
import (
"bytes"
- "compress/flate"
crand "crypto/rand"
"encoding/base64"
"io"
@@ -89,7 +88,7 @@ func TestStatefile(t *testing.T) {
var bufDecoded bytes.Buffer
// Do all the writing.
- w, err := NewWriter(&bufEncoded, key, c.metadata, flate.BestSpeed)
+ w, err := NewWriter(&bufEncoded, key, c.metadata)
if err != nil {
t.Fatalf("error creating writer: got %v, expected nil", err)
}
@@ -195,7 +194,7 @@ func benchmark(b *testing.B, size int, write bool, compressible bool) {
var stateBuf bytes.Buffer
writeState := func() {
stateBuf.Reset()
- w, err := NewWriter(&stateBuf, key, nil, flate.BestSpeed)
+ w, err := NewWriter(&stateBuf, key, nil)
if err != nil {
b.Fatalf("error creating writer: %v", err)
}