Skip to content

Conversation

@dormanze
Copy link
Contributor

@dormanze dormanze commented Jun 24, 2025

Community Contribution License

All community contributions in this pull request are licensed to the project maintainers
under the terms of the Apache 2 license.
By creating this pull request I represent that I have the right to license the
contributions to the project maintainers under the Apache 2 license.

Description

When we execute mc mirror, it often affects the minio server container. Since our mc running node has many CPU resources, 128 threads are executed by default. At this time, it will have a great impact on the minio server container, occupying a large amount of CPU resources of the minio server container, affecting other normal businesses.

Motivation and Context

We hope that mc will support specifying the maximum number of concurrent threads when executing cp or mirror to prevent excessive resource consumption of the minio server container.

How to test this PR?

mc mirror local/test ./ --max-workers 1
test result:
image
When the maximum number of threads is not specified, the CPU usage of the MinIO container:
image
CPU usage of the Minio container when the maximum number of threads is specified:
image

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Optimization (provides speedup with no functional changes)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • Fixes a regression (If yes, please add commit-id or PR # here)
  • Unit tests added/updated
  • Internal documentation updated
  • Create a documentation update request here

Copy link
Contributor

@klauspost klauspost left a comment

Choose a reason for hiding this comment

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

Can't decide if it should be hidden. I will leave that to others.

Copy link
Contributor

@klauspost klauspost left a comment

Choose a reason for hiding this comment

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

lgtm. @ others - should the option be hidden?

@harshavardhana harshavardhana merged commit 8576e73 into minio:master Jul 2, 2025
5 checks passed
@dormanze dormanze deleted the max_work branch July 14, 2025 04:01
dormanze added a commit to dormanze/mc that referenced this pull request Jul 14, 2025
* 'ping' of https://github.com/dormanze/mc: (44 commits)
  mv:support set tag and checksum (minio#5133)
  ping: support ping a specified node and remove duplicate port printing (minio#5132)
  feat: add `--storage-class` option to `mc put` subcommand (minio#5228)
  mirror and cp support set the maximum number of threads (minio#5220)
  Some paths like url2Stat will send resource with backslashes on windows (minio#5226)
  Include ARN in "replicate list" output (minio#5215)
  Update build version (minio#5218)
  fix: add checks for nil HTTP in admin-trace matches func (minio#5216)
  remove fips 'mc' container Dockerfile
  Fix deletion of previously sync'd buckets and objects during mc-mirror (minio#5205)
  Add STATUS column to batch job list table output (minio#5202)
  fix: remove check if lock config exists before set (minio#5203)
  removing config cmd (minio#5201)
  fix: support chained mirror properly for delete propagation minio#4558 (minio#5197)
  Change support profile defaults (minio#5198)
  Explicitly set file permissions for admin-cluster-{bucket,iam}-export… (minio#5194)
  Add support for catalog batch job type (minio#5150)
  Add `idp openid accesskey` commands (minio#5182)
  feat: add deletemarker info for batch status (minio#5191)
  mirror: skip status message from excluded buckets (minio#5190)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants