Trong Lab này chứng minh rằng khối lượng công việc có thể được song song bằng cách chia nhỏ một object lớn thành nhiều phần hoặc bằng cách có các tệp nhỏ hơn.
aws configure set default.s3.max_concurrent_requests 1
aws configure set default.s3.multipart_threshold 64MB
aws configure set default.s3.multipart_chunksize 16MB

cat ~/.aws/config

dd if=/dev/urandom of=5GB.file bs=1 count=0 seek=5G

time aws s3 cp 5GB.file s3://${bucket}/upload1.test

aws configure set default.s3.max_concurrent_requests 2
time aws s3 cp 5GB.file s3://${bucket}/upload2.test

aws configure set default.s3.max_concurrent_requests 10
time aws s3 cp 5GB.file s3://${bucket}/upload3.test

aws configure set default.s3.max_concurrent_requests 20
time aws s3 cp 5GB.file s3://${bucket}/upload4.test

Tại một số điểm, AWS CLI sẽ giới hạn hiệu suất có thể đạt được. Điều này có thể xảy ra nếu bạn không thấy bất kỳ sự gia tăng hiệu suất nào từ 10 đến 20 luồng. Đây là một hạn chế của CLI, việc tăng số luồng lên 100 bằng cách sử dụng phần mềm khác sẽ tiếp tục tăng hiệu suất.

Dữ liệu cũng có thể được phân đoạn thành nhiều phần. Bước tiếp theo sẽ chứng minh việc di chuyển 5 GB dữ liệu bằng cách sử dụng nhiều tệp nguồn.
dd if=/dev/urandom of=1GB.file bs=1 count=0 seek=1G

time seq 1 5 | parallel --will-cite -j 5 aws s3 cp 1GB.file s3://${bucket}/parallel/object{}.test

Cờ -j là số lượng công việc đồng thời sẽ chạy. Điều này dẫn đến tổng số 100 luồng (20 từ cấu hình aws nhân với 5 công việc).


Trong Lab này cho thấy rằng khối lượng công việc có thể được song song bằng cách chia nhỏ một object lớn thành nhiều phần hoặc bằng cách có các tệp nhỏ hơn. Một điểm cân bằng cần lưu ý là mỗi PUT được lập hóa đơn ở mức 0,005 đô la cho mỗi 1.000 yêu cầu. Khi bạn chia nhỏ một tệp 5GB thành các phần 16MB, điều đó dẫn đến 313 PUT thay vì 1 PUT. Về cơ bản, bạn có thể xem nó như trả phí để đi nhanh hơn.