feat(telemetry): instrument inference duration and frame age

This commit is contained in:
2021-12-02 09:16:50 +01:00
parent 85fe69dcaa
commit bb99d3b7c9
450 changed files with 201257 additions and 2 deletions

View File

@ -2,9 +2,11 @@ package steering
import (
"bytes"
"context"
"fmt"
"github.com/cyrilix/robocar-base/service"
"github.com/cyrilix/robocar-protobuf/go/events"
"github.com/cyrilix/robocar-steering-tflite-edgetpu/pkg/metrics"
"github.com/disintegration/imaging"
mqtt "github.com/eclipse/paho.mqtt.golang"
"github.com/golang/protobuf/proto"
@ -14,6 +16,7 @@ import (
"image"
_ "image/jpeg"
"sort"
"time"
)
func NewPart(client mqtt.Client, modelPath, steeringTopic, cameraTopic string, edgeVerbosity int, imgWidth, imgHeight, horizon int) *Part {
@ -130,6 +133,11 @@ func (p *Part) onFrame(_ mqtt.Client, message mqtt.Message) {
return
}
now := time.Now().UnixMilli()
frameAge := now - msg.Id.CreatedAt.AsTime().UnixMilli()
go metrics.FrameAge.Record(context.Background(), frameAge)
img, _, err := image.Decode(bytes.NewReader(msg.GetFrame()))
if err != nil {
zap.L().Error("unable to decode frame, skip frame", zap.Error(err))
@ -137,6 +145,9 @@ func (p *Part) onFrame(_ mqtt.Client, message mqtt.Message) {
}
steering, confidence, err := p.Value(img)
inferenceDuration := time.Now().UnixMilli() - now
go metrics.InferenceDuration.Record(context.Background(), inferenceDuration)
if err != nil {
zap.S().Errorw("unable to compute sterring",
"frame", msg.GetId().GetId(),