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

Reduce memory usage for chunked artifact uploads to MinIO #31325

Merged
merged 3 commits into from
Jun 12, 2024

Conversation

bohde
Copy link
Contributor

@bohde bohde commented Jun 11, 2024

When using the MinIO storage driver for Actions Artifacts, we found that the chunked artifact required significantly more memory usage to both upload and merge than the local storage driver. This seems to be related to hardcoding a value of -1 for the size to the MinIO client which has a warning about memory usage in the respective docs. Specifying the size in both the upload and merge case reduces memory usage of the MinIO client.

When specifying a filesize of -1, the MinIO client uses significantly
more memory during upload. Since we know the file size ahead of time,
use that to avoid the extra allocations.
@GiteaBot GiteaBot added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label Jun 11, 2024
@pull-request-size pull-request-size bot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Jun 11, 2024
@github-actions github-actions bot added modifies/api This PR adds API routes or modifies them modifies/go Pull requests that update Go code labels Jun 11, 2024
@GiteaBot GiteaBot added lgtm/need 1 This PR needs approval from one additional maintainer to be merged. and removed lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. labels Jun 11, 2024
@silverwind silverwind added lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. backport/v1.22 This PR should be backported to Gitea 1.22 and removed lgtm/need 1 This PR needs approval from one additional maintainer to be merged. labels Jun 11, 2024
Copy link
Contributor

@kdumontnu kdumontnu left a comment

Choose a reason for hiding this comment

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

💯

@GiteaBot GiteaBot added lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. and removed lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. labels Jun 11, 2024
@delvh delvh changed the title perf: reduce memory usage for chunked artifact uploads to MinIO Reduce memory usage for chunked artifact uploads to MinIO Jun 11, 2024
@delvh delvh added the performance/memory Performance issues affecting memory use label Jun 11, 2024
@lunny lunny added the reviewed/wait-merge This pull request is part of the merge queue. It will be merged soon. label Jun 12, 2024
@lunny lunny enabled auto-merge (squash) June 12, 2024 05:14
@lunny
Copy link
Member

lunny commented Jun 12, 2024

Please update the branch.

@lunny lunny merged commit 45dbeb5 into go-gitea:main Jun 12, 2024
26 checks passed
@GiteaBot GiteaBot added this to the 1.23.0 milestone Jun 12, 2024
GiteaBot pushed a commit to GiteaBot/gitea that referenced this pull request Jun 12, 2024
…1325)

When using the MinIO storage driver for Actions Artifacts, we found that
the chunked artifact required significantly more memory usage to both
upload and merge than the local storage driver. This seems to be related
to hardcoding a value of `-1` for the size to the MinIO client [which
has a warning about memory usage in the respective
docs](https://pkg.go.dev/github.com/minio/minio-go/v7#Client.PutObject).
Specifying the size in both the upload and merge case reduces memory
usage of the MinIO client.

Co-authored-by: Kyle D <[email protected]>
@GiteaBot GiteaBot added backport/done All backports for this PR have been created and removed reviewed/wait-merge This pull request is part of the merge queue. It will be merged soon. labels Jun 12, 2024
silverwind pushed a commit that referenced this pull request Jun 12, 2024
…31338)

Backport #31325 by @bohde

When using the MinIO storage driver for Actions Artifacts, we found that
the chunked artifact required significantly more memory usage to both
upload and merge than the local storage driver. This seems to be related
to hardcoding a value of `-1` for the size to the MinIO client [which
has a warning about memory usage in the respective
docs](https://pkg.go.dev/github.com/minio/minio-go/v7#Client.PutObject).
Specifying the size in both the upload and merge case reduces memory
usage of the MinIO client.

Co-authored-by: Rowan Bohde <[email protected]>
Co-authored-by: Kyle D <[email protected]>
zjjhot added a commit to zjjhot/gitea that referenced this pull request Jun 13, 2024
* giteaofficial/main:
  Fixed incorrect localization `explorer.go` (go-gitea#31348)
  Improve detecting empty files (go-gitea#31332)
  Fix hash render end with colon (go-gitea#31319)
  Fix line number widths (go-gitea#31341)
  Fix navbar `+` menu flashing on page load (go-gitea#31281)
  Reduce memory usage for chunked artifact uploads to MinIO (go-gitea#31325)
  Fix dates displaying in a wrong manner when we're close to the end of the month (go-gitea#31331)
  Fix adopt repository has empty object name in database (go-gitea#31333)
  Optimize profile layout to enhance visual experience (go-gitea#31278)
@go-gitea go-gitea locked as resolved and limited conversation to collaborators Sep 10, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
backport/done All backports for this PR have been created backport/v1.22 This PR should be backported to Gitea 1.22 lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. modifies/api This PR adds API routes or modifies them modifies/go Pull requests that update Go code performance/memory Performance issues affecting memory use size/XS Denotes a PR that changes 0-9 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants