istio: Go binary size regression

Agent: master: 110m 1.6: 74m 1.5: 68m 1.4: 38m

Pilot: master: 108m 1.6: 90m 1.5: 84m 1.4: 65m

Measured with

for tag in master 1.6.0 1.5.0 1.4.0; do
    echo $tag
    git checkout $tag
    go build -o /tmp/agent ./pilot/cmd/pilot-discovery
    ll /tmp/agent
    echo
done

My theory is the 1.4 -> 1.5 regression in agent is for gateway SDS (pulls in k8s) and then 1.6 -> master regression is google.golang.org/api/compute/v1

cc @rshriram @kyessenov

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 15 (15 by maintainers)

Commits related to this issue

Most upvoted comments

Here is the actual effect on memory. Unshared ~= resident - shared. TLDR; 1.7 Is using ~15 MB per pod more for istio-agent, which I don’t think is release blocking.

Istio Version File size Resident Memory Unshared memory Overage
1.5 68M 55M 15M 0
1.6 74M 55M 17M 2M
1.7 110M 80M 30M 15M

Unshared memory costs increase per pod, whereas shared memory costs increase per node.