Skip to content

Commit 011d7d2

Browse files
committed
rollback
1 parent 181ef39 commit 011d7d2

1 file changed

Lines changed: 28 additions & 30 deletions

File tree

README.md

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# AWS C S3
1+
## AWS C S3
22

33
The AWS-C-S3 library is an asynchronous AWS S3 client focused on maximizing throughput and network utilization.
44

5-
## Key features:
5+
### Key features:
66

77
* **Automatic Request Splitting**: Improves throughput by automatically splitting the request into part-sized chunks and performing parallel uploads/downloads of these chunks over multiple connections. There's a cap on the throughput of single S3 connection, the only way to go faster is multiple parallel connections.
88
* **Automatic Retries**: Increases resilience by retrying individual failed chunks of a file transfer, eliminating the need to restart transfers from scratch after an intermittent error.
@@ -11,16 +11,16 @@ The AWS-C-S3 library is an asynchronous AWS S3 client focused on maximizing thro
1111
* **Thread Pools and Async I/O**: Avoids bottlenecks associated with single-thread processing.
1212
* **Parallel Reads**: When uploading a large file from disk, reads from multiple parts of the file in parallel. This is faster than reading the file sequentially from beginning to end.
1313

14-
## Documentation
14+
### Documentation
1515

1616
* [GetObject](docs/GetObject.md): A visual representation of the GetObject request flow.
1717
* [Memory Aware Requests Execution](docs/memory_aware_request_execution.md): An in-depth guide on optimizing memory usage during request executions.
1818

19-
## Configuration
19+
### Configuration
2020

21-
### Environment Variables
21+
#### Environment Variables
2222

23-
#### Memory Limit - `AWS_CRT_S3_MEMORY_LIMIT_IN_GIB`
23+
##### Memory Limit - `AWS_CRT_S3_MEMORY_LIMIT_IN_GIB`
2424

2525
The S3 client uses a buffer pool to manage memory for concurrent transfers.
2626

@@ -39,17 +39,15 @@ Example Usage:
3939
> };
4040
> ```
4141
42-
**Priority**: The configuration value takes precedence over the environment variable. If `memory_limit_in_bytes` is set to a non-zero value in the config, the environment variable is ignored.
42+
> [!NOTE]
43+
> * **Priority**: The configuration value takes precedence over the environment variable. If `memory_limit_in_bytes` is set to a non-zero value in the config, the environment variable is ignored.
44+
> * **Default Behavior**: If neither is set (config is 0 and environment variable is not set), the client sets a default memory limit based on the target throughput.
45+
> * The limit applies per client. If multiple clients created, limit will apply to each separately.
46+
> * The environment variable value must be a valid positive integer representing gigabytes (GiB).
47+
> * The value is converted from GiB to bytes internally (1 GiB = 1024³ bytes).
48+
> * Invalid values or overflow conditions will cause client creation to fail with `AWS_ERROR_INVALID_ARGUMENT`.
4349
44-
**Default Behavior**: If neither is set (config is 0 and environment variable is not set), the client sets a default memory limit based on the target throughput.
45-
46-
**Notes**:
47-
* The limit applies per client. If multiple clients created, limit will apply to each separately.
48-
* The environment variable value must be a valid positive integer representing gigabytes (GiB).
49-
* The value is converted from GiB to bytes internally (1 GiB = 1024³ bytes).
50-
* Invalid values or overflow conditions will cause client creation to fail with `AWS_ERROR_INVALID_ARGUMENT`.
51-
52-
#### Maximum Parts Pending Read - `AWS_CRT_S3_MAX_PARTS_PENDING_READ`
50+
##### Maximum Parts Pending Read - `AWS_CRT_S3_MAX_PARTS_PENDING_READ`
5351
5452
Controls the maximum number of parts that can be pending read from the input stream during a multipart upload. Higher values may improve upload throughput for large files by allowing more parts to be read in parallel, at the cost of higher memory usage.
5553
@@ -59,30 +57,30 @@ Example Usage:
5957
export AWS_CRT_S3_MAX_PARTS_PENDING_READ=20
6058
```
6159
62-
**Notes**:
63-
* Only affects multipart uploads. Small files that fit in a single part are not affected.
64-
* Setting this too low may introduce delays between reads, as the meta-request waits for the client to schedule more work.
65-
* Setting this too high may cause a single upload to hog work tokens, starving other concurrent uploads.
66-
* The value must be a positive integer (1–4294967295). Invalid or zero values are ignored with a warning, and the default is used.
67-
* The value is read once on first use and cached for the lifetime of the process.
60+
> [!NOTE]
61+
> * Only affects multipart uploads. Small files that fit in a single part are not affected.
62+
> * Setting this too low may introduce delays between reads, as the meta-request waits for the client to schedule more work.
63+
> * Setting this too high may cause a single upload to hog work tokens, starving other concurrent uploads.
64+
> * The value must be a positive integer (1–4294967295). Invalid or zero values are ignored with a warning, and the default is used.
65+
> * The value is read once on first use and cached for the lifetime of the process.
6866
69-
#### Test Bucket - `CRT_S3_TEST_BUCKET_NAME`
67+
##### Test Bucket - `CRT_S3_TEST_BUCKET_NAME`
7068
7169
The S3 bucket name used for running unit tests. See the [test_helper documentation](./tests/test_helper/) for setup instructions.
7270
73-
# License
71+
## License
7472
7573
This library is licensed under the Apache 2.0 License.
7674
77-
# Usage
75+
## Usage
7876
79-
## Building
77+
### Building
8078
8179
CMake 3.9+ is required to build.
8280
8381
`<install-path>` must be an absolute path in the following instructions.
8482
85-
### Linux-Only Dependencies
83+
#### Linux-Only Dependencies
8684
8785
If you are building on Linux, you will need to build aws-lc and s2n-tls first.
8886
@@ -96,7 +94,7 @@ cmake -S s2n-tls -B s2n-tls/build -DCMAKE_INSTALL_PREFIX=<install-path> -DCMAKE_
9694
cmake --build s2n-tls/build --target install
9795
```
9896
99-
### Building aws-c-s3 and Remaining Dependencies
97+
#### Building aws-c-s3 and Remaining Dependencies
10098
10199
```
102100
git clone git@github.com:awslabs/aws-c-common.git
@@ -136,7 +134,7 @@ cmake -S aws-c-s3 -B aws-c-s3/build -DCMAKE_INSTALL_PREFIX=<install-path> -DCMAK
136134
cmake --build aws-c-s3/build --target install
137135
```
138136
139-
### Running S3 sample
137+
#### Running S3 sample
140138
141139
After installing all the dependencies, and building aws-c-s3, you can run the sample directly from the s3 build directory.
142140
@@ -158,7 +156,7 @@ To list objects:
158156
aws-c-s3/build/samples/s3/s3 ls s3://<bucket-name> --region <region>
159157
```
160158
161-
# Testing
159+
## Testing
162160
163161
The unit tests require an AWS account with S3 buckets set up in a particular way.
164162
Use the [test_helper script](./tests/test_helper/) to set this up.

0 commit comments

Comments
 (0)