Skip to content

chore(serverless): benchmark on AWS Lambda#4033

Merged
duncanista merged 33 commits into
masterfrom
jordan.gonzalez/add-serverless-benchmark
Feb 15, 2024
Merged

chore(serverless): benchmark on AWS Lambda#4033
duncanista merged 33 commits into
masterfrom
jordan.gonzalez/add-serverless-benchmark

Conversation

@duncanista

@duncanista duncanista commented Feb 7, 2024

Copy link
Copy Markdown
Contributor

What does this PR do?

Adds a trigger for pipelines stored in DataDog/serverless-tools which benchmark cold starts and package size against hard coded values (to be changed to a baseline, currently using data from Serverless dashboards).

The result of this pipeline is expected to BLOCK any PR on this repository when the check is marked as required.

Example trigger dd-trace-js . (two jobs are needed, since trigger is not reported to GitHub)
Screenshot 2024-02-08 at 4 25 21 PM

Downstream pipeline in serverless-tools.
Screenshot 2024-02-07 at 9 56 35 AM

Motivation

Engineers working on this repository might create changes which could:

  • increase dramatically the cold start in AWS Lambdas, or
  • increase the package size (which also impacts the above)

Serverless teams have diligently lazy-load or notify about package size increase (binaries not removed for certain architectures).
Yet, it is hard to keep up with the amount of changes done daily. This pipeline aims to automate the process.

Additional Notes

  • Added a new secret to the gitlab runners in this repo: serverless-gitlab-token

Risks

Test might become flaky at some point when small increases surpass the threshold. We are aware of this and will work on increasing the hard coded values whenever we detect that it is utmost necessary.

Security

Datadog employees:

  • If this PR touches code that signs or publishes builds or packages, or handles credentials of any kind, I've requested a review from @DataDog/security-design-and-guidance.
  • This PR doesn't touch any of that.

Unsure? Have a question? Request a review!

@github-actions

github-actions Bot commented Feb 7, 2024

Copy link
Copy Markdown
Contributor

Overall package size

Self size: 6.04 MB
Deduped: 61.63 MB
No deduping: 62.39 MB

Dependency sizes

name version self size total size
@datadog/native-iast-taint-tracking 1.6.4 16.43 MB 16.44 MB
@datadog/native-appsec 7.0.0 14.51 MB 14.52 MB
@datadog/pprof 5.0.0 9.59 MB 10.44 MB
protobufjs 7.2.5 2.77 MB 6.56 MB
@datadog/native-iast-rewriter 2.2.3 2.19 MB 2.28 MB
@opentelemetry/core 1.14.0 872.87 kB 1.47 MB
@datadog/native-metrics 2.0.0 898.77 kB 1.3 MB
@opentelemetry/api 1.4.1 780.32 kB 780.32 kB
import-in-the-middle 1.7.3 67.62 kB 731.01 kB
pprof-format 2.0.7 588.12 kB 588.12 kB
msgpack-lite 0.1.26 201.16 kB 281.59 kB
opentracing 0.14.7 194.81 kB 194.81 kB
semver 7.5.4 93.4 kB 123.8 kB
@datadog/sketches-js 2.1.0 109.9 kB 109.9 kB
lodash.sortby 4.7.0 75.76 kB 75.76 kB
lru-cache 7.14.0 74.95 kB 74.95 kB
ipaddr.js 2.1.0 60.23 kB 60.23 kB
ignore 5.2.4 51.22 kB 51.22 kB
int64-buffer 0.1.10 49.18 kB 49.18 kB
shell-quote 1.8.1 44.96 kB 44.96 kB
istanbul-lib-coverage 3.2.0 29.34 kB 29.34 kB
tlhunter-sorted-set 0.1.0 24.94 kB 24.94 kB
limiter 1.1.5 23.17 kB 23.17 kB
dc-polyfill 0.1.4 23.1 kB 23.1 kB
retry 0.13.1 18.85 kB 18.85 kB
node-abort-controller 3.1.1 16.89 kB 16.89 kB
jest-docblock 29.7.0 8.99 kB 12.76 kB
crypto-randomuuid 1.0.0 11.18 kB 11.18 kB
path-to-regexp 0.1.7 6.78 kB 6.78 kB
koalas 1.0.2 6.47 kB 6.47 kB
methods 1.1.2 5.29 kB 5.29 kB
module-details-from-path 1.0.3 4.47 kB 4.47 kB

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@codecov

codecov Bot commented Feb 7, 2024

Copy link
Copy Markdown

Codecov Report

All modified and coverable lines are covered by tests ✅

Comparison is base (22f8d0a) 85.33% compared to head (5aa9140) 85.33%.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #4033   +/-   ##
=======================================
  Coverage   85.33%   85.33%           
=======================================
  Files         243      243           
  Lines       10570    10570           
  Branches       33       33           
=======================================
  Hits         9020     9020           
  Misses       1550     1550           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@duncanista
duncanista marked this pull request as ready for review February 7, 2024 15:15
@duncanista
duncanista requested a review from a team as a code owner February 7, 2024 15:15
@duncanista
duncanista requested a review from a team February 7, 2024 15:15
@duncanista
duncanista requested a review from a team as a code owner February 7, 2024 15:15
@pr-commenter

pr-commenter Bot commented Feb 7, 2024

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2024-02-14 22:27:22

Comparing candidate commit 5aa9140 in PR branch jordan.gonzalez/add-serverless-benchmark with baseline commit 22f8d0a in branch master.

Found 1 performance improvements and 0 performance regressions! Performance is the same for 257 metrics, 8 unstable metrics.

scenario:plugin-graphql-with-depth-on-max-18

  • 🟩 max_rss_usage [-125.820MB; -106.080MB] or [-13.243%; -11.165%]

@tlhunter

tlhunter commented Feb 8, 2024

Copy link
Copy Markdown
Member

How many runs does it do? Just one or like a dozen?

@duncanista

Copy link
Copy Markdown
Contributor Author

How many runs does it do? Just one or like a dozen?

@tlhunter for now, it's an average of 5 cold starts, we can increase that number as desired!

@joeyzhao2018 joeyzhao2018 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@duncanista
duncanista merged commit 853223d into master Feb 15, 2024
@duncanista
duncanista deleted the jordan.gonzalez/add-serverless-benchmark branch February 15, 2024 00:45
CarlesDD pushed a commit that referenced this pull request Feb 19, 2024
* add serverless benchmark trigger

* add mock cold start increase

* remove lambda overhead mock

* decomission old performance github action

* remove specific branch

* check if job is reported by codesync

* check if env vars are reported from downstream

* add branch for testing

* update `depends` to `dependencies`

* change `always` to on_success

* echo on arm to see if works

* try hack on adding two branches

* check if we can query bridges API

* update needs to be the right job

* add SLS base image

* test querying gitlab api

* update job to use main branch and clone script to run

* update from where we clone the repo

* add experimental branch to test error reporting

* remove experimental branch to test upstream report failing
@CarlesDD CarlesDD mentioned this pull request Feb 19, 2024
juan-fernandez pushed a commit that referenced this pull request Feb 20, 2024
* add serverless benchmark trigger

* add mock cold start increase

* remove lambda overhead mock

* decomission old performance github action

* remove specific branch

* check if job is reported by codesync

* check if env vars are reported from downstream

* add branch for testing

* update `depends` to `dependencies`

* change `always` to on_success

* echo on arm to see if works

* try hack on adding two branches

* check if we can query bridges API

* update needs to be the right job

* add SLS base image

* test querying gitlab api

* update job to use main branch and clone script to run

* update from where we clone the repo

* add experimental branch to test error reporting

* remove experimental branch to test upstream report failing
juan-fernandez pushed a commit that referenced this pull request Feb 20, 2024
* add serverless benchmark trigger

* add mock cold start increase

* remove lambda overhead mock

* decomission old performance github action

* remove specific branch

* check if job is reported by codesync

* check if env vars are reported from downstream

* add branch for testing

* update `depends` to `dependencies`

* change `always` to on_success

* echo on arm to see if works

* try hack on adding two branches

* check if we can query bridges API

* update needs to be the right job

* add SLS base image

* test querying gitlab api

* update job to use main branch and clone script to run

* update from where we clone the repo

* add experimental branch to test error reporting

* remove experimental branch to test upstream report failing
This was referenced Feb 20, 2024
CarlesDD pushed a commit that referenced this pull request Feb 22, 2024
* add serverless benchmark trigger

* add mock cold start increase

* remove lambda overhead mock

* decomission old performance github action

* remove specific branch

* check if job is reported by codesync

* check if env vars are reported from downstream

* add branch for testing

* update `depends` to `dependencies`

* change `always` to on_success

* echo on arm to see if works

* try hack on adding two branches

* check if we can query bridges API

* update needs to be the right job

* add SLS base image

* test querying gitlab api

* update job to use main branch and clone script to run

* update from where we clone the repo

* add experimental branch to test error reporting

* remove experimental branch to test upstream report failing
CarlesDD pushed a commit that referenced this pull request Feb 22, 2024
* add serverless benchmark trigger

* add mock cold start increase

* remove lambda overhead mock

* decomission old performance github action

* remove specific branch

* check if job is reported by codesync

* check if env vars are reported from downstream

* add branch for testing

* update `depends` to `dependencies`

* change `always` to on_success

* echo on arm to see if works

* try hack on adding two branches

* check if we can query bridges API

* update needs to be the right job

* add SLS base image

* test querying gitlab api

* update job to use main branch and clone script to run

* update from where we clone the repo

* add experimental branch to test error reporting

* remove experimental branch to test upstream report failing
CarlesDD pushed a commit that referenced this pull request Feb 22, 2024
* add serverless benchmark trigger

* add mock cold start increase

* remove lambda overhead mock

* decomission old performance github action

* remove specific branch

* check if job is reported by codesync

* check if env vars are reported from downstream

* add branch for testing

* update `depends` to `dependencies`

* change `always` to on_success

* echo on arm to see if works

* try hack on adding two branches

* check if we can query bridges API

* update needs to be the right job

* add SLS base image

* test querying gitlab api

* update job to use main branch and clone script to run

* update from where we clone the repo

* add experimental branch to test error reporting

* remove experimental branch to test upstream report failing
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants