mirror of
https://github.com/containers/podman.git
synced 2025-08-06 11:32:07 +08:00
Add 'stats-dump' file to exported checkpoint
There was the question about how long it takes to create a checkpoint. CRIU already provides some statistics about how long it takes to create a checkpoint and similar. With this change the file 'stats-dump' is included in the checkpoint archive and the tool checkpointctl can be used to display these statistics: ./checkpointctl show -t /tmp/cp.tar --print-stats Displaying container checkpoint data from /tmp/dump.tar [...] CRIU dump statistics +---------------+-------------+--------------+---------------+---------------+---------------+ | FREEZING TIME | FROZEN TIME | MEMDUMP TIME | MEMWRITE TIME | PAGES SCANNED | PAGES WRITTEN | +---------------+-------------+--------------+---------------+---------------+---------------+ | 105405 us | 1376964 us | 504399 us | 446571 us | 492153 | 88689 | +---------------+-------------+--------------+---------------+---------------+---------------+ Signed-off-by: Adrian Reber <areber@redhat.com>
This commit is contained in:
2
go.mod
2
go.mod
@ -7,7 +7,7 @@ require (
|
||||
github.com/blang/semver v3.5.1+incompatible
|
||||
github.com/buger/goterm v0.0.0-20181115115552-c206103e1f37
|
||||
github.com/checkpoint-restore/checkpointctl v0.0.0-20210922093614-c31748bec9f2
|
||||
github.com/checkpoint-restore/go-criu/v5 v5.1.0
|
||||
github.com/checkpoint-restore/go-criu/v5 v5.2.0
|
||||
github.com/container-orchestrated-devices/container-device-interface v0.0.0-20210325223243-f99e8b6c10b9
|
||||
github.com/containernetworking/cni v1.0.1
|
||||
github.com/containernetworking/plugins v1.0.1
|
||||
|
7
go.sum
7
go.sum
@ -139,8 +139,8 @@ github.com/checkpoint-restore/checkpointctl v0.0.0-20210922093614-c31748bec9f2/g
|
||||
github.com/checkpoint-restore/go-criu/v4 v4.0.2/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw=
|
||||
github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw=
|
||||
github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M=
|
||||
github.com/checkpoint-restore/go-criu/v5 v5.1.0 h1:BkVH17kcwgmKMnFArsvLrxuBbMwfvPNYRB7mfJ0lzyI=
|
||||
github.com/checkpoint-restore/go-criu/v5 v5.1.0/go.mod h1:iaS8bb7p6zKJanp1Qe8mpl7+bnkYBR500psJR6mwma0=
|
||||
github.com/checkpoint-restore/go-criu/v5 v5.2.0 h1:QwsRK9EdBr2kQr44DqSdBrP4dULp2+4EkqounYQOnF8=
|
||||
github.com/checkpoint-restore/go-criu/v5 v5.2.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E=
|
||||
github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=
|
||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=
|
||||
@ -1449,8 +1449,9 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD
|
||||
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
|
||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
|
||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
@ -21,6 +21,7 @@ import (
|
||||
"time"
|
||||
|
||||
metadata "github.com/checkpoint-restore/checkpointctl/lib"
|
||||
"github.com/checkpoint-restore/go-criu/v5/stats"
|
||||
cdi "github.com/container-orchestrated-devices/container-device-interface/pkg"
|
||||
"github.com/containernetworking/plugins/pkg/ns"
|
||||
"github.com/containers/buildah/pkg/chrootuser"
|
||||
@ -1013,6 +1014,7 @@ func (c *Container) exportCheckpoint(options ContainerCheckpointOptions) error {
|
||||
metadata.ConfigDumpFile,
|
||||
metadata.SpecDumpFile,
|
||||
metadata.NetworkStatusFile,
|
||||
stats.StatsDump,
|
||||
}
|
||||
|
||||
if c.LogDriver() == define.KubernetesLogging ||
|
||||
@ -1197,7 +1199,7 @@ func (c *Container) checkpoint(ctx context.Context, options ContainerCheckpointO
|
||||
if !options.Keep && !options.PreCheckPoint {
|
||||
cleanup := []string{
|
||||
"dump.log",
|
||||
"stats-dump",
|
||||
stats.StatsDump,
|
||||
metadata.ConfigDumpFile,
|
||||
metadata.SpecDumpFile,
|
||||
}
|
||||
@ -1564,8 +1566,8 @@ func (c *Container) restore(ctx context.Context, options ContainerCheckpointOpti
|
||||
cleanup := [...]string{
|
||||
"restore.log",
|
||||
"dump.log",
|
||||
"stats-dump",
|
||||
"stats-restore",
|
||||
stats.StatsDump,
|
||||
stats.StatsRestore,
|
||||
metadata.NetworkStatusFile,
|
||||
metadata.RootFsDiffTar,
|
||||
metadata.DeletedFilesFile,
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"os"
|
||||
|
||||
metadata "github.com/checkpoint-restore/checkpointctl/lib"
|
||||
"github.com/checkpoint-restore/go-criu/v5/stats"
|
||||
"github.com/containers/common/libimage"
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/podman/v3/libpod"
|
||||
@ -39,6 +40,7 @@ func CRImportCheckpoint(ctx context.Context, runtime *libpod.Runtime, restoreOpt
|
||||
"volumes",
|
||||
"ctr.log",
|
||||
"artifacts",
|
||||
stats.StatsDump,
|
||||
metadata.RootFsDiffTar,
|
||||
metadata.DeletedFilesFile,
|
||||
metadata.NetworkStatusFile,
|
||||
|
5
vendor/github.com/checkpoint-restore/go-criu/v5/.gitignore
generated
vendored
5
vendor/github.com/checkpoint-restore/go-criu/v5/.gitignore
generated
vendored
@ -1,5 +1,6 @@
|
||||
test/test
|
||||
test/test.coverage
|
||||
test/piggie/piggie
|
||||
test/phaul
|
||||
test/phaul/phaul
|
||||
test/phaul/phaul.coverage
|
||||
image
|
||||
stats/stats.proto
|
||||
|
56
vendor/github.com/checkpoint-restore/go-criu/v5/Makefile
generated
vendored
56
vendor/github.com/checkpoint-restore/go-criu/v5/Makefile
generated
vendored
@ -1,5 +1,7 @@
|
||||
SHELL = /bin/bash
|
||||
GO ?= go
|
||||
CC ?= gcc
|
||||
COVERAGE_PATH ?= $(shell pwd)/.coverage
|
||||
|
||||
all: build test phaul-test
|
||||
|
||||
@ -9,13 +11,15 @@ lint:
|
||||
build:
|
||||
$(GO) build -v ./...
|
||||
|
||||
TEST_BINARIES := test/test test/piggie/piggie test/phaul/phaul
|
||||
TEST_PAYLOAD := test/piggie/piggie
|
||||
TEST_BINARIES := test/test $(TEST_PAYLOAD) test/phaul/phaul
|
||||
COVERAGE_BINARIES := test/test.coverage test/phaul/phaul.coverage
|
||||
test-bin: $(TEST_BINARIES)
|
||||
|
||||
test/piggie/piggie: test/piggie/piggie.c
|
||||
$(CC) $^ -o $@
|
||||
|
||||
test/test: test/*.go
|
||||
test/test: test/main.go
|
||||
$(GO) build -v -o $@ $^
|
||||
|
||||
test: $(TEST_BINARIES)
|
||||
@ -27,7 +31,7 @@ test: $(TEST_BINARIES)
|
||||
}
|
||||
rm -rf image
|
||||
|
||||
test/phaul/phaul: test/phaul/*.go
|
||||
test/phaul/phaul: test/phaul/main.go
|
||||
$(GO) build -v -o $@ $^
|
||||
|
||||
phaul-test: $(TEST_BINARIES)
|
||||
@ -37,10 +41,39 @@ phaul-test: $(TEST_BINARIES)
|
||||
pkill -9 piggie; \
|
||||
}
|
||||
|
||||
test/test.coverage: test/*.go
|
||||
$(GO) test \
|
||||
-covermode=count \
|
||||
-coverpkg=./... \
|
||||
-mod=vendor \
|
||||
-tags coverage \
|
||||
-buildmode=pie -c -o $@ $^
|
||||
|
||||
test/phaul/phaul.coverage: test/phaul/*.go
|
||||
$(GO) test \
|
||||
-covermode=count \
|
||||
-coverpkg=./... \
|
||||
-mod=vendor \
|
||||
-tags coverage \
|
||||
-buildmode=pie -c -o $@ $^
|
||||
|
||||
coverage: $(COVERAGE_BINARIES) $(TEST_PAYLOAD)
|
||||
mkdir -p $(COVERAGE_PATH)
|
||||
mkdir -p image
|
||||
PID=$$(test/piggie/piggie) && { \
|
||||
test/test.coverage -test.coverprofile=coverprofile.integration.$$RANDOM -test.outputdir=${COVERAGE_PATH} COVERAGE dump $$PID image && \
|
||||
test/test.coverage -test.coverprofile=coverprofile.integration.$$RANDOM -test.outputdir=${COVERAGE_PATH} COVERAGE restore image; \
|
||||
pkill -9 piggie; \
|
||||
}
|
||||
rm -rf image
|
||||
PID=$$(test/piggie/piggie) && { \
|
||||
test/phaul/phaul.coverage -test.coverprofile=coverprofile.integration.$$RANDOM -test.outputdir=${COVERAGE_PATH} COVERAGE $$PID; \
|
||||
pkill -9 piggie; \
|
||||
}
|
||||
|
||||
clean:
|
||||
@rm -f $(TEST_BINARIES)
|
||||
@rm -rf image
|
||||
@rm -f rpc/rpc.proto stats/stats.proto
|
||||
@rm -f $(TEST_BINARIES) $(COVERAGE_BINARIES) codecov
|
||||
@rm -rf image $(COVERAGE_PATH)
|
||||
|
||||
rpc/rpc.proto:
|
||||
curl -sSL https://raw.githubusercontent.com/checkpoint-restore/criu/master/images/rpc.proto -o $@
|
||||
@ -49,14 +82,19 @@ stats/stats.proto:
|
||||
curl -sSL https://raw.githubusercontent.com/checkpoint-restore/criu/master/images/stats.proto -o $@
|
||||
|
||||
rpc/rpc.pb.go: rpc/rpc.proto
|
||||
protoc --go_out=. --go_opt=Mrpc/rpc.proto=rpc/ $^
|
||||
protoc --go_out=. --go_opt=M$^=rpc/ $^
|
||||
|
||||
stats/stats.pb.go: stats/stats.proto
|
||||
protoc --go_out=. $^
|
||||
protoc --go_out=. --go_opt=M$^=stats/ $^
|
||||
|
||||
vendor:
|
||||
GO111MODULE=on $(GO) mod tidy
|
||||
GO111MODULE=on $(GO) mod vendor
|
||||
GO111MODULE=on $(GO) mod verify
|
||||
|
||||
.PHONY: build test phaul-test test-bin clean lint vendor
|
||||
codecov:
|
||||
curl -Os https://uploader.codecov.io/latest/linux/codecov
|
||||
chmod +x codecov
|
||||
./codecov -f '.coverage/*'
|
||||
|
||||
.PHONY: build test phaul-test test-bin clean lint vendor coverage codecov
|
||||
|
3
vendor/github.com/checkpoint-restore/go-criu/v5/README.md
generated
vendored
3
vendor/github.com/checkpoint-restore/go-criu/v5/README.md
generated
vendored
@ -16,7 +16,7 @@ The following example would print the version of CRIU:
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/checkpoint/restore/go-criu/v5"
|
||||
"github.com/checkpoint-restore/go-criu/v5"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@ -50,6 +50,7 @@ The following table shows the relation between go-criu and criu versions:
|
||||
|
||||
| Major version | Latest release | CRIU version |
|
||||
| -------------- | -------------- | ------------ |
|
||||
| v5 | 5.2.0 | 3.16 |
|
||||
| v5 | 5.0.0 | 3.15 |
|
||||
| v4 | 4.1.0 | 3.14 |
|
||||
|
||||
|
3
vendor/github.com/checkpoint-restore/go-criu/v5/go.mod
generated
vendored
3
vendor/github.com/checkpoint-restore/go-criu/v5/go.mod
generated
vendored
@ -3,7 +3,6 @@ module github.com/checkpoint-restore/go-criu/v5
|
||||
go 1.13
|
||||
|
||||
require (
|
||||
github.com/golang/protobuf v1.5.2
|
||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c
|
||||
google.golang.org/protobuf v1.26.0
|
||||
google.golang.org/protobuf v1.27.1
|
||||
)
|
||||
|
6
vendor/github.com/checkpoint-restore/go-criu/v5/go.sum
generated
vendored
6
vendor/github.com/checkpoint-restore/go-criu/v5/go.sum
generated
vendored
@ -1,6 +1,4 @@
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk=
|
||||
@ -8,5 +6,5 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
|
||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
|
12
vendor/github.com/checkpoint-restore/go-criu/v5/magic/types.go
generated
vendored
Normal file
12
vendor/github.com/checkpoint-restore/go-criu/v5/magic/types.go
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
package magic
|
||||
|
||||
const (
|
||||
ImgCommonMagic = 0x54564319 /* Sarov (a.k.a. Arzamas-16) */
|
||||
ImgServiceMagic = 0x55105940 /* Zlatoust */
|
||||
StatsMagic = 0x57093306 /* Ostashkov */
|
||||
|
||||
PrimaryMagicOffset = 0x0
|
||||
SecondaryMagicOffset = 0x4
|
||||
SizeOffset = 0x8
|
||||
PayloadOffset = 0xC
|
||||
)
|
4
vendor/github.com/checkpoint-restore/go-criu/v5/rpc/rpc.pb.go
generated
vendored
4
vendor/github.com/checkpoint-restore/go-criu/v5/rpc/rpc.pb.go
generated
vendored
@ -2,8 +2,8 @@
|
||||
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.26.0
|
||||
// protoc v3.14.0
|
||||
// protoc-gen-go v1.27.1
|
||||
// protoc v3.12.4
|
||||
// source: rpc/rpc.proto
|
||||
|
||||
package rpc
|
||||
|
462
vendor/github.com/checkpoint-restore/go-criu/v5/stats/stats.pb.go
generated
vendored
Normal file
462
vendor/github.com/checkpoint-restore/go-criu/v5/stats/stats.pb.go
generated
vendored
Normal file
@ -0,0 +1,462 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.27.1
|
||||
// protoc v3.12.4
|
||||
// source: stats/stats.proto
|
||||
|
||||
package stats
|
||||
|
||||
import (
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
// This one contains statistics about dump/restore process
|
||||
type DumpStatsEntry struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
FreezingTime *uint32 `protobuf:"varint,1,req,name=freezing_time,json=freezingTime" json:"freezing_time,omitempty"`
|
||||
FrozenTime *uint32 `protobuf:"varint,2,req,name=frozen_time,json=frozenTime" json:"frozen_time,omitempty"`
|
||||
MemdumpTime *uint32 `protobuf:"varint,3,req,name=memdump_time,json=memdumpTime" json:"memdump_time,omitempty"`
|
||||
MemwriteTime *uint32 `protobuf:"varint,4,req,name=memwrite_time,json=memwriteTime" json:"memwrite_time,omitempty"`
|
||||
PagesScanned *uint64 `protobuf:"varint,5,req,name=pages_scanned,json=pagesScanned" json:"pages_scanned,omitempty"`
|
||||
PagesSkippedParent *uint64 `protobuf:"varint,6,req,name=pages_skipped_parent,json=pagesSkippedParent" json:"pages_skipped_parent,omitempty"`
|
||||
PagesWritten *uint64 `protobuf:"varint,7,req,name=pages_written,json=pagesWritten" json:"pages_written,omitempty"`
|
||||
IrmapResolve *uint32 `protobuf:"varint,8,opt,name=irmap_resolve,json=irmapResolve" json:"irmap_resolve,omitempty"`
|
||||
PagesLazy *uint64 `protobuf:"varint,9,req,name=pages_lazy,json=pagesLazy" json:"pages_lazy,omitempty"`
|
||||
PagePipes *uint64 `protobuf:"varint,10,opt,name=page_pipes,json=pagePipes" json:"page_pipes,omitempty"`
|
||||
PagePipeBufs *uint64 `protobuf:"varint,11,opt,name=page_pipe_bufs,json=pagePipeBufs" json:"page_pipe_bufs,omitempty"`
|
||||
ShpagesScanned *uint64 `protobuf:"varint,12,opt,name=shpages_scanned,json=shpagesScanned" json:"shpages_scanned,omitempty"`
|
||||
ShpagesSkippedParent *uint64 `protobuf:"varint,13,opt,name=shpages_skipped_parent,json=shpagesSkippedParent" json:"shpages_skipped_parent,omitempty"`
|
||||
ShpagesWritten *uint64 `protobuf:"varint,14,opt,name=shpages_written,json=shpagesWritten" json:"shpages_written,omitempty"`
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) Reset() {
|
||||
*x = DumpStatsEntry{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_stats_stats_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*DumpStatsEntry) ProtoMessage() {}
|
||||
|
||||
func (x *DumpStatsEntry) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_stats_stats_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use DumpStatsEntry.ProtoReflect.Descriptor instead.
|
||||
func (*DumpStatsEntry) Descriptor() ([]byte, []int) {
|
||||
return file_stats_stats_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetFreezingTime() uint32 {
|
||||
if x != nil && x.FreezingTime != nil {
|
||||
return *x.FreezingTime
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetFrozenTime() uint32 {
|
||||
if x != nil && x.FrozenTime != nil {
|
||||
return *x.FrozenTime
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetMemdumpTime() uint32 {
|
||||
if x != nil && x.MemdumpTime != nil {
|
||||
return *x.MemdumpTime
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetMemwriteTime() uint32 {
|
||||
if x != nil && x.MemwriteTime != nil {
|
||||
return *x.MemwriteTime
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetPagesScanned() uint64 {
|
||||
if x != nil && x.PagesScanned != nil {
|
||||
return *x.PagesScanned
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetPagesSkippedParent() uint64 {
|
||||
if x != nil && x.PagesSkippedParent != nil {
|
||||
return *x.PagesSkippedParent
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetPagesWritten() uint64 {
|
||||
if x != nil && x.PagesWritten != nil {
|
||||
return *x.PagesWritten
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetIrmapResolve() uint32 {
|
||||
if x != nil && x.IrmapResolve != nil {
|
||||
return *x.IrmapResolve
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetPagesLazy() uint64 {
|
||||
if x != nil && x.PagesLazy != nil {
|
||||
return *x.PagesLazy
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetPagePipes() uint64 {
|
||||
if x != nil && x.PagePipes != nil {
|
||||
return *x.PagePipes
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetPagePipeBufs() uint64 {
|
||||
if x != nil && x.PagePipeBufs != nil {
|
||||
return *x.PagePipeBufs
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetShpagesScanned() uint64 {
|
||||
if x != nil && x.ShpagesScanned != nil {
|
||||
return *x.ShpagesScanned
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetShpagesSkippedParent() uint64 {
|
||||
if x != nil && x.ShpagesSkippedParent != nil {
|
||||
return *x.ShpagesSkippedParent
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *DumpStatsEntry) GetShpagesWritten() uint64 {
|
||||
if x != nil && x.ShpagesWritten != nil {
|
||||
return *x.ShpagesWritten
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type RestoreStatsEntry struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
PagesCompared *uint64 `protobuf:"varint,1,req,name=pages_compared,json=pagesCompared" json:"pages_compared,omitempty"`
|
||||
PagesSkippedCow *uint64 `protobuf:"varint,2,req,name=pages_skipped_cow,json=pagesSkippedCow" json:"pages_skipped_cow,omitempty"`
|
||||
ForkingTime *uint32 `protobuf:"varint,3,req,name=forking_time,json=forkingTime" json:"forking_time,omitempty"`
|
||||
RestoreTime *uint32 `protobuf:"varint,4,req,name=restore_time,json=restoreTime" json:"restore_time,omitempty"`
|
||||
PagesRestored *uint64 `protobuf:"varint,5,opt,name=pages_restored,json=pagesRestored" json:"pages_restored,omitempty"`
|
||||
}
|
||||
|
||||
func (x *RestoreStatsEntry) Reset() {
|
||||
*x = RestoreStatsEntry{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_stats_stats_proto_msgTypes[1]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *RestoreStatsEntry) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*RestoreStatsEntry) ProtoMessage() {}
|
||||
|
||||
func (x *RestoreStatsEntry) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_stats_stats_proto_msgTypes[1]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use RestoreStatsEntry.ProtoReflect.Descriptor instead.
|
||||
func (*RestoreStatsEntry) Descriptor() ([]byte, []int) {
|
||||
return file_stats_stats_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
func (x *RestoreStatsEntry) GetPagesCompared() uint64 {
|
||||
if x != nil && x.PagesCompared != nil {
|
||||
return *x.PagesCompared
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *RestoreStatsEntry) GetPagesSkippedCow() uint64 {
|
||||
if x != nil && x.PagesSkippedCow != nil {
|
||||
return *x.PagesSkippedCow
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *RestoreStatsEntry) GetForkingTime() uint32 {
|
||||
if x != nil && x.ForkingTime != nil {
|
||||
return *x.ForkingTime
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *RestoreStatsEntry) GetRestoreTime() uint32 {
|
||||
if x != nil && x.RestoreTime != nil {
|
||||
return *x.RestoreTime
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *RestoreStatsEntry) GetPagesRestored() uint64 {
|
||||
if x != nil && x.PagesRestored != nil {
|
||||
return *x.PagesRestored
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type StatsEntry struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Dump *DumpStatsEntry `protobuf:"bytes,1,opt,name=dump" json:"dump,omitempty"`
|
||||
Restore *RestoreStatsEntry `protobuf:"bytes,2,opt,name=restore" json:"restore,omitempty"`
|
||||
}
|
||||
|
||||
func (x *StatsEntry) Reset() {
|
||||
*x = StatsEntry{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_stats_stats_proto_msgTypes[2]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *StatsEntry) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*StatsEntry) ProtoMessage() {}
|
||||
|
||||
func (x *StatsEntry) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_stats_stats_proto_msgTypes[2]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use StatsEntry.ProtoReflect.Descriptor instead.
|
||||
func (*StatsEntry) Descriptor() ([]byte, []int) {
|
||||
return file_stats_stats_proto_rawDescGZIP(), []int{2}
|
||||
}
|
||||
|
||||
func (x *StatsEntry) GetDump() *DumpStatsEntry {
|
||||
if x != nil {
|
||||
return x.Dump
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *StatsEntry) GetRestore() *RestoreStatsEntry {
|
||||
if x != nil {
|
||||
return x.Restore
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var File_stats_stats_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_stats_stats_proto_rawDesc = []byte{
|
||||
0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x22, 0xad, 0x04, 0x0a, 0x10, 0x64, 0x75, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x61,
|
||||
0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x65,
|
||||
0x7a, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0d, 0x52,
|
||||
0x0c, 0x66, 0x72, 0x65, 0x65, 0x7a, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a,
|
||||
0x0b, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x02,
|
||||
0x28, 0x0d, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21,
|
||||
0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x64, 0x75, 0x6d, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
|
||||
0x20, 0x02, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x64, 0x75, 0x6d, 0x70, 0x54, 0x69, 0x6d,
|
||||
0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x6d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x69,
|
||||
0x6d, 0x65, 0x18, 0x04, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x77, 0x72, 0x69,
|
||||
0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f,
|
||||
0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0c, 0x70,
|
||||
0x61, 0x67, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x70,
|
||||
0x61, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x72,
|
||||
0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x02, 0x28, 0x04, 0x52, 0x12, 0x70, 0x61, 0x67, 0x65, 0x73,
|
||||
0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a,
|
||||
0x0d, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x18, 0x07,
|
||||
0x20, 0x02, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x74,
|
||||
0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x72, 0x6d, 0x61, 0x70, 0x5f, 0x72, 0x65, 0x73, 0x6f,
|
||||
0x6c, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x69, 0x72, 0x6d, 0x61, 0x70,
|
||||
0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x73,
|
||||
0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x09, 0x20, 0x02, 0x28, 0x04, 0x52, 0x09, 0x70, 0x61, 0x67,
|
||||
0x65, 0x73, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x70,
|
||||
0x69, 0x70, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65,
|
||||
0x50, 0x69, 0x70, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x69,
|
||||
0x70, 0x65, 0x5f, 0x62, 0x75, 0x66, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70,
|
||||
0x61, 0x67, 0x65, 0x50, 0x69, 0x70, 0x65, 0x42, 0x75, 0x66, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73,
|
||||
0x68, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x0c,
|
||||
0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x68, 0x70, 0x61, 0x67, 0x65, 0x73, 0x53, 0x63, 0x61,
|
||||
0x6e, 0x6e, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x68, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f,
|
||||
0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x0d,
|
||||
0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x73, 0x68, 0x70, 0x61, 0x67, 0x65, 0x73, 0x53, 0x6b, 0x69,
|
||||
0x70, 0x70, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x68,
|
||||
0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x18, 0x0e, 0x20,
|
||||
0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x68, 0x70, 0x61, 0x67, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74,
|
||||
0x74, 0x65, 0x6e, 0x22, 0xd5, 0x01, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f,
|
||||
0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x70,
|
||||
0x61, 0x67, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20,
|
||||
0x02, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72,
|
||||
0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70,
|
||||
0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0f, 0x70,
|
||||
0x61, 0x67, 0x65, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x77, 0x12, 0x21,
|
||||
0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
|
||||
0x20, 0x02, 0x28, 0x0d, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d,
|
||||
0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d,
|
||||
0x65, 0x18, 0x04, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65,
|
||||
0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x72, 0x65,
|
||||
0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x61,
|
||||
0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x22, 0x64, 0x0a, 0x0b, 0x73,
|
||||
0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x75,
|
||||
0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x64, 0x75, 0x6d, 0x70, 0x5f,
|
||||
0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x75, 0x6d,
|
||||
0x70, 0x12, 0x2e, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01,
|
||||
0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61,
|
||||
0x74, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72,
|
||||
0x65,
|
||||
}
|
||||
|
||||
var (
|
||||
file_stats_stats_proto_rawDescOnce sync.Once
|
||||
file_stats_stats_proto_rawDescData = file_stats_stats_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_stats_stats_proto_rawDescGZIP() []byte {
|
||||
file_stats_stats_proto_rawDescOnce.Do(func() {
|
||||
file_stats_stats_proto_rawDescData = protoimpl.X.CompressGZIP(file_stats_stats_proto_rawDescData)
|
||||
})
|
||||
return file_stats_stats_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_stats_stats_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
|
||||
var file_stats_stats_proto_goTypes = []interface{}{
|
||||
(*DumpStatsEntry)(nil), // 0: dump_stats_entry
|
||||
(*RestoreStatsEntry)(nil), // 1: restore_stats_entry
|
||||
(*StatsEntry)(nil), // 2: stats_entry
|
||||
}
|
||||
var file_stats_stats_proto_depIdxs = []int32{
|
||||
0, // 0: stats_entry.dump:type_name -> dump_stats_entry
|
||||
1, // 1: stats_entry.restore:type_name -> restore_stats_entry
|
||||
2, // [2:2] is the sub-list for method output_type
|
||||
2, // [2:2] is the sub-list for method input_type
|
||||
2, // [2:2] is the sub-list for extension type_name
|
||||
2, // [2:2] is the sub-list for extension extendee
|
||||
0, // [0:2] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_stats_stats_proto_init() }
|
||||
func file_stats_stats_proto_init() {
|
||||
if File_stats_stats_proto != nil {
|
||||
return
|
||||
}
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_stats_stats_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*DumpStatsEntry); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_stats_stats_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*RestoreStatsEntry); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_stats_stats_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*StatsEntry); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_stats_stats_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 3,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
GoTypes: file_stats_stats_proto_goTypes,
|
||||
DependencyIndexes: file_stats_stats_proto_depIdxs,
|
||||
MessageInfos: file_stats_stats_proto_msgTypes,
|
||||
}.Build()
|
||||
File_stats_stats_proto = out.File
|
||||
file_stats_stats_proto_rawDesc = nil
|
||||
file_stats_stats_proto_goTypes = nil
|
||||
file_stats_stats_proto_depIdxs = nil
|
||||
}
|
40
vendor/github.com/checkpoint-restore/go-criu/v5/stats/stats.proto
generated
vendored
Normal file
40
vendor/github.com/checkpoint-restore/go-criu/v5/stats/stats.proto
generated
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
syntax = "proto2";
|
||||
|
||||
// This one contains statistics about dump/restore process
|
||||
message dump_stats_entry {
|
||||
required uint32 freezing_time = 1;
|
||||
required uint32 frozen_time = 2;
|
||||
required uint32 memdump_time = 3;
|
||||
required uint32 memwrite_time = 4;
|
||||
|
||||
required uint64 pages_scanned = 5;
|
||||
required uint64 pages_skipped_parent = 6;
|
||||
required uint64 pages_written = 7;
|
||||
|
||||
optional uint32 irmap_resolve = 8;
|
||||
|
||||
required uint64 pages_lazy = 9;
|
||||
optional uint64 page_pipes = 10;
|
||||
optional uint64 page_pipe_bufs = 11;
|
||||
|
||||
optional uint64 shpages_scanned = 12;
|
||||
optional uint64 shpages_skipped_parent = 13;
|
||||
optional uint64 shpages_written = 14;
|
||||
}
|
||||
|
||||
message restore_stats_entry {
|
||||
required uint64 pages_compared = 1;
|
||||
required uint64 pages_skipped_cow = 2;
|
||||
|
||||
required uint32 forking_time = 3;
|
||||
required uint32 restore_time = 4;
|
||||
|
||||
optional uint64 pages_restored = 5;
|
||||
}
|
||||
|
||||
message stats_entry {
|
||||
optional dump_stats_entry dump = 1;
|
||||
optional restore_stats_entry restore = 2;
|
||||
}
|
6
vendor/github.com/checkpoint-restore/go-criu/v5/stats/types.go
generated
vendored
Normal file
6
vendor/github.com/checkpoint-restore/go-criu/v5/stats/types.go
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
package stats
|
||||
|
||||
const (
|
||||
StatsDump = "stats-dump"
|
||||
StatsRestore = "stats-restore"
|
||||
)
|
54
vendor/github.com/checkpoint-restore/go-criu/v5/stats/utils.go
generated
vendored
Normal file
54
vendor/github.com/checkpoint-restore/go-criu/v5/stats/utils.go
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
package stats
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"errors"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/checkpoint-restore/go-criu/v5/magic"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
func readStatisticsFile(imgDir *os.File, fileName string) (*StatsEntry, error) {
|
||||
buf, err := ioutil.ReadFile(filepath.Join(imgDir.Name(), fileName))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if binary.LittleEndian.Uint32(buf[magic.PrimaryMagicOffset:magic.SecondaryMagicOffset]) != magic.ImgServiceMagic {
|
||||
return nil, errors.New("Primary magic not found")
|
||||
}
|
||||
|
||||
if binary.LittleEndian.Uint32(buf[magic.SecondaryMagicOffset:magic.SizeOffset]) != magic.StatsMagic {
|
||||
return nil, errors.New("Secondary magic not found")
|
||||
}
|
||||
|
||||
payloadSize := binary.LittleEndian.Uint32(buf[magic.SizeOffset:magic.PayloadOffset])
|
||||
|
||||
st := &StatsEntry{}
|
||||
if err := proto.Unmarshal(buf[magic.PayloadOffset:magic.PayloadOffset+payloadSize], st); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return st, nil
|
||||
}
|
||||
|
||||
func CriuGetDumpStats(imgDir *os.File) (*DumpStatsEntry, error) {
|
||||
st, err := readStatisticsFile(imgDir, StatsDump)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return st.GetDump(), nil
|
||||
}
|
||||
|
||||
func CriuGetRestoreStats(imgDir *os.File) (*RestoreStatsEntry, error) {
|
||||
st, err := readStatisticsFile(imgDir, StatsRestore)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return st.GetRestore(), nil
|
||||
}
|
3
vendor/google.golang.org/protobuf/encoding/prototext/decode.go
generated
vendored
3
vendor/google.golang.org/protobuf/encoding/prototext/decode.go
generated
vendored
@ -744,9 +744,6 @@ func (d decoder) skipValue() error {
|
||||
// Skip items. This will not validate whether skipped values are
|
||||
// of the same type or not, same behavior as C++
|
||||
// TextFormat::Parser::AllowUnknownField(true) version 3.8.0.
|
||||
if err := d.skipValue(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
5
vendor/google.golang.org/protobuf/internal/encoding/text/encode.go
generated
vendored
5
vendor/google.golang.org/protobuf/internal/encoding/text/encode.go
generated
vendored
@ -263,3 +263,8 @@ func (e *Encoder) Snapshot() encoderState {
|
||||
func (e *Encoder) Reset(es encoderState) {
|
||||
e.encoderState = es
|
||||
}
|
||||
|
||||
// AppendString appends the escaped form of the input string to b.
|
||||
func AppendString(b []byte, s string) []byte {
|
||||
return appendString(b, s, false)
|
||||
}
|
||||
|
7
vendor/google.golang.org/protobuf/internal/impl/legacy_message.go
generated
vendored
7
vendor/google.golang.org/protobuf/internal/impl/legacy_message.go
generated
vendored
@ -440,6 +440,13 @@ func legacyMerge(in piface.MergeInput) piface.MergeOutput {
|
||||
if !ok {
|
||||
return piface.MergeOutput{}
|
||||
}
|
||||
if !in.Source.IsValid() {
|
||||
// Legacy Marshal methods may not function on nil messages.
|
||||
// Check for a typed nil source only after we confirm that
|
||||
// legacy Marshal/Unmarshal methods are present, for
|
||||
// consistency.
|
||||
return piface.MergeOutput{Flags: piface.MergeComplete}
|
||||
}
|
||||
b, err := marshaler.Marshal()
|
||||
if err != nil {
|
||||
return piface.MergeOutput{}
|
||||
|
4
vendor/google.golang.org/protobuf/internal/version/version.go
generated
vendored
4
vendor/google.golang.org/protobuf/internal/version/version.go
generated
vendored
@ -52,8 +52,8 @@ import (
|
||||
// 10. Send out the CL for review and submit it.
|
||||
const (
|
||||
Major = 1
|
||||
Minor = 26
|
||||
Patch = 0
|
||||
Minor = 27
|
||||
Patch = 1
|
||||
PreRelease = ""
|
||||
)
|
||||
|
||||
|
39
vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go
generated
vendored
39
vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go
generated
vendored
@ -94,7 +94,8 @@ type Files struct {
|
||||
// Note that enum values are in the top-level since that are in the same
|
||||
// scope as the parent enum.
|
||||
descsByName map[protoreflect.FullName]interface{}
|
||||
filesByPath map[string]protoreflect.FileDescriptor
|
||||
filesByPath map[string][]protoreflect.FileDescriptor
|
||||
numFiles int
|
||||
}
|
||||
|
||||
type packageDescriptor struct {
|
||||
@ -117,18 +118,17 @@ func (r *Files) RegisterFile(file protoreflect.FileDescriptor) error {
|
||||
r.descsByName = map[protoreflect.FullName]interface{}{
|
||||
"": &packageDescriptor{},
|
||||
}
|
||||
r.filesByPath = make(map[string]protoreflect.FileDescriptor)
|
||||
r.filesByPath = make(map[string][]protoreflect.FileDescriptor)
|
||||
}
|
||||
path := file.Path()
|
||||
if prev := r.filesByPath[path]; prev != nil {
|
||||
if prev := r.filesByPath[path]; len(prev) > 0 {
|
||||
r.checkGenProtoConflict(path)
|
||||
err := errors.New("file %q is already registered", file.Path())
|
||||
err = amendErrorWithCaller(err, prev, file)
|
||||
if r == GlobalFiles && ignoreConflict(file, err) {
|
||||
err = nil
|
||||
}
|
||||
err = amendErrorWithCaller(err, prev[0], file)
|
||||
if !(r == GlobalFiles && ignoreConflict(file, err)) {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
for name := file.Package(); name != ""; name = name.Parent() {
|
||||
switch prev := r.descsByName[name]; prev.(type) {
|
||||
@ -168,7 +168,8 @@ func (r *Files) RegisterFile(file protoreflect.FileDescriptor) error {
|
||||
rangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) {
|
||||
r.descsByName[d.FullName()] = d
|
||||
})
|
||||
r.filesByPath[path] = file
|
||||
r.filesByPath[path] = append(r.filesByPath[path], file)
|
||||
r.numFiles++
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -308,6 +309,7 @@ func (s *nameSuffix) Pop() (name protoreflect.Name) {
|
||||
// FindFileByPath looks up a file by the path.
|
||||
//
|
||||
// This returns (nil, NotFound) if not found.
|
||||
// This returns an error if multiple files have the same path.
|
||||
func (r *Files) FindFileByPath(path string) (protoreflect.FileDescriptor, error) {
|
||||
if r == nil {
|
||||
return nil, NotFound
|
||||
@ -316,13 +318,19 @@ func (r *Files) FindFileByPath(path string) (protoreflect.FileDescriptor, error)
|
||||
globalMutex.RLock()
|
||||
defer globalMutex.RUnlock()
|
||||
}
|
||||
if fd, ok := r.filesByPath[path]; ok {
|
||||
return fd, nil
|
||||
}
|
||||
fds := r.filesByPath[path]
|
||||
switch len(fds) {
|
||||
case 0:
|
||||
return nil, NotFound
|
||||
case 1:
|
||||
return fds[0], nil
|
||||
default:
|
||||
return nil, errors.New("multiple files named %q", path)
|
||||
}
|
||||
}
|
||||
|
||||
// NumFiles reports the number of registered files.
|
||||
// NumFiles reports the number of registered files,
|
||||
// including duplicate files with the same name.
|
||||
func (r *Files) NumFiles() int {
|
||||
if r == nil {
|
||||
return 0
|
||||
@ -331,10 +339,11 @@ func (r *Files) NumFiles() int {
|
||||
globalMutex.RLock()
|
||||
defer globalMutex.RUnlock()
|
||||
}
|
||||
return len(r.filesByPath)
|
||||
return r.numFiles
|
||||
}
|
||||
|
||||
// RangeFiles iterates over all registered files while f returns true.
|
||||
// If multiple files have the same name, RangeFiles iterates over all of them.
|
||||
// The iteration order is undefined.
|
||||
func (r *Files) RangeFiles(f func(protoreflect.FileDescriptor) bool) {
|
||||
if r == nil {
|
||||
@ -344,12 +353,14 @@ func (r *Files) RangeFiles(f func(protoreflect.FileDescriptor) bool) {
|
||||
globalMutex.RLock()
|
||||
defer globalMutex.RUnlock()
|
||||
}
|
||||
for _, file := range r.filesByPath {
|
||||
for _, files := range r.filesByPath {
|
||||
for _, file := range files {
|
||||
if !f(file) {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// NumFilesByPackage reports the number of registered files in a proto package.
|
||||
func (r *Files) NumFilesByPackage(name protoreflect.FullName) int {
|
||||
|
82
vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
generated
vendored
82
vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
generated
vendored
@ -43,7 +43,6 @@ package descriptorpb
|
||||
|
||||
import (
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoiface "google.golang.org/protobuf/runtime/protoiface"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
@ -829,15 +828,6 @@ func (*ExtensionRangeOptions) Descriptor() ([]byte, []int) {
|
||||
return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3}
|
||||
}
|
||||
|
||||
var extRange_ExtensionRangeOptions = []protoiface.ExtensionRangeV1{
|
||||
{Start: 1000, End: 536870911},
|
||||
}
|
||||
|
||||
// Deprecated: Use ExtensionRangeOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
|
||||
func (*ExtensionRangeOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
|
||||
return extRange_ExtensionRangeOptions
|
||||
}
|
||||
|
||||
func (x *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption {
|
||||
if x != nil {
|
||||
return x.UninterpretedOption
|
||||
@ -1520,15 +1510,6 @@ func (*FileOptions) Descriptor() ([]byte, []int) {
|
||||
return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10}
|
||||
}
|
||||
|
||||
var extRange_FileOptions = []protoiface.ExtensionRangeV1{
|
||||
{Start: 1000, End: 536870911},
|
||||
}
|
||||
|
||||
// Deprecated: Use FileOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
|
||||
func (*FileOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
|
||||
return extRange_FileOptions
|
||||
}
|
||||
|
||||
func (x *FileOptions) GetJavaPackage() string {
|
||||
if x != nil && x.JavaPackage != nil {
|
||||
return *x.JavaPackage
|
||||
@ -1776,15 +1757,6 @@ func (*MessageOptions) Descriptor() ([]byte, []int) {
|
||||
return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{11}
|
||||
}
|
||||
|
||||
var extRange_MessageOptions = []protoiface.ExtensionRangeV1{
|
||||
{Start: 1000, End: 536870911},
|
||||
}
|
||||
|
||||
// Deprecated: Use MessageOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
|
||||
func (*MessageOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
|
||||
return extRange_MessageOptions
|
||||
}
|
||||
|
||||
func (x *MessageOptions) GetMessageSetWireFormat() bool {
|
||||
if x != nil && x.MessageSetWireFormat != nil {
|
||||
return *x.MessageSetWireFormat
|
||||
@ -1930,15 +1902,6 @@ func (*FieldOptions) Descriptor() ([]byte, []int) {
|
||||
return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12}
|
||||
}
|
||||
|
||||
var extRange_FieldOptions = []protoiface.ExtensionRangeV1{
|
||||
{Start: 1000, End: 536870911},
|
||||
}
|
||||
|
||||
// Deprecated: Use FieldOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
|
||||
func (*FieldOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
|
||||
return extRange_FieldOptions
|
||||
}
|
||||
|
||||
func (x *FieldOptions) GetCtype() FieldOptions_CType {
|
||||
if x != nil && x.Ctype != nil {
|
||||
return *x.Ctype
|
||||
@ -2030,15 +1993,6 @@ func (*OneofOptions) Descriptor() ([]byte, []int) {
|
||||
return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{13}
|
||||
}
|
||||
|
||||
var extRange_OneofOptions = []protoiface.ExtensionRangeV1{
|
||||
{Start: 1000, End: 536870911},
|
||||
}
|
||||
|
||||
// Deprecated: Use OneofOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
|
||||
func (*OneofOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
|
||||
return extRange_OneofOptions
|
||||
}
|
||||
|
||||
func (x *OneofOptions) GetUninterpretedOption() []*UninterpretedOption {
|
||||
if x != nil {
|
||||
return x.UninterpretedOption
|
||||
@ -2101,15 +2055,6 @@ func (*EnumOptions) Descriptor() ([]byte, []int) {
|
||||
return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{14}
|
||||
}
|
||||
|
||||
var extRange_EnumOptions = []protoiface.ExtensionRangeV1{
|
||||
{Start: 1000, End: 536870911},
|
||||
}
|
||||
|
||||
// Deprecated: Use EnumOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
|
||||
func (*EnumOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
|
||||
return extRange_EnumOptions
|
||||
}
|
||||
|
||||
func (x *EnumOptions) GetAllowAlias() bool {
|
||||
if x != nil && x.AllowAlias != nil {
|
||||
return *x.AllowAlias
|
||||
@ -2183,15 +2128,6 @@ func (*EnumValueOptions) Descriptor() ([]byte, []int) {
|
||||
return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{15}
|
||||
}
|
||||
|
||||
var extRange_EnumValueOptions = []protoiface.ExtensionRangeV1{
|
||||
{Start: 1000, End: 536870911},
|
||||
}
|
||||
|
||||
// Deprecated: Use EnumValueOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
|
||||
func (*EnumValueOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
|
||||
return extRange_EnumValueOptions
|
||||
}
|
||||
|
||||
func (x *EnumValueOptions) GetDeprecated() bool {
|
||||
if x != nil && x.Deprecated != nil {
|
||||
return *x.Deprecated
|
||||
@ -2258,15 +2194,6 @@ func (*ServiceOptions) Descriptor() ([]byte, []int) {
|
||||
return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{16}
|
||||
}
|
||||
|
||||
var extRange_ServiceOptions = []protoiface.ExtensionRangeV1{
|
||||
{Start: 1000, End: 536870911},
|
||||
}
|
||||
|
||||
// Deprecated: Use ServiceOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
|
||||
func (*ServiceOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
|
||||
return extRange_ServiceOptions
|
||||
}
|
||||
|
||||
func (x *ServiceOptions) GetDeprecated() bool {
|
||||
if x != nil && x.Deprecated != nil {
|
||||
return *x.Deprecated
|
||||
@ -2335,15 +2262,6 @@ func (*MethodOptions) Descriptor() ([]byte, []int) {
|
||||
return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17}
|
||||
}
|
||||
|
||||
var extRange_MethodOptions = []protoiface.ExtensionRangeV1{
|
||||
{Start: 1000, End: 536870911},
|
||||
}
|
||||
|
||||
// Deprecated: Use MethodOptions.ProtoReflect.Descriptor.ExtensionRanges instead.
|
||||
func (*MethodOptions) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
|
||||
return extRange_MethodOptions
|
||||
}
|
||||
|
||||
func (x *MethodOptions) GetDeprecated() bool {
|
||||
if x != nil && x.Deprecated != nil {
|
||||
return *x.Deprecated
|
||||
|
6
vendor/modules.txt
vendored
6
vendor/modules.txt
vendored
@ -45,9 +45,11 @@ github.com/buger/goterm
|
||||
github.com/cespare/xxhash/v2
|
||||
# github.com/checkpoint-restore/checkpointctl v0.0.0-20210922093614-c31748bec9f2
|
||||
github.com/checkpoint-restore/checkpointctl/lib
|
||||
# github.com/checkpoint-restore/go-criu/v5 v5.1.0
|
||||
# github.com/checkpoint-restore/go-criu/v5 v5.2.0
|
||||
github.com/checkpoint-restore/go-criu/v5
|
||||
github.com/checkpoint-restore/go-criu/v5/magic
|
||||
github.com/checkpoint-restore/go-criu/v5/rpc
|
||||
github.com/checkpoint-restore/go-criu/v5/stats
|
||||
# github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e
|
||||
github.com/chzyer/readline
|
||||
# github.com/container-orchestrated-devices/container-device-interface v0.0.0-20210325223243-f99e8b6c10b9
|
||||
@ -754,7 +756,7 @@ google.golang.org/grpc/serviceconfig
|
||||
google.golang.org/grpc/stats
|
||||
google.golang.org/grpc/status
|
||||
google.golang.org/grpc/tap
|
||||
# google.golang.org/protobuf v1.26.0
|
||||
# google.golang.org/protobuf v1.27.1
|
||||
google.golang.org/protobuf/encoding/prototext
|
||||
google.golang.org/protobuf/encoding/protowire
|
||||
google.golang.org/protobuf/internal/descfmt
|
||||
|
Reference in New Issue
Block a user