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

perf(action): Filter out pre-cached images #98

Merged
merged 1 commit into from
Sep 5, 2022
Merged

perf(action): Filter out pre-cached images #98

merged 1 commit into from
Sep 5, 2022

Conversation

mwarres
Copy link
Contributor

@mwarres mwarres commented Aug 2, 2022

Fixes #45.

Only save relevant Docker images. Improve performance when run as root, e.g., in Test workflow, the Save Cache job ran for approximately 5 minutes and now runs in less than 10 seconds. The Restore Cache job ran in approximately 40 seconds and now runs in less than 10 seconds. Previously, unnecessary Docker images were saved because GitHub Actions pre-caches a standard set of Docker images when Docker runs as root; those images aren't accessible when using rootless-docker, so this change doesn't impact users of rootless-docker.

@mwarres mwarres requested a review from Kurt-von-Laven August 2, 2022 01:40
@mwarres mwarres self-assigned this Aug 2, 2022
Copy link
Contributor

@Kurt-von-Laven Kurt-von-Laven left a comment

Choose a reason for hiding this comment

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

Good work! It's probably worth another pass with fresh eyes after addressing review feedback to double check that all of the proper assertions were actually added since tests don't fail by themselves.

src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
src/docker.ts Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
src/integration.test.ts Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
Copy link
Contributor

@Kurt-von-Laven Kurt-von-Laven left a comment

Choose a reason for hiding this comment

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

Lots of great progress here. Good to see more asserts working their way in. This is getting close to landing.

src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
Copy link
Contributor

@Kurt-von-Laven Kurt-von-Laven left a comment

Choose a reason for hiding this comment

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

Good progress!

src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
@mwarres mwarres changed the title perf(action): Eliminate unnecessary caching perf(action): Filter out pre-cached images Aug 7, 2022
@mwarres mwarres requested a review from Kurt-von-Laven August 7, 2022 01:10
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Show resolved Hide resolved
Copy link
Contributor Author

@mwarres mwarres left a comment

Choose a reason for hiding this comment

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

Note: I haven't divided the PR into separate PRs yet but will do so after the other issues with this PR are addressed satisfactorily.

src/docker.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Show resolved Hide resolved
@mwarres mwarres requested a review from Kurt-von-Laven August 8, 2022 23:28
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Show resolved Hide resolved
src/integration.test.ts Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
@Kurt-von-Laven
Copy link
Contributor

Kurt-von-Laven commented Aug 10, 2022

Consider quantifying the approximate performance improvement of this change on the test workflow in the commit message.

Copy link
Contributor

@Kurt-von-Laven Kurt-von-Laven left a comment

Choose a reason for hiding this comment

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

Commit message: when documenting performance it's useful it say the approximate runtime before and after the change since there's a huge difference between making a 1-hour job 1 minute faster and making a 2-minute job 1 minute faster. Consider "in test workflow: the" --> "in the test workflow, the" (or "in Test workflow, the").

src/integration.test.ts Show resolved Hide resolved
src/docker.test.ts Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
@mwarres mwarres force-pushed the action branch 2 times, most recently from b37a43a to c4f1b66 Compare August 23, 2022 15:19
poetry.lock Outdated Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/util.ts Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Show resolved Hide resolved
src/docker.test.ts Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
src/docker.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
@mwarres mwarres force-pushed the action branch 2 times, most recently from c878b70 to 5bb6ebc Compare August 29, 2022 04:25
@mwarres mwarres requested a review from Kurt-von-Laven August 29, 2022 04:29
src/integration.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Show resolved Hide resolved
src/util.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/util.test.ts Outdated Show resolved Hide resolved
src/util.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Show resolved Hide resolved
src/integration.test.ts Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/docker.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Outdated Show resolved Hide resolved
src/integration.test.ts Show resolved Hide resolved
Only save relevant Docker images. Improve performance when run as root,
e.g., in Test workflow, the Save Cache job ran for approximately 5
minutes and now runs in less than 10 seconds. The Restore Cache job ran
in approximately 40 seconds and now runs in less than 10 seconds.
Previously, unnecessary Docker images were saved because GitHub Actions
pre-caches a standard set of Docker images when Docker runs as root;
those images aren't accessible when using rootless-docker, so this
change doesn't impact users of rootless-docker.
Copy link
Contributor

@Kurt-von-Laven Kurt-von-Laven left a comment

Choose a reason for hiding this comment

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

LGTM No further questions your honor. Congratulations on finishing this one!

@mwarres mwarres merged commit dc8862c into main Sep 5, 2022
@mwarres mwarres deleted the action branch September 5, 2022 06:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

Restoring the cache takes longer than running docker pull
2 participants