Skip to content

rgw/op: RGWPutObj uses async_md5 for ETag#52488

Closed
cbodley wants to merge 10 commits intoceph:mainfrom
cbodley:wip-rgw-async-md5
Closed

rgw/op: RGWPutObj uses async_md5 for ETag#52488
cbodley wants to merge 10 commits intoceph:mainfrom
cbodley:wip-rgw-async-md5

Conversation

@cbodley
Copy link
Contributor

@cbodley cbodley commented Jul 17, 2023

based on #52385 (which itself is based on #51573 and #50064) and steals some commits from #51084 to share the beast frontend's context pool with the rest of rgw

adds a single instance of ceph::async_md5::Batch to rgw::AppMain that runs on a strand of the thread pool. RGWPutObj uses this instead of ceph::crypto::MD5 to calculate the object's ETag

TODO:

  • allow async_hash() to run in parallel with filter->process()
  • avoid calling async_hash() at the end with an empty buffer by passing last=true with the final buffer we receive
  • consider running extra Batches (either as separate strands, or on their own background threads) to utilize more cpu cores
  • tune batch_timeout
Show available Jenkins commands
  • jenkins retest this please
  • jenkins test classic perf
  • jenkins test crimson perf
  • jenkins test signed
  • jenkins test make check
  • jenkins test make check arm64
  • jenkins test submodules
  • jenkins test dashboard
  • jenkins test dashboard cephadm
  • jenkins test api
  • jenkins test docs
  • jenkins render docs
  • jenkins test ceph-volume all
  • jenkins test ceph-volume tox
  • jenkins test windows

@github-actions
Copy link

github-actions bot commented Aug 2, 2023

This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved

@liu-chunmei
Copy link
Contributor

@cbodley Hi Casey, is this PR updated recently or is there new PR? can we use it to do performance testing? Any bug existing to block testing? do you implement new features? and any performance result can share for the PR?

@cbodley
Copy link
Contributor Author

cbodley commented Oct 20, 2023

@cbodley Hi Casey, is this PR updated recently or is there new PR? can we use it to do performance testing? Any bug existing to block testing? do you implement new features? and any performance result can share for the PR?

hey, sorry i haven't followed up on this. the base pr still has a crash bug. i added a comment in #52385 (comment) with what i've learned about that

@github-actions
Copy link

This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved

cbodley and others added 10 commits December 20, 2023 20:24
instead of building isa-l_crypto source files directly into the
ceph_crypto_isal plugin, use a cmake ExternalProject to build the
library with make and expose the static library as cmake target
ISAL::Crypto

Signed-off-by: Casey Bodley <cbodley@redhat.com>
builds an asynchronous batching library on top of the isal crypto
library's multi-buffer md5 facilities:

> The MD5 CTX interface functions are available for 4 architectures: SSE, AVX, AVX2 and
> AVX512. In addition, a multibinary interface is provided, which selects the appropriate
> architecture-specific function at runtime.

Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Just because this is what Ceph's config uses and it saves a narrowing
conversion. If we want to set a max value on the thread count, we
should do it in config.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Add overloads of the constructor and `start` that take an init
function, for setting up the thread before dropping into
`io_context::run`.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Pull the `io_context` and threads out of `AsioFrontend`, pass in a
reference to `io_context_pool` so it can be shut down at `AsioFrontend::join`

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
track the average number of hashes per batch and the number of batch
timeouts

Signed-off-by: Casey Bodley <cbodley@redhat.com>
@github-actions
Copy link

This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved

@github-actions
Copy link

This pull request has been automatically marked as stale because it has not had any activity for 60 days. It will be closed if no further activity occurs for another 30 days.
If you are a maintainer or core committer, please follow-up on this pull request to identify what steps should be taken by the author to move this proposed change forward.
If you are the author of this pull request, thank you for your proposed contribution. If you believe this change is still appropriate, please ensure that any feedback has been addressed and ask for a code review.

@github-actions github-actions bot added the stale label Mar 24, 2024
@github-actions
Copy link

This pull request has been automatically closed because there has been no activity for 90 days. Please feel free to reopen this pull request (or open a new one) if the proposed change is still appropriate. Thank you for your contribution!

@github-actions github-actions bot closed this Apr 23, 2024
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