Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorporated old dev-branch changes #27

Merged
merged 26 commits into from
Aug 17, 2022
Merged

Incorporated old dev-branch changes #27

merged 26 commits into from
Aug 17, 2022

Conversation

cvetkovic
Copy link
Contributor

@cvetkovic cvetkovic commented Jul 21, 2022

The warm-up process has changed and been improved according to our discussions, as well as the trace mode.

Implementation Notes ⚒️

  • The warm-up is now consists of only two steps, 5min profiling without triggering any invocations, and 10min warm-up invocations.
  • In trace mode, we generate specific definitions with scheduling resource requests (cpu, mem) for each function, i.e., different functions are truly different and no-longer only differ in service names.
  • However, in RPS sweeps, the homogeneous functions are still of best-efforts to keep things consistent.
  • The normalisation of warm-up scale has changed from previously based on total cluster instance limits to cpu limits. Specifically, I wrote an allocation policy MaxMaxAlloc() that's the opposite of max-min fairness.
  • The cluster endpoints of both the control and data plane have been remapped to 10.X.Y.Z so that no one needs to go to the cloudlab jail.
  • The throughput of RPS mode got increased as well.
  • Detailed setup guide is written down in readme.
  • Unit tests are kept up with the development.

External Dependencies 🍀

  • We are using the memory-cpu conversion from Google cloud function here for populating the function template on-the-fly.
  • The upper memory limit is from AWS Lambda here.

Breaking API Changes ⚠️

pkg\atom.go

  • Generating function runtime specs has changed.
  • Some constant thresholds have changed.

Resolves #20, #21

@cvetkovic cvetkovic requested a review from HongyuHe July 21, 2022 16:43
@cvetkovic cvetkovic requested review from ustiugov and removed request for HongyuHe July 21, 2022 16:43
pkg/trace/profile.go Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
cmd/load.go Show resolved Hide resolved
cmd/options/warmup.go Outdated Show resolved Hide resolved
pkg/generate/atom.go Outdated Show resolved Hide resolved
test.yaml Outdated Show resolved Hide resolved
workloads/container/trace_func_go.yaml Show resolved Hide resolved
scripts/util/scale_pod.sh Outdated Show resolved Hide resolved
cmd/options/warmup.go Show resolved Hide resolved
cmd/options/warmup.go Show resolved Hide resolved
@cvetkovic
Copy link
Contributor Author

cvetkovic commented Jul 21, 2022

Can we test if the branch is working before merging to make sure we haven't omitted anything in this whole process?

Also, the CI fails because data/traces/test is missing.

@cvetkovic cvetkovic linked an issue Jul 21, 2022 that may be closed by this pull request
Copy link
Member

@ustiugov ustiugov left a comment

Choose a reason for hiding this comment

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

The main readme contains a lot of useful information, thanks a lot!

I suggest shortening the main readme, moving the auxiliary script description to a separate doc in the docs/ folder (e.g., moving the health checking scripts there) but leaving a reference to that doc in the main readme.

More feedback will follow today.

README.md Outdated Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
Copy link
Member

@ustiugov ustiugov left a comment

Choose a reason for hiding this comment

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

I haven't finished my pass but I am going to continue working on it in next few days (probably Sunday). Please go ahead and apply comments from me and Lazar.

cmd/load.go Outdated Show resolved Hide resolved
cmd/load.go Outdated Show resolved Hide resolved
cmd/options/warmup.go Outdated Show resolved Hide resolved
cmd/options/warmup.go Outdated Show resolved Hide resolved
cmd/options/warmup.go Outdated Show resolved Hide resolved
pkg/trace/profile.go Show resolved Hide resolved
pkg/util.go Outdated Show resolved Hide resolved
@@ -59,5 +59,6 @@ server_exec() {
echo 'Done setting up monitoring components'

server_exec 'cd loader; bash scripts/setup/patch_init_scale.sh'
server_exec 'cd loader/data; wget -q -O traces.zip "https://www.dropbox.com/scl/fo/x4ct0kzzjnn6we7h31md4/h?dl=1&rlkey=llxj5f5i3uz9rvd9h3m573ueg" && unzip traces.zip -d traces'
Copy link
Member

Choose a reason for hiding this comment

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

we may want to have a tiny trace for running tests in CI. it should also be in Git LFS but separately from the main archive.

scripts/util/scale_pod.sh Outdated Show resolved Hide resolved
workloads/container/trace_func_go.yaml Show resolved Hide resolved
@HongyuHe
Copy link
Contributor

Thank you all!

Copy link
Member

@ustiugov ustiugov left a comment

Choose a reason for hiding this comment

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

When addressing comments for a PR with so many changes, please follow the following protocol, which would allow us to inspect every change carefully. For each comment each reviewer makes, (1) push the changes if needed, (2) respond to the comment so the reviewer can take a look and see if the reviewer agrees with the change, indicating that by resolving the comment. Since we are doing that with many comments in batches, this protocol should not cause much delay in finalizing the code.

pkg/function/deploy.go Outdated Show resolved Hide resolved
pkg/function/deploy.go Outdated Show resolved Hide resolved
Copy link
Member

@ustiugov ustiugov left a comment

Choose a reason for hiding this comment

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

ok, I finished my pass. Please address all the comments now, starting with the parser, then load generator, results parser, etc. Please stage it (i.e., one-two logical components at a time) so that we can parallelize implementation and code review efforts effectively.

I don't think I was able to scrutinize everything so we'll need to iterate after this PR is merged.

pkg/function/deploy.go Show resolved Hide resolved
@@ -0,0 +1,13 @@
#!/usr/bin/env bash
CONFIG_FILE=$1
Copy link
Member

Choose a reason for hiding this comment

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

as mentioned in deploy.go. this functionality should be written in Golang.

pkg/generate/atom.go Outdated Show resolved Hide resolved
pkg/generate/atom.go Outdated Show resolved Hide resolved
pkg/generate/atom.go Show resolved Hide resolved
pkg/generate/trace_load.go Show resolved Hide resolved
pkg/generate/atom.go Outdated Show resolved Hide resolved
pkg/generate/atom.go Show resolved Hide resolved
pkg/generate/atom.go Show resolved Hide resolved
pkg/generate/atom.go Outdated Show resolved Hide resolved
@HongyuHe
Copy link
Contributor

Thank you all. All suggestions applied, except for those I don't know how to.
Feel free to change anything

README.md Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
pkg/generate/atom.go Outdated Show resolved Hide resolved
pkg/generate/atom.go Outdated Show resolved Hide resolved
cvetkovic and others added 3 commits July 29, 2022 15:55
Copy link
Member

@ustiugov ustiugov left a comment

Choose a reason for hiding this comment

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

the commit LGTM

cvetkovic and others added 8 commits August 10, 2022 18:12
Signed-off-by: Lazar Cvetković <[email protected]>
Signed-off-by: Lazar Cvetković <[email protected]>
Signed-off-by: Lazar Cvetković <[email protected]>
Signed-off-by: Lazar Cvetković <[email protected]>
Signed-off-by: Lazar Cvetković <[email protected]>
Signed-off-by: Lazar Cvetković <[email protected]>
Signed-off-by: Lazar Cvetković <[email protected]>
@HongyuHe
Copy link
Contributor

Thanks everyone!

I've applied the suggestions except for those asking for more detailed documentation. I will add them gradually.

The PR is good to me as well!

Copy link
Member

@ustiugov ustiugov left a comment

Choose a reason for hiding this comment

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

This PR cannot be merged before the remaining comments are addressed. Most of them are really easy to address (just add appropriate comments).

Duration and memory characteristics choice logic has a bug. These issues have the highest priority to fix.

Also, if you need to argue with the review, please discuss potential concerns constructively.

cmd/load.go Show resolved Hide resolved
cmd/options/warmup.go Outdated Show resolved Hide resolved
cmd/options/warmup.go Outdated Show resolved Hide resolved
pkg/function/deploy.go Show resolved Hide resolved
pkg/generate/atom.go Outdated Show resolved Hide resolved
pkg/generate/trace_load.go Show resolved Hide resolved
pkg/test/warmup_test.go Show resolved Hide resolved
pkg/trace/model.go Show resolved Hide resolved
pkg/trace/parse.go Show resolved Hide resolved
pkg/trace/parse.go Show resolved Hide resolved
@ustiugov
Copy link
Member

ustiugov commented Aug 14, 2022

as far as I understand, this PR does not change the integration tests you wrote, it just runs them in the CI as opposed to locally. Please investigate why the tests break and fix them. If you have any questions on the github actions side, please let me know and I'd try to explain.

Copy link
Member

@ustiugov ustiugov left a comment

Choose a reason for hiding this comment

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

Excellent job! Thank you for improving the comments and readability and for adding a test for the parser.

I left quite minor comments but they should not take more than 30min to fix altogether.

README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
README.md Show resolved Hide resolved
pkg/generate/trace_load.go Show resolved Hide resolved
pkg/trace/parse.go Show resolved Hide resolved
pkg/trace/parse.go Outdated Show resolved Hide resolved
pkg/trace/parse.go Outdated Show resolved Hide resolved
scripts/setup/create_singlenode_container.sh Show resolved Hide resolved
@HongyuHe HongyuHe force-pushed the resolve_dev branch 2 times, most recently from d065c94 to 6ce03a7 Compare August 17, 2022 17:50
@ustiugov ustiugov merged commit f941ab1 into main Aug 17, 2022
@ustiugov ustiugov deleted the resolve_dev branch August 17, 2022 18:05
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.

Bug when running loader with mode trace Trace format mismatch
5 participants