diff options
-rw-r--r-- | pkg/sentry/state/state.go | 7 | ||||
-rw-r--r-- | pkg/state/statefile/statefile.go | 10 | ||||
-rw-r--r-- | pkg/state/statefile/statefile_test.go | 5 |
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) } |