adding img pull stats (#1541)

adding image pull time and pull retries with changes in docker cookie
adding extra proto fields in callfinished and runnerstatus to add the img stats
adding fields in pure runner and runner_client
This commit is contained in:
Vik Bharadwaj
2019-08-15 15:28:35 -07:00
parent 0bff197dcd
commit 0c59577a3a
13 changed files with 198 additions and 121 deletions

View File

@@ -888,9 +888,9 @@ func (a *agent) runHot(ctx context.Context, caller slotCaller, call *call, tok R
if needsPull {
waitStart := time.Now()
pullCtx, pullCancel := context.WithTimeout(ctx, a.cfg.HotPullTimeout)
err = cookie.PullImage(pullCtx)
pullResult := cookie.PullImage(pullCtx)
pullCancel()
if err != nil && pullCtx.Err() == context.DeadlineExceeded {
if err = pullResult.Err; err != nil && pullCtx.Err() == context.DeadlineExceeded {
err = models.ErrDockerPullTimeout
}
if tryQueueErr(err, errQueue) == nil {
@@ -901,6 +901,8 @@ func (a *agent) runHot(ctx context.Context, caller slotCaller, call *call, tok R
}
}
atomic.StoreInt64(&call.imagePullWaitTime, int64(time.Since(waitStart)/time.Millisecond))
atomic.StoreInt64(&call.imagePullTime, int64(pullResult.Duration/time.Millisecond))
atomic.StoreInt32(&call.imagePullRetries, pullResult.Retries)
}
if tryQueueErr(err, errQueue) != nil {
return

View File

@@ -306,6 +306,12 @@ type call struct {
// Init wait start timestamp for goroutine in runHot
initStartTime int64
// amount of time attributed to image pull
imagePullTime int64
// amount of time attributed to image pull
imagePullRetries int32
// LB & Pure Runner Extra Config
extensions map[string]string
}

View File

@@ -7,6 +7,7 @@ import (
"net/http"
"path"
"strings"
"time"
"github.com/fnproject/fn/api/agent/drivers"
"github.com/fnproject/fn/api/common"
@@ -450,15 +451,15 @@ func (c *cookie) ValidateImage(ctx context.Context) (bool, error) {
}
// implements Cookie
func (c *cookie) PullImage(ctx context.Context) error {
func (c *cookie) PullImage(ctx context.Context) drivers.PullResult {
ctx, log := common.LoggerWithFields(ctx, logrus.Fields{"stack": "PullImage"})
if c.image != nil {
return nil
return drivers.PullResult{Err: nil, Retries: 0, Duration: 0 * time.Second}
}
cfg, err := c.authImage(ctx)
if err != nil {
return err
return drivers.PullResult{Err: err, Retries: 0, Duration: 0 * time.Second}
}
repo := path.Join(c.imgReg, c.imgRepo)
@@ -467,8 +468,8 @@ func (c *cookie) PullImage(ctx context.Context) error {
log.WithFields(logrus.Fields{"call_id": c.task.Id(), "image": c.task.Image()}).Debug("docker pull")
ctx = common.WithLogger(ctx, log)
errC := c.drv.imgPuller.PullImage(ctx, cfg, c.task.Image(), repo, c.imgTag)
return <-errC
pullRes := c.drv.imgPuller.PullImage(ctx, cfg, c.task.Image(), repo, c.imgTag)
return <-pullRes
}
// implements Cookie

View File

@@ -79,7 +79,8 @@ func commonCookiePull(ctx context.Context, cookie drivers.Cookie) error {
return err
}
if shouldPull {
err = cookie.PullImage(ctx)
pullRes := cookie.PullImage(ctx)
err = pullRes.Err
if err != nil {
return err
}

View File

@@ -23,7 +23,7 @@ import (
// any new requests are added as listeners to the ongoing docker-pull requests.
type ImagePuller interface {
PullImage(ctx context.Context, cfg *docker.AuthConfiguration, img, repo, tag string) chan error
PullImage(ctx context.Context, cfg *docker.AuthConfiguration, img, repo, tag string) chan drivers.PullResult
SetRetryPolicy(policy common.BackOffConfig, checker drivers.RetryErrorChecker) error
}
@@ -37,7 +37,7 @@ type transfer struct {
repo string
tag string
listeners []chan error
listeners []chan drivers.PullResult
}
type imagePuller struct {
@@ -68,7 +68,7 @@ func (i *imagePuller) SetRetryPolicy(policy common.BackOffConfig, checker driver
}
// newTransfer initiates a new docker-pull if there's no active docker-pull present for the same image.
func (i *imagePuller) newTransfer(ctx context.Context, cfg *docker.AuthConfiguration, img, repo, tag string) chan error {
func (i *imagePuller) newTransfer(ctx context.Context, cfg *docker.AuthConfiguration, img, repo, tag string) chan drivers.PullResult {
key := fmt.Sprintf("%s %s %+v", repo, tag, cfg)
@@ -83,13 +83,13 @@ func (i *imagePuller) newTransfer(ctx context.Context, cfg *docker.AuthConfigura
img: img,
repo: repo,
tag: tag,
listeners: make([]chan error, 0, 1),
listeners: make([]chan drivers.PullResult, 0, 1),
}
i.transfers[key] = trx
}
errC := make(chan error, 1)
trx.listeners = append(trx.listeners, errC)
pullRes := make(chan drivers.PullResult, 1)
trx.listeners = append(trx.listeners, pullRes)
i.lock.Unlock()
@@ -98,41 +98,42 @@ func (i *imagePuller) newTransfer(ctx context.Context, cfg *docker.AuthConfigura
go i.startTransfer(trx)
}
return errC
return pullRes
}
func (i *imagePuller) pullWithRetry(trx *transfer) error {
func (i *imagePuller) pullWithRetry(trx *transfer) (error, int32, time.Duration) {
backoff := common.NewBackOff(i.backOffCfg)
timer := common.NewTimer(time.Duration(i.backOffCfg.MinDelay) * time.Millisecond)
defer timer.Stop()
var retries int32
startTime := time.Now()
for {
err := i.docker.PullImage(docker.PullImageOptions{Repository: trx.repo, Tag: trx.tag, Context: trx.ctx}, *trx.cfg)
ok, reason := i.isRetriable(err)
if !ok {
return err
return err, retries, time.Since(startTime)
}
delay, ok := backoff.NextBackOff()
if !ok {
return err
return err, retries, time.Since(startTime)
}
timer.Reset(delay)
select {
case <-timer.C:
retries += 1
recordRetry(trx.ctx, "docker_pull_image", reason)
case <-trx.ctx.Done():
return trx.ctx.Err()
return trx.ctx.Err(), retries, time.Since(startTime)
}
}
}
func (i *imagePuller) startTransfer(trx *transfer) {
var ferr error
err := i.pullWithRetry(trx)
err, retries, duration := i.pullWithRetry(trx)
if err != nil {
common.Logger(trx.ctx).WithError(err).Info("Failed to pull image")
@@ -157,7 +158,7 @@ func (i *imagePuller) startTransfer(trx *transfer) {
// notify any listeners
for _, ch := range trx.listeners {
if ferr != nil {
ch <- ferr
ch <- drivers.PullResult{Err: ferr, Retries: retries, Duration: duration}
}
close(ch)
}
@@ -166,7 +167,7 @@ func (i *imagePuller) startTransfer(trx *transfer) {
delete(i.transfers, trx.key)
}
func (i *imagePuller) PullImage(ctx context.Context, cfg *docker.AuthConfiguration, img, repo, tag string) chan error {
func (i *imagePuller) PullImage(ctx context.Context, cfg *docker.AuthConfiguration, img, repo, tag string) chan drivers.PullResult {
return i.newTransfer(ctx, cfg, img, repo, tag)
}

View File

@@ -51,7 +51,8 @@ func TestImagePullConcurrent1(t *testing.T) {
for i := 0; i < 10; i++ {
go func() {
defer wg.Done()
err := <-puller.PullImage(ctx, &cfg, img, repo, tag1)
pullRes := <-puller.PullImage(ctx, &cfg, img, repo, tag1)
err := pullRes.Err
if err != nil {
t.Fatalf("err received %v", err)
}
@@ -60,7 +61,8 @@ func TestImagePullConcurrent1(t *testing.T) {
for i := 0; i < 10; i++ {
go func() {
defer wg.Done()
err := <-puller.PullImage(ctx, &cfg, img, repo, tag2)
pullRes := <-puller.PullImage(ctx, &cfg, img, repo, tag2)
err := pullRes.Err
if err != nil {
t.Fatalf("err received %v", err)
}
@@ -97,7 +99,8 @@ func TestImagePullConcurrent2(t *testing.T) {
for i := 0; i < 10; i++ {
go func() {
defer wg.Done()
err := <-puller.PullImage(ctx, &cfg, img, repo, tag)
pullRes := <-puller.PullImage(ctx, &cfg, img, repo, tag)
err := pullRes.Err
if err == nil || strings.Index(err.Error(), "yogurt") == -1 {
t.Fatalf("Unknown err received %v", err)
}
@@ -149,7 +152,8 @@ func TestImagePullConcurrent3(t *testing.T) {
for i := 0; i < 10; i++ {
go func() {
defer wg.Done()
err := <-puller.PullImage(ctx, &cfg, img, repo, tag)
pullRes := <-puller.PullImage(ctx, &cfg, img, repo, tag)
err := pullRes.Err
if err == nil {
t.Fatalf("no err received")
}

View File

@@ -6,6 +6,7 @@ import (
"context"
"io"
"strings"
"time"
"github.com/fnproject/fn/api/agent/drivers/stats"
"github.com/fnproject/fn/api/common"
@@ -44,7 +45,7 @@ type Cookie interface {
// Pull the image. An image pull requires validation/inspection
// again.
PullImage(ctx context.Context) error
PullImage(ctx context.Context) PullResult
// Create container which can be Run() later
CreateContainer(ctx context.Context) error
@@ -100,6 +101,13 @@ type LoggerTag struct {
Value string
}
// Configuration for Image Pull details
type PullResult struct {
Err error
Retries int32
Duration time.Duration
}
// Logger Configuration for container
type LoggerConfig struct {
// Log Sink URL

View File

@@ -52,8 +52,8 @@ func (c *cookie) ValidateImage(context.Context) (bool, error) {
return false, nil
}
func (c *cookie) PullImage(context.Context) error {
return nil
func (c *cookie) PullImage(context.Context) drivers.PullResult {
return drivers.PullResult{Err: nil, Retries: 0, Duration: 0 * time.Second}
}
func (c *cookie) CreateContainer(context.Context) error {

View File

@@ -335,6 +335,8 @@ type CallFinished struct {
CtrPrepDuration int64 `protobuf:"varint,13,opt,name=ctrPrepDuration,proto3" json:"ctrPrepDuration,omitempty"`
CtrCreateDuration int64 `protobuf:"varint,14,opt,name=ctrCreateDuration,proto3" json:"ctrCreateDuration,omitempty"`
InitStartTime int64 `protobuf:"varint,15,opt,name=initStartTime,proto3" json:"initStartTime,omitempty"`
ImagePullDuration int64 `protobuf:"varint,16,opt,name=imagePullDuration,proto3" json:"imagePullDuration,omitempty"`
ImagePullRetries int32 `protobuf:"varint,17,opt,name=imagePullRetries,proto3" json:"imagePullRetries,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -470,6 +472,20 @@ func (m *CallFinished) GetInitStartTime() int64 {
return 0
}
func (m *CallFinished) GetImagePullDuration() int64 {
if m != nil {
return m.ImagePullDuration
}
return 0
}
func (m *CallFinished) GetImagePullRetries() int32 {
if m != nil {
return m.ImagePullRetries
}
return 0
}
type ClientMsg struct {
// Types that are valid to be assigned to Body:
// *ClientMsg_Try
@@ -667,6 +683,8 @@ type RunnerStatus struct {
CtrPrepDuration int64 `protobuf:"varint,20,opt,name=ctrPrepDuration,proto3" json:"ctrPrepDuration,omitempty"`
CtrCreateDuration int64 `protobuf:"varint,21,opt,name=ctrCreateDuration,proto3" json:"ctrCreateDuration,omitempty"`
InitStartTime int64 `protobuf:"varint,22,opt,name=initStartTime,proto3" json:"initStartTime,omitempty"`
ImagePullDuration int64 `protobuf:"varint,23,opt,name=imagePullDuration,proto3" json:"imagePullDuration,omitempty"`
ImagePullRetries int32 `protobuf:"varint,24,opt,name=imagePullRetries,proto3" json:"imagePullRetries,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -844,6 +862,20 @@ func (m *RunnerStatus) GetInitStartTime() int64 {
return 0
}
func (m *RunnerStatus) GetImagePullDuration() int64 {
if m != nil {
return m.ImagePullDuration
}
return 0
}
func (m *RunnerStatus) GetImagePullRetries() int32 {
if m != nil {
return m.ImagePullRetries
}
return 0
}
type ConfigMsg struct {
Config map[string]string `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -1352,89 +1384,90 @@ func init() {
func init() { proto.RegisterFile("runner.proto", fileDescriptor_48eceea7e2abc593) }
var fileDescriptor_48eceea7e2abc593 = []byte{
// 1297 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x5b, 0x6f, 0x1b, 0x45,
0x14, 0x8e, 0x6f, 0x6b, 0xfb, 0xf8, 0x9a, 0xa1, 0x8d, 0x96, 0xa5, 0xa2, 0xc6, 0x94, 0xca, 0x82,
0x74, 0x4b, 0x43, 0x2b, 0x95, 0x4a, 0x80, 0x8a, 0x93, 0xca, 0x45, 0x2d, 0xad, 0xc6, 0x29, 0x3c,
0x46, 0x93, 0xdd, 0x89, 0x3d, 0x78, 0xbd, 0x6b, 0x66, 0x66, 0x43, 0x23, 0xf1, 0xce, 0x6f, 0xe0,
0x05, 0x89, 0x47, 0xde, 0xf9, 0x11, 0x3c, 0xf1, 0xc8, 0x4f, 0xe1, 0x19, 0xcd, 0xc5, 0xeb, 0x5b,
0x9a, 0x26, 0x12, 0x6f, 0x73, 0xbe, 0xef, 0xcc, 0x9c, 0x33, 0xc7, 0xdf, 0x39, 0x3b, 0x86, 0x3a,
0x4f, 0xe3, 0x98, 0x72, 0x7f, 0xc6, 0x13, 0x99, 0x78, 0xef, 0x8d, 0x92, 0x64, 0x14, 0xd1, 0xbb,
0xda, 0x3a, 0x4e, 0x4f, 0xee, 0xd2, 0xe9, 0x4c, 0x9e, 0x19, 0xb2, 0xfb, 0x77, 0x0e, 0xca, 0x87,
0xfc, 0xac, 0x4f, 0xa2, 0x08, 0xf5, 0xa0, 0x3d, 0x4d, 0x42, 0x1a, 0x89, 0xa3, 0x80, 0x44, 0xd1,
0xd1, 0x0f, 0x22, 0x89, 0xdd, 0x5c, 0x27, 0xd7, 0xab, 0xe2, 0xa6, 0xc1, 0x95, 0xd7, 0x37, 0x22,
0x89, 0x51, 0x07, 0xea, 0x22, 0x4a, 0xe4, 0xd1, 0x98, 0x88, 0xf1, 0x11, 0x0b, 0xdd, 0xbc, 0xf6,
0x02, 0x85, 0x0d, 0x88, 0x18, 0x3f, 0x0d, 0xd1, 0x43, 0x00, 0xfa, 0x5a, 0xd2, 0x58, 0xb0, 0x24,
0x16, 0x6e, 0xa1, 0x53, 0xe8, 0xd5, 0xf6, 0x5c, 0xdf, 0x46, 0xf2, 0x0f, 0x32, 0xea, 0x20, 0x96,
0xfc, 0x0c, 0x2f, 0xf9, 0x7a, 0x5f, 0x40, 0x6b, 0x8d, 0x46, 0x6d, 0x28, 0x4c, 0xe8, 0x99, 0xcd,
0x45, 0x2d, 0xd1, 0x35, 0x28, 0x9d, 0x92, 0x28, 0xa5, 0x36, 0xb2, 0x31, 0x1e, 0xe5, 0x1f, 0xe6,
0xba, 0xf7, 0xa0, 0xba, 0x4f, 0x24, 0x79, 0xc2, 0xc9, 0x94, 0x22, 0x04, 0xc5, 0x90, 0x48, 0xa2,
0x77, 0xd6, 0xb1, 0x5e, 0xab, 0xc3, 0x68, 0x72, 0xa2, 0x37, 0x56, 0xb0, 0x5a, 0x76, 0xef, 0x03,
0x0c, 0xa4, 0x9c, 0x0d, 0x28, 0x09, 0x29, 0xbf, 0x6c, 0xb0, 0xee, 0x77, 0x50, 0x57, 0xbb, 0x30,
0x15, 0xb3, 0xe7, 0x54, 0x12, 0x74, 0x13, 0x6a, 0x42, 0x12, 0x99, 0x8a, 0xa3, 0x20, 0x09, 0xa9,
0xde, 0x5f, 0xc2, 0x60, 0xa0, 0x7e, 0x12, 0x52, 0xf4, 0x11, 0x94, 0xc7, 0x3a, 0x84, 0x70, 0xf3,
0xba, 0x1e, 0x35, 0x7f, 0x11, 0x16, 0xcf, 0xb9, 0xee, 0x97, 0xd0, 0x52, 0x35, 0xc2, 0x54, 0xa4,
0x91, 0x1c, 0x4a, 0xc2, 0x25, 0xfa, 0x10, 0x8a, 0x63, 0x29, 0x67, 0x6e, 0xd8, 0xc9, 0xf5, 0x6a,
0x7b, 0x0d, 0x7f, 0x39, 0xee, 0x60, 0x0b, 0x6b, 0xf2, 0x6b, 0x07, 0x8a, 0x53, 0x2a, 0x49, 0xf7,
0xb7, 0x22, 0xd4, 0xd5, 0x01, 0x4f, 0x58, 0xcc, 0xc4, 0x98, 0x86, 0xc8, 0x85, 0xb2, 0x48, 0x83,
0x80, 0x0a, 0xa1, 0x93, 0xaa, 0xe0, 0xb9, 0xa9, 0x98, 0x90, 0x4a, 0xc2, 0x22, 0x61, 0xaf, 0x36,
0x37, 0xd1, 0x0d, 0xa8, 0x52, 0xce, 0x13, 0xae, 0x12, 0x77, 0x0b, 0xfa, 0x2a, 0x0b, 0x00, 0x79,
0x50, 0xd1, 0xc6, 0x50, 0x72, 0xb7, 0xa8, 0x37, 0x66, 0xb6, 0xda, 0x19, 0x70, 0x4a, 0x24, 0x0d,
0x1f, 0x4b, 0xb7, 0xa4, 0xc9, 0x05, 0xa0, 0x58, 0xa1, 0xae, 0xa4, 0x59, 0xc7, 0xb0, 0x19, 0x80,
0x3a, 0x50, 0x0b, 0x92, 0xe9, 0x2c, 0xa2, 0x86, 0x2f, 0x6b, 0x7e, 0x19, 0x42, 0xbb, 0xb0, 0x2d,
0x82, 0x31, 0x0d, 0xd3, 0x88, 0xf2, 0xfd, 0x94, 0x13, 0xc9, 0x92, 0xd8, 0xad, 0x74, 0x72, 0xbd,
0x02, 0xde, 0x24, 0x94, 0x37, 0x7d, 0x4d, 0x83, 0x54, 0x19, 0x99, 0x77, 0xd5, 0x78, 0x6f, 0x10,
0xd9, 0x9d, 0x5f, 0x09, 0xca, 0x5d, 0xd0, 0x95, 0x5a, 0x00, 0x4a, 0x04, 0x6c, 0x4a, 0x46, 0xd4,
0xad, 0x19, 0x11, 0x68, 0x03, 0xdd, 0x87, 0xeb, 0x7a, 0xf1, 0x32, 0x8d, 0xa2, 0xef, 0x09, 0x93,
0x59, 0x94, 0xba, 0x8e, 0x72, 0x3e, 0x89, 0x7a, 0xd0, 0x0a, 0x24, 0x7f, 0xc9, 0xe9, 0x2c, 0xf3,
0x6f, 0x68, 0xff, 0x75, 0x58, 0xdd, 0x20, 0x90, 0xbc, 0xaf, 0xeb, 0x97, 0xf9, 0x36, 0xcd, 0x0d,
0x36, 0x08, 0x74, 0x0b, 0x1a, 0x2c, 0x66, 0x46, 0x34, 0x87, 0x6c, 0x4a, 0xdd, 0x96, 0xf6, 0x5c,
0x05, 0xbb, 0x43, 0xa8, 0xf6, 0x23, 0x46, 0x63, 0xf9, 0x5c, 0x8c, 0xd0, 0x0d, 0x28, 0x48, 0x6e,
0xd4, 0x5e, 0xdb, 0xab, 0xcc, 0x1b, 0x74, 0xb0, 0x85, 0x15, 0x8c, 0x3a, 0xb6, 0x7f, 0xf2, 0x9a,
0x06, 0x3f, 0xeb, 0x2c, 0xa5, 0x3a, 0xc5, 0x28, 0xd5, 0x1d, 0x27, 0xe1, 0x59, 0xf7, 0xd7, 0x1c,
0x54, 0xb1, 0x9e, 0x3a, 0xea, 0xd4, 0x07, 0x50, 0xe7, 0x5a, 0xbf, 0x47, 0xfa, 0xc7, 0xb5, 0xc7,
0xb7, 0xfd, 0x35, 0x61, 0x0f, 0xb6, 0x70, 0x8d, 0x2f, 0xe9, 0xfc, 0xad, 0xe1, 0xd0, 0x27, 0x50,
0x39, 0xb1, 0xba, 0xd6, 0xb2, 0x54, 0xdd, 0xb0, 0x2c, 0xf6, 0xc1, 0x16, 0xce, 0x1c, 0xb2, 0xdc,
0xfe, 0x71, 0xa0, 0x6e, 0x72, 0x1b, 0xea, 0x6e, 0x44, 0x3b, 0xe0, 0x90, 0x40, 0xb2, 0x53, 0xd3,
0xd1, 0x25, 0x6c, 0x2d, 0x85, 0x9f, 0x10, 0x16, 0xd9, 0xb3, 0x2b, 0xd8, 0x5a, 0xa8, 0x09, 0x79,
0x16, 0x5a, 0xa5, 0xe7, 0x59, 0xb8, 0xdc, 0x37, 0xa5, 0x0b, 0xfa, 0xc6, 0xb9, 0xa8, 0x6f, 0xca,
0x17, 0xf5, 0x4d, 0xe5, 0xc2, 0xbe, 0xa9, 0xbe, 0xa5, 0x6f, 0x60, 0xb3, 0x6f, 0x76, 0xc0, 0x09,
0x88, 0xea, 0x0f, 0x2d, 0xdf, 0x0a, 0xb6, 0x16, 0xfa, 0x18, 0xda, 0x9c, 0xfe, 0x98, 0x52, 0x21,
0x05, 0xa6, 0x01, 0x65, 0xa7, 0x34, 0xd4, 0xd2, 0x2d, 0xe2, 0x0d, 0x5c, 0xa9, 0x76, 0x8e, 0x0d,
0x48, 0x1c, 0xaa, 0x32, 0x35, 0xb4, 0xeb, 0x3a, 0x8c, 0xba, 0x50, 0x9f, 0x84, 0xe9, 0x74, 0x26,
0x5e, 0xc4, 0xfb, 0x4c, 0x4c, 0xb4, 0x60, 0x8b, 0x78, 0x05, 0x3b, 0xbf, 0x93, 0x5b, 0x57, 0xea,
0xe4, 0xf6, 0x9b, 0x3a, 0x79, 0x17, 0xb6, 0x99, 0xf8, 0x96, 0xca, 0x9f, 0x12, 0x3e, 0xd9, 0x67,
0x82, 0x1c, 0xab, 0x5c, 0xb7, 0xf5, 0xc5, 0x37, 0x09, 0xd4, 0x87, 0x7a, 0x90, 0x0a, 0x99, 0x4c,
0x8d, 0x3a, 0x5c, 0xa4, 0x87, 0xf3, 0x4d, 0x7f, 0x59, 0x32, 0x7e, 0x7f, 0xc9, 0xc3, 0x7c, 0xb3,
0x56, 0x36, 0xbd, 0x79, 0x10, 0xbc, 0x73, 0xc5, 0x41, 0x70, 0xed, 0x0a, 0x83, 0xe0, 0xfa, 0xa5,
0x07, 0xc1, 0xce, 0x39, 0x83, 0xc0, 0xfb, 0x0a, 0xb6, 0x37, 0xae, 0x75, 0xa5, 0x6f, 0xed, 0x29,
0x54, 0xfb, 0x49, 0x7c, 0xc2, 0x46, 0xaa, 0xe7, 0x7d, 0x70, 0x02, 0x6d, 0xb8, 0x39, 0x5d, 0xc0,
0x1d, 0x3f, 0xe3, 0xec, 0xca, 0xd4, 0xcd, 0x7a, 0x79, 0x9f, 0x43, 0x6d, 0x09, 0xbe, 0x52, 0xdc,
0x26, 0xd4, 0xcd, 0x56, 0x93, 0x78, 0xf7, 0x8f, 0x3c, 0x34, 0x9e, 0x25, 0x23, 0x6c, 0x64, 0xa8,
0x92, 0xd9, 0x85, 0xd2, 0xf2, 0xe4, 0xb9, 0xe6, 0xaf, 0xd0, 0xfe, 0x7c, 0xfa, 0x18, 0x27, 0x74,
0x1b, 0x0a, 0x24, 0x98, 0xd8, 0xb1, 0x83, 0xd6, 0x7c, 0x1f, 0x07, 0x13, 0x35, 0x0e, 0x49, 0xa0,
0x34, 0x5b, 0xe2, 0x94, 0x84, 0x67, 0x76, 0xf4, 0xac, 0x9f, 0x8a, 0x15, 0xa7, 0x4e, 0xd5, 0x4e,
0xde, 0xcf, 0x50, 0x32, 0x63, 0xed, 0xe1, 0x5a, 0x65, 0x3a, 0xe7, 0x65, 0xf3, 0x3f, 0xd7, 0xc8,
0x2b, 0x41, 0xe1, 0x71, 0x30, 0xf1, 0xca, 0x50, 0xd2, 0x69, 0x65, 0xc3, 0xf0, 0xdf, 0x02, 0x34,
0x75, 0x78, 0x31, 0x4b, 0x62, 0x41, 0x55, 0xb1, 0xee, 0x64, 0xaf, 0x24, 0x95, 0xdd, 0xbb, 0xfe,
0x2a, 0xad, 0x12, 0x93, 0x84, 0xc5, 0x94, 0x9b, 0x19, 0xec, 0xfd, 0x59, 0xd0, 0x3f, 0xbb, 0xc1,
0x94, 0xd4, 0xc8, 0x6c, 0x16, 0xb1, 0x40, 0x2b, 0xef, 0x69, 0x68, 0xb3, 0x5b, 0x05, 0xd1, 0xfb,
0x00, 0x27, 0x69, 0x1c, 0x58, 0x17, 0xfb, 0x5c, 0x5c, 0x20, 0x66, 0x82, 0xd9, 0x23, 0x9f, 0x9a,
0xf1, 0xab, 0x27, 0x58, 0x06, 0xa1, 0x07, 0x36, 0xc9, 0xa2, 0x4e, 0xf2, 0x83, 0x37, 0x26, 0xe9,
0xdb, 0xc2, 0xda, 0x64, 0x7f, 0xc9, 0x43, 0xd9, 0x22, 0x6a, 0x88, 0xda, 0x49, 0x95, 0xa5, 0xb9,
0x00, 0xd0, 0xa3, 0xec, 0xe3, 0xa3, 0x02, 0xdc, 0x7e, 0x6b, 0x00, 0xff, 0x19, 0x8b, 0xa9, 0x8d,
0xf2, 0x7b, 0x0e, 0x8a, 0xca, 0x54, 0x21, 0x24, 0x9b, 0x52, 0x21, 0xc9, 0x74, 0xa6, 0x43, 0x14,
0xf0, 0x02, 0x40, 0x07, 0xe0, 0x88, 0x24, 0xe5, 0x81, 0xf9, 0xb9, 0x9a, 0x7b, 0x77, 0x2e, 0x17,
0xc4, 0x1f, 0xea, 0x4d, 0xd8, 0x6e, 0xce, 0x5e, 0xb5, 0x85, 0xc5, 0xab, 0xb6, 0xdb, 0x01, 0xc7,
0x78, 0x21, 0x00, 0x67, 0x78, 0xb8, 0xff, 0xe2, 0xd5, 0x61, 0x7b, 0xcb, 0xae, 0x0f, 0x30, 0x6e,
0xe7, 0xf6, 0xfe, 0xca, 0x41, 0xd3, 0x8c, 0xb4, 0x97, 0xea, 0xe5, 0x1f, 0x24, 0x11, 0xba, 0x05,
0xce, 0x41, 0x3c, 0x52, 0xef, 0x18, 0xf0, 0xb3, 0x27, 0x81, 0x07, 0x7e, 0xf6, 0x21, 0xef, 0xe5,
0x3e, 0xcd, 0xa1, 0xbb, 0xe0, 0xcc, 0xbf, 0x9b, 0xbe, 0xf9, 0x2b, 0xe1, 0xcf, 0xff, 0x4a, 0xf8,
0x07, 0xea, 0xaf, 0x84, 0xd7, 0x58, 0x99, 0x95, 0x68, 0x17, 0x5a, 0x46, 0xb5, 0x29, 0xa7, 0x86,
0x50, 0xe7, 0xcf, 0x87, 0x81, 0xd7, 0xf0, 0x97, 0x9b, 0x17, 0xdd, 0x03, 0x18, 0x4a, 0x4e, 0xc9,
0xf4, 0x59, 0x32, 0x12, 0xa8, 0xb9, 0xda, 0x1b, 0x5e, 0x6b, 0xad, 0x44, 0x2a, 0xa3, 0x63, 0x47,
0xc7, 0xff, 0xec, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x35, 0xd2, 0x0f, 0x74, 0xe8, 0x0c, 0x00,
0x00,
// 1328 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4b, 0x8f, 0x1b, 0x45,
0x17, 0x9d, 0xf6, 0xdb, 0xd7, 0xcf, 0xa9, 0x2f, 0x99, 0xaf, 0x69, 0x22, 0x62, 0x4c, 0x88, 0x2c,
0x48, 0x3a, 0x64, 0x48, 0xa4, 0x10, 0x09, 0x50, 0xf0, 0x4c, 0xe4, 0xa0, 0x84, 0x44, 0xe5, 0x09,
0x2c, 0x47, 0x35, 0xdd, 0x35, 0x76, 0xe1, 0x76, 0xb7, 0xa9, 0xaa, 0x1e, 0x32, 0x12, 0x7b, 0x7e,
0x03, 0x4b, 0x96, 0xec, 0x58, 0xf0, 0x23, 0x58, 0xf1, 0x73, 0x10, 0x4b, 0x54, 0x0f, 0xb7, 0x5f,
0x93, 0x79, 0x48, 0xec, 0xba, 0xce, 0xb9, 0x55, 0xf7, 0x56, 0xf5, 0x3d, 0xa7, 0xab, 0xa1, 0xce,
0xd3, 0x38, 0xa6, 0xdc, 0x9f, 0xf1, 0x44, 0x26, 0xde, 0xbb, 0xa3, 0x24, 0x19, 0x45, 0xf4, 0x9e,
0x1e, 0x1d, 0xa5, 0xc7, 0xf7, 0xe8, 0x74, 0x26, 0x4f, 0x0d, 0xd9, 0xfd, 0xcb, 0x81, 0xf2, 0x01,
0x3f, 0xed, 0x93, 0x28, 0x42, 0x3d, 0x68, 0x4f, 0x93, 0x90, 0x46, 0xe2, 0x30, 0x20, 0x51, 0x74,
0xf8, 0xbd, 0x48, 0x62, 0xd7, 0xe9, 0x38, 0xbd, 0x2a, 0x6e, 0x1a, 0x5c, 0x45, 0x7d, 0x2d, 0x92,
0x18, 0x75, 0xa0, 0x2e, 0xa2, 0x44, 0x1e, 0x8e, 0x89, 0x18, 0x1f, 0xb2, 0xd0, 0xcd, 0xe9, 0x28,
0x50, 0xd8, 0x80, 0x88, 0xf1, 0xb3, 0x10, 0x3d, 0x02, 0xa0, 0x6f, 0x24, 0x8d, 0x05, 0x4b, 0x62,
0xe1, 0xe6, 0x3b, 0xf9, 0x5e, 0x6d, 0xd7, 0xf5, 0x6d, 0x26, 0x7f, 0x3f, 0xa3, 0xf6, 0x63, 0xc9,
0x4f, 0xf1, 0x52, 0xac, 0xf7, 0x39, 0xb4, 0xd6, 0x68, 0xd4, 0x86, 0xfc, 0x84, 0x9e, 0xda, 0x5a,
0xd4, 0x23, 0xba, 0x06, 0xc5, 0x13, 0x12, 0xa5, 0xd4, 0x66, 0x36, 0x83, 0xc7, 0xb9, 0x47, 0x4e,
0xf7, 0x3e, 0x54, 0xf7, 0x88, 0x24, 0x4f, 0x39, 0x99, 0x52, 0x84, 0xa0, 0x10, 0x12, 0x49, 0xf4,
0xcc, 0x3a, 0xd6, 0xcf, 0x6a, 0x31, 0x9a, 0x1c, 0xeb, 0x89, 0x15, 0xac, 0x1e, 0xbb, 0x0f, 0x00,
0x06, 0x52, 0xce, 0x06, 0x94, 0x84, 0x94, 0x5f, 0x36, 0x59, 0xf7, 0x5b, 0xa8, 0xab, 0x59, 0x98,
0x8a, 0xd9, 0x0b, 0x2a, 0x09, 0xba, 0x09, 0x35, 0x21, 0x89, 0x4c, 0xc5, 0x61, 0x90, 0x84, 0x54,
0xcf, 0x2f, 0x62, 0x30, 0x50, 0x3f, 0x09, 0x29, 0xfa, 0x10, 0xca, 0x63, 0x9d, 0x42, 0xb8, 0x39,
0x7d, 0x1e, 0x35, 0x7f, 0x91, 0x16, 0xcf, 0xb9, 0xee, 0x17, 0xd0, 0x52, 0x67, 0x84, 0xa9, 0x48,
0x23, 0x39, 0x94, 0x84, 0x4b, 0xf4, 0x01, 0x14, 0xc6, 0x52, 0xce, 0xdc, 0xb0, 0xe3, 0xf4, 0x6a,
0xbb, 0x0d, 0x7f, 0x39, 0xef, 0x60, 0x0b, 0x6b, 0xf2, 0xab, 0x12, 0x14, 0xa6, 0x54, 0x92, 0xee,
0x3f, 0x05, 0xa8, 0xab, 0x05, 0x9e, 0xb2, 0x98, 0x89, 0x31, 0x0d, 0x91, 0x0b, 0x65, 0x91, 0x06,
0x01, 0x15, 0x42, 0x17, 0x55, 0xc1, 0xf3, 0xa1, 0x62, 0x42, 0x2a, 0x09, 0x8b, 0x84, 0xdd, 0xda,
0x7c, 0x88, 0x6e, 0x40, 0x95, 0x72, 0x9e, 0x70, 0x55, 0xb8, 0x9b, 0xd7, 0x5b, 0x59, 0x00, 0xc8,
0x83, 0x8a, 0x1e, 0x0c, 0x25, 0x77, 0x0b, 0x7a, 0x62, 0x36, 0x56, 0x33, 0x03, 0x4e, 0x89, 0xa4,
0xe1, 0x13, 0xe9, 0x16, 0x35, 0xb9, 0x00, 0x14, 0x2b, 0xd4, 0x96, 0x34, 0x5b, 0x32, 0x6c, 0x06,
0xa0, 0x0e, 0xd4, 0x82, 0x64, 0x3a, 0x8b, 0xa8, 0xe1, 0xcb, 0x9a, 0x5f, 0x86, 0xd0, 0x1d, 0xd8,
0x16, 0xc1, 0x98, 0x86, 0x69, 0x44, 0xf9, 0x5e, 0xca, 0x89, 0x64, 0x49, 0xec, 0x56, 0x3a, 0x4e,
0x2f, 0x8f, 0x37, 0x09, 0x15, 0x4d, 0xdf, 0xd0, 0x20, 0x55, 0x83, 0x2c, 0xba, 0x6a, 0xa2, 0x37,
0x88, 0x6c, 0xcf, 0xaf, 0x05, 0xe5, 0x2e, 0xe8, 0x93, 0x5a, 0x00, 0xaa, 0x09, 0xd8, 0x94, 0x8c,
0xa8, 0x5b, 0x33, 0x4d, 0xa0, 0x07, 0xe8, 0x01, 0x5c, 0xd7, 0x0f, 0xaf, 0xd2, 0x28, 0xfa, 0x8e,
0x30, 0x99, 0x65, 0xa9, 0xeb, 0x2c, 0x67, 0x93, 0xa8, 0x07, 0xad, 0x40, 0xf2, 0x57, 0x9c, 0xce,
0xb2, 0xf8, 0x86, 0x8e, 0x5f, 0x87, 0xd5, 0x0e, 0x02, 0xc9, 0xfb, 0xfa, 0xfc, 0xb2, 0xd8, 0xa6,
0xd9, 0xc1, 0x06, 0x81, 0x6e, 0x41, 0x83, 0xc5, 0xcc, 0x34, 0xcd, 0x01, 0x9b, 0x52, 0xb7, 0xa5,
0x23, 0x57, 0x41, 0xb5, 0x66, 0x56, 0x56, 0xb6, 0x66, 0xdb, 0xac, 0xb9, 0x41, 0xa0, 0x8f, 0xa0,
0x9d, 0x81, 0x98, 0x4a, 0xce, 0xa8, 0x70, 0xb7, 0x75, 0x43, 0x6c, 0xe0, 0xdd, 0x21, 0x54, 0xfb,
0x11, 0xa3, 0xb1, 0x7c, 0x21, 0x46, 0xe8, 0x06, 0xe4, 0x25, 0x37, 0x3a, 0xaa, 0xed, 0x56, 0xe6,
0xd2, 0x1f, 0x6c, 0x61, 0x05, 0xa3, 0x8e, 0x55, 0x66, 0x4e, 0xd3, 0xe0, 0x67, 0x9a, 0x55, 0xfd,
0xac, 0x18, 0xd5, 0xcf, 0x47, 0x49, 0x78, 0xda, 0xfd, 0xc5, 0x81, 0x2a, 0xd6, 0x7e, 0xa6, 0x56,
0x7d, 0x08, 0x75, 0xae, 0x95, 0x71, 0xa8, 0xdb, 0xc6, 0x2e, 0xdf, 0xf6, 0xd7, 0x24, 0x33, 0xd8,
0xc2, 0x35, 0xbe, 0xa4, 0xa0, 0x0b, 0xd3, 0xa1, 0x8f, 0xa1, 0x72, 0x6c, 0x15, 0xa3, 0x1b, 0x5e,
0xe9, 0x6c, 0x59, 0x46, 0x83, 0x2d, 0x9c, 0x05, 0x64, 0xb5, 0xfd, 0x5e, 0x86, 0xba, 0xa9, 0x6d,
0xa8, 0x75, 0x8e, 0x76, 0xa0, 0x44, 0x02, 0xc9, 0x4e, 0x8c, 0x57, 0x14, 0xb1, 0x1d, 0x29, 0xfc,
0x98, 0xb0, 0xc8, 0xae, 0x5d, 0xc1, 0x76, 0x84, 0x9a, 0x90, 0x63, 0xa1, 0xd5, 0x50, 0x8e, 0x85,
0xcb, 0x8a, 0x2c, 0x9e, 0xa3, 0xc8, 0xd2, 0x79, 0x8a, 0x2c, 0x9f, 0xa7, 0xc8, 0xca, 0xb9, 0x8a,
0xac, 0x5e, 0xa0, 0x48, 0xd8, 0x54, 0xe4, 0x0e, 0x94, 0x02, 0xa2, 0x94, 0xa7, 0x85, 0x51, 0xc1,
0x76, 0xa4, 0xfa, 0x86, 0xd3, 0x1f, 0x52, 0x2a, 0xa4, 0xc0, 0x34, 0xa0, 0xec, 0x84, 0x86, 0x5a,
0x14, 0x05, 0xbc, 0x81, 0x2b, 0x3d, 0xcc, 0xb1, 0x01, 0x89, 0x43, 0x75, 0x4c, 0x0d, 0x1d, 0xba,
0x0e, 0xa3, 0x2e, 0xd4, 0x27, 0x61, 0x3a, 0x9d, 0x89, 0x97, 0xf1, 0x1e, 0x13, 0x13, 0x2d, 0x85,
0x02, 0x5e, 0xc1, 0xce, 0xf6, 0x88, 0xd6, 0x95, 0x3c, 0xa2, 0xfd, 0x36, 0x8f, 0x50, 0xda, 0x11,
0xdf, 0x50, 0xf9, 0x63, 0xc2, 0x27, 0x7b, 0x4c, 0x90, 0x23, 0x55, 0xeb, 0xb6, 0xde, 0xf8, 0x26,
0x81, 0xfa, 0x50, 0x0f, 0x52, 0x21, 0x93, 0xa9, 0xe9, 0x0e, 0x17, 0x69, 0xdb, 0xbf, 0xe9, 0x2f,
0xb7, 0x8c, 0xdf, 0x5f, 0x8a, 0x30, 0x5f, 0xc3, 0x95, 0x49, 0x6f, 0xb7, 0x98, 0xff, 0x5d, 0xd1,
0x62, 0xae, 0x5d, 0xc1, 0x62, 0xae, 0x5f, 0xda, 0x62, 0x76, 0x2e, 0x6d, 0x31, 0xff, 0xbf, 0x8a,
0xc5, 0xb8, 0x67, 0x5b, 0x8c, 0xf7, 0x25, 0x6c, 0x6f, 0x1c, 0xd8, 0x95, 0xee, 0x07, 0x27, 0x50,
0xed, 0x27, 0xf1, 0x31, 0x1b, 0x29, 0x37, 0xf1, 0xa1, 0x14, 0xe8, 0x81, 0xeb, 0xe8, 0x57, 0xb3,
0xe3, 0x67, 0x9c, 0x7d, 0x32, 0x6f, 0xc4, 0x46, 0x79, 0x9f, 0x41, 0x6d, 0x09, 0xbe, 0x52, 0xde,
0x26, 0xd4, 0xcd, 0x54, 0x53, 0x78, 0xf7, 0xb7, 0x1c, 0x34, 0x9e, 0x27, 0x23, 0x6c, 0x1a, 0x5c,
0x15, 0x73, 0x07, 0x8a, 0xcb, 0x9e, 0x76, 0xcd, 0x5f, 0xa1, 0xfd, 0xb9, 0xaf, 0x99, 0x20, 0x74,
0x1b, 0xf2, 0x24, 0x98, 0x58, 0x43, 0x43, 0x6b, 0xb1, 0x4f, 0x82, 0x89, 0x32, 0x5a, 0x12, 0x28,
0x35, 0x14, 0x39, 0x25, 0xe1, 0xa9, 0x35, 0xb5, 0xf5, 0x55, 0xb1, 0xe2, 0xd4, 0xaa, 0x3a, 0xc8,
0xfb, 0x09, 0x8a, 0xc6, 0x30, 0x1f, 0xad, 0x9d, 0x4c, 0xe7, 0xac, 0x6a, 0xfe, 0xe3, 0x33, 0xf2,
0x8a, 0x90, 0x7f, 0x12, 0x4c, 0xbc, 0x32, 0x14, 0x75, 0x59, 0x99, 0xcd, 0xfe, 0x9d, 0x87, 0xa6,
0x4e, 0x2f, 0x66, 0x49, 0x2c, 0xa8, 0x3a, 0xac, 0xbb, 0xd9, 0xcd, 0x4e, 0x55, 0xf7, 0x8e, 0xbf,
0x4a, 0xab, 0xc2, 0x24, 0x61, 0x31, 0xe5, 0xc6, 0xdd, 0xbd, 0x3f, 0xf2, 0xfa, 0xb5, 0x1b, 0x4c,
0x35, 0x31, 0x99, 0xcd, 0x22, 0x16, 0xe8, 0xfe, 0x7b, 0x16, 0xda, 0xea, 0x56, 0x41, 0xf4, 0x1e,
0xc0, 0x71, 0x1a, 0x07, 0x36, 0xc4, 0x5e, 0x71, 0x17, 0x88, 0xf1, 0x46, 0xbb, 0xe4, 0x33, 0x63,
0xec, 0xda, 0x1b, 0x33, 0x08, 0x3d, 0xb4, 0x45, 0x16, 0x74, 0x91, 0xef, 0xbf, 0xb5, 0x48, 0xdf,
0x1e, 0xac, 0x2d, 0xf6, 0xe7, 0x1c, 0x94, 0x2d, 0xa2, 0xec, 0xd9, 0x7a, 0x60, 0x56, 0xe6, 0x02,
0x40, 0x8f, 0xb3, 0xcf, 0x9a, 0x4a, 0x70, 0xfb, 0xc2, 0x04, 0xfe, 0x73, 0x16, 0x53, 0x9b, 0xe5,
0x57, 0x07, 0x0a, 0x6a, 0xa8, 0x52, 0x48, 0x36, 0xa5, 0x42, 0x92, 0xe9, 0x4c, 0xa7, 0xc8, 0xe3,
0x05, 0x80, 0xf6, 0xa1, 0x24, 0x92, 0x94, 0x07, 0xe6, 0x75, 0x35, 0x77, 0xef, 0x5e, 0x2e, 0x89,
0x3f, 0xd4, 0x93, 0xb0, 0x9d, 0x9c, 0xdd, 0xc4, 0xf3, 0x8b, 0x9b, 0x78, 0xb7, 0x03, 0x25, 0x13,
0x85, 0x00, 0x4a, 0xc3, 0x83, 0xbd, 0x97, 0xaf, 0x0f, 0xda, 0x5b, 0xf6, 0x79, 0x1f, 0xe3, 0xb6,
0xb3, 0xfb, 0xa7, 0x03, 0x4d, 0x63, 0x96, 0xaf, 0xd4, 0xdf, 0x4a, 0x90, 0x44, 0xe8, 0x16, 0x94,
0xf6, 0xe3, 0x91, 0xba, 0x7b, 0x81, 0x9f, 0x5d, 0x36, 0x3c, 0xf0, 0xb3, 0x2b, 0x42, 0xcf, 0xf9,
0xc4, 0x41, 0xf7, 0xa0, 0x34, 0xff, 0x22, 0xfb, 0xe6, 0xf7, 0xc7, 0x9f, 0xff, 0xfe, 0xf8, 0xfb,
0xea, 0xf7, 0xc7, 0x6b, 0xac, 0xb8, 0x30, 0xba, 0x03, 0x2d, 0xd3, 0xb5, 0x29, 0xa7, 0x86, 0x50,
0xeb, 0xcf, 0xcd, 0xc0, 0x6b, 0xf8, 0xcb, 0xe2, 0x45, 0xf7, 0x01, 0x86, 0x92, 0x53, 0x32, 0x7d,
0x9e, 0x8c, 0x04, 0x6a, 0xae, 0x6a, 0xc3, 0x6b, 0xad, 0x1d, 0x91, 0xaa, 0xe8, 0xa8, 0xa4, 0xf3,
0x7f, 0xfa, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5a, 0x4a, 0x9d, 0x51, 0x9c, 0x0d, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View File

@@ -53,6 +53,8 @@ message CallFinished {
int64 ctrPrepDuration = 13;
int64 ctrCreateDuration = 14;
int64 initStartTime = 15;
int64 imagePullDuration = 16;
int32 imagePullRetries = 17;
}
message ClientMsg {
@@ -92,6 +94,8 @@ message RunnerStatus {
int64 ctrPrepDuration = 20;
int64 ctrCreateDuration = 21;
int64 initStartTime = 22;
int64 imagePullDuration = 23;
int32 imagePullRetries = 24;
}
message ConfigMsg {

View File

@@ -236,6 +236,8 @@ func (ch *callHandle) enqueueCallResponse(err error) {
var errUser bool
var nErr error
var imagePullWaitDuration int64
var imagePullDuration int64
var imagePullRetries int32
var ctrCreateDuration int64
var ctrPrepDuration int64
var initStartTime int64
@@ -280,6 +282,8 @@ func (ch *callHandle) enqueueCallResponse(err error) {
image = mcall.Image
details = mcall.ID
imagePullWaitDuration = ch.c.imagePullWaitTime
imagePullDuration = ch.c.imagePullTime
imagePullRetries = ch.c.imagePullRetries
ctrCreateDuration = ch.c.ctrCreateTime
ctrCreateDuration = ch.c.ctrCreateTime
initStartTime = ch.c.initStartTime
@@ -298,6 +302,8 @@ func (ch *callHandle) enqueueCallResponse(err error) {
ErrorUser: errUser,
ExecutionDuration: int64(executionDuration),
Image: image,
ImagePullDuration: imagePullDuration,
ImagePullRetries: imagePullRetries,
ImagePullWaitDuration: imagePullWaitDuration,
InitStartTime: initStartTime,
SchedulerDuration: int64(schedulerDuration),
@@ -942,6 +948,9 @@ func (pr *pureRunner) runStatusCall(ctx context.Context) *runner.RunnerStatus {
// Loading with runHot metrics if not nil
if mcall != nil {
result.ImagePullWaitDuration = atomic.LoadInt64(&mcall.imagePullWaitTime)
result.ImagePullDuration = atomic.LoadInt64(&mcall.imagePullTime)
result.ImagePullRetries = atomic.LoadInt32(&mcall.imagePullRetries)
result.ImagePullWaitDuration = atomic.LoadInt64(&mcall.imagePullWaitTime)
result.CtrCreateDuration = atomic.LoadInt64(&mcall.ctrCreateTime)
result.CtrPrepDuration = atomic.LoadInt64(&mcall.ctrPrepTime)

View File

@@ -124,6 +124,8 @@ func TranslateGRPCStatusToRunnerStatus(status *pb.RunnerStatus) *pool.RunnerStat
ctrPrepDuration := time.Duration(status.GetCtrPrepDuration())
ctrCreateDuration := time.Duration(status.GetCtrCreateDuration())
imagePullWaitDuration := time.Duration(status.GetImagePullWaitDuration())
imagePullDuration := time.Duration(status.GetImagePullDuration())
imagePullRetries := status.GetImagePullRetries()
initStartTime := time.Duration(status.GetInitStartTime())
creat, _ := common.ParseDateTime(status.CreatedAt)
@@ -147,6 +149,8 @@ func TranslateGRPCStatusToRunnerStatus(status *pb.RunnerStatus) *pool.RunnerStat
SchedulerDuration: runnerSchedLatency,
ExecutionDuration: runnerExecLatency,
ImagePullWaitDuration: imagePullWaitDuration,
ImagePullDuration: imagePullDuration,
ImagePullRetries: imagePullRetries,
CtrPrepDuration: ctrPrepDuration,
CtrCreateDuration: ctrCreateDuration,
InitStartTime: initStartTime,
@@ -447,12 +451,14 @@ DataLoop:
span.Annotate([]trace.Attribute{
trace.BoolAttribute("error_user", body.Finished.GetErrorUser()),
trace.BoolAttribute("success", body.Finished.GetSuccess()),
trace.Int64Attribute("execution_duration", body.Finished.GetExecutionDuration()),
trace.Int64Attribute("scheduler_duration", body.Finished.GetSchedulerDuration()),
trace.Int64Attribute("image_pull_wait", body.Finished.GetImagePullWaitDuration()),
trace.Int64Attribute("container_create_duration", body.Finished.GetCtrCreateDuration()),
trace.Int64Attribute("container_preparation_duration", body.Finished.GetCtrPrepDuration()),
trace.Int64Attribute("execution_duration", body.Finished.GetExecutionDuration()),
trace.Int64Attribute("image_pull_duration", body.Finished.GetImagePullDuration()),
trace.Int64Attribute("image_pull_retries", int64(body.Finished.GetImagePullRetries())),
trace.Int64Attribute("image_pull_wait", body.Finished.GetImagePullWaitDuration()),
trace.Int64Attribute("init_start", body.Finished.GetInitStartTime()),
trace.Int64Attribute("scheduler_duration", body.Finished.GetSchedulerDuration()),
trace.StringAttribute("completed_at", body.Finished.GetCompletedAt()),
trace.StringAttribute("created_at", body.Finished.GetCreatedAt()),
trace.StringAttribute("started_at", body.Finished.GetStartedAt()),

View File

@@ -27,6 +27,7 @@ type RunnerPool interface {
// RunnerStatus is general information on Runner health as returned by Runner::Status() call
type RunnerStatus struct {
ActiveRequestCount int32 // Number of active running requests on Runner
ImagePullRetries int32 // Number of retries during image pull
RequestsReceived uint64 // Number of requests received by Runner
RequestsHandled uint64 // Number of requests handled without NACK by Runner
KdumpsOnDisk uint64 // Number of kdumps on disk
@@ -39,12 +40,13 @@ type RunnerStatus struct {
CreatedAt common.DateTime // Status creation date at Runner
StartedAt common.DateTime // Status execution date at Runner
CompletedAt common.DateTime // Status completion date at Runner
SchedulerDuration time.Duration // Amount of time runner scheduler spent on the request
ExecutionDuration time.Duration // Amount of time runner spent on function execution
ImagePullWaitDuration time.Duration // Amount of time spent waiting for the image pull
CtrPrepDuration time.Duration // Amount of time spent preparing for the container creation
CtrCreateDuration time.Duration //Amount of time spent creating the container
CtrPrepDuration time.Duration // Amount of time spent preparing for the container creation
ExecutionDuration time.Duration // Amount of time runner spent on function execution
ImagePullDuration time.Duration // Amount of time spent pulling the image
ImagePullWaitDuration time.Duration // Amount of time spent waiting for the image pull
InitStartTime time.Duration // Container Init UDS Latency time
SchedulerDuration time.Duration // Amount of time runner scheduler spent on the request
IsNetworkDisabled bool // True if network on runner is offline
}