envoyproxy/envoy

Use per-resource version to avoid hashing protos in xDS updates

Open

#14.367 aberto em 10 de dez. de 2020

Ver no GitHub
 (3 comments) (0 reactions) (0 assignees)C++ (5.373 forks)batch import
area/perfarea/xdsenhancementhelp wanted

Métricas do repositório

Stars
 (27.997 stars)
Métricas de merge de PR
 (Mesclagem média 8d) (378 fundiu PRs em 30d)

Description

xDS APIs today use hashes of incoming resource protos to compare against the existing resource version when determining if any updates needs to be made. This is expensive (we're measuring ~8% CPU in some workloads), since we need to flatten to text for Envoy-canonical proto hashing (protobuf doesn't do its own hashing).

It's also unnecessary when delivered resources are provided via delta xDS (or even SotW when we encapsulate in a Resource object). In these cases, we have per-resource versioning that can play the same role as the hash without any computational requirement.

Opening this issue to track potential optimization work here. I think the main value is for SotW+Resource wrapper, since delta xDS will be pushing the diffing to the server-side anyway, so there isn't a lot of saving.

FWIW, I think we had a thread on this ages ago but I can't spot it.

Guia do colaborador