У меня есть EBS (эластичное блочное хранилище) на AWS с большим количеством файлов размером 25 ГБ (1000). Я хотел бы рассчитать сумму SHA256 для каждого файла.
Какой экземпляр EC2 лучше всего подходит для такой задачи (оптимизирован для ЦП? Оптимизировано много ядер? Оптимизировано хранилище?). Можно как-то параллельно хешировать файлы? Как я могу оптимизировать производительность?
Вы будете бороться с пропускной способностью EBS.
Меньшие экземпляры m5 / m5a / m6g иметь до 4750 Мбит / с EBS = около 600 МБ / с макс. Более крупные экземпляры, такие как m5.24xlarge может достигать 19 000 Мбит / с или 2,4 ГБ / с. Но только в том случае, если ваш том EBS может с этим справиться, т. Е. Для поддержания этой пропускной способности, вероятно, потребуется том, оптимизированный для IOPS (тип io1).
Это означает, что ваши 25 ТБ данных (1000 файлов по 25 ГБ каждый) могут быть прочитаны из EBS где-то от 3 до 12 часов в идеальных условиях. На самом деле, вероятно, будет медленнее. И это просто чтение файлов.
ЦП на самом деле не имеет значения - любой ЦП может выполнять sha256 на этой скорости, поэтому используйте более дешевую архитектуру, такую как M6g (на основе ARM), и если она поставляется с несколькими ядрами (например, m6g.xlarge
с 4 ядрами ЦП) вы можете хэшировать 4 файла параллельно. Хотя это может не сократить время в 4 раза, как можно было бы ожидать, из-за узкого места в пропускной способности EBS.
я буду купить m6g.4xlarge
как Спотовый экземпляр и ожидайте, что на хеширование файлов уйдет день. Если ваш EBS находится в регионе, где M6g (ARM) недоступен, используйте M5a (AMD) - он дешевле, чем M5 (Intel), и все же достаточно мощный для хеширования.
Надеюсь, это поможет :)