Вы не хотите осуществлять потоковую передачу напрямую с /dev/urandom
, потому что это на самом деле ограничено ЦП, а не ограничено вводом-выводом (это можно увидеть, запустив top
при использовании dd
для потоковой передачи случайных данных в файл или путем сравнения времени для копирования существующего файла объемом 1 ГБ, которого еще нет в кеше диска).
Используя Boto3, вы хотите: create_multipart_upload , чтобы начать загрузку, upload_part , чтобы отправить каждую часть, и complete_multipart_upload , чтобы завершить загрузку. Вы можете либо передать файл или байтовый массив в upload_part
, так что вы можете либо сгенерировать байтовый массив, используя встроенный генератор случайных чисел (который будет достаточно случайным, чтобы избежать сжатия GZip), либо повторно прочитать тот же файл ( в аналогичных тестах я использую файл объемом 1 ГБ, содержащий данные из urandom - Gzip не даст вам никакого сжатия в таком большом пространстве ввода).
Однако все упражнение бессмысленно. Если у вас нет гигабитного канала непосредственно в магистрали Интернета, AWS будет работать быстрее вашей сети. Таким образом, все, что вы на самом деле тестируете, это то, как быстро ваша сеть может проталкивать байты в Интернет, и есть множество сайтов «скоростного тестирования», которые сообщают вам эту пропускную способность. Кроме того, вы не узнаете намного больше, отправляя 1 ТБ, чем отправку 1 ГБ: весь смысл S3 в том, что он может обрабатывать что угодно .