awslabs / awslabs/aws-sdk-rust

Performance issues with AWS Smithy HTTP Client stack

Open
#1,349 4 comments 3 reactions 0 assignees View on GitHub
feature-request p2
Dominant language
Rust
Stars
3.3k
Forks
290
Avg merge
1d 12h
Merged PRs (30d)
3

Description

### Describe the feature

# What: Performance limitations
When implementing the AWS S3 Rust crate for S3 access on version 1.103+ (aws-sdk-s3
v1.104.0), there are performance limitations.

## Proof of Issue
How do we prove a negative? By comparing to something else.
### Test case A
Using the MinIO warp s3 testing tool, I have achieved line rate read (get) speed, on a single client over a single 100 Gb NIC. Specifically, I can repeatedly achieve 11.5 GiB/s and up to 12 GiB/s with a specific setup to local S3 compatible storage.
### Test case B
Using the AWS sdk Rust stack (directly utilizing the AWS S3 crate version 1.103 and later), we are unable to achieve greater than 5.5 GiB read (get) speeds. This is using the IDENTICAL client system, IDENTICAL storage system, IDENTICAL network, etc. etc.

## Details
After investigations using flame-graph to investigate, it is apparent that there are issues, which appear to occur in the AWS Smithy HTTP Client stack. There are few public options in this crate, but even after forking a copy and modifying private functions and structs to become public for modification, full performance was not achieved.

### Use Case

The use case is ANY S3 use case where high-performance is desired.

### Proposed Solution

Fix the HTTP client software stack.

### Other Information

_No response_

### Acknowledgements

- [ ] I may be able to implement this feature request
- [ ] This feature might incur a breaking change

### A note for the community

### Community Note
* Please vote on this issue by adding a 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to the original issue to help the community and maintainers prioritize this request
* Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
* If you are interested in working on this issue, please leave a comment

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the reported comparison between MinIO warp S3 and aws-sdk-s3 v1.103+ on the identical client, storage, and network setup, then profile the AWS Smithy HTTP Client stack with flame-graph as described. Done means identifying the limiting component and demonstrating materially improved S3 GET throughput against the reported 5.5 GiB/s ceiling.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, rust
Domain
backend, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.