我在 AWS 上有一个带有大量 25GB 文件(1000 个)的 EBS(弹性块存储)。我想为每个文件计算一个 SHA256 和。
哪个 EC2 实例最适合此类任务(cpu 优化?许多内核?存储优化?)。我可以以某种方式并行散列文件吗?如何优化性能?
我在 AWS 上有一个带有大量 25GB 文件(1000 个)的 EBS(弹性块存储)。我想为每个文件计算一个 SHA256 和。
哪个 EC2 实例最适合此类任务(cpu 优化?许多内核?存储优化?)。我可以以某种方式并行散列文件吗?如何优化性能?
您将在 EBS 吞吐量方面苦苦挣扎。
较小的 m5 / m5a /m6g 实例具有高达 4,750 Mbps EBS 吞吐量= 大约 600 MB/s 最大值。像m5.24xlarge这样的大型实例可以达到 19,000 Mbps 或 2.4 GB/s。但前提是您的 EBS 卷可以处理它,即它可能必须是 IOPS 优化卷(io1 类型)才能维持此吞吐量。
这意味着在理想条件下,可以在 3 小时到 12 小时之间从 EBS 读取 25TB 数据(1000 个文件 x 每个 25 GB)。实际上它可能会更慢。那只是读取文件。
CPU 并不重要——任何 CPU 都可以以这种速度执行 sha256,因此请使用更便宜的架构,如 M6g(基于 ARM),如果它带有多个内核(例如
m6g.xlarge
,具有 4 个 CPU 内核),您可以并行散列 4 个文件。尽管由于 EBS 吞吐量瓶颈,这可能不会像您预期的那样将时间减少 4 倍。我会以Spot 实例的形式购买
m6g.4xlarge
,并预计需要一天的时间来散列文件。如果您的 EBS 位于无法使用 M6g (ARM) 的区域,请使用 M5a (AMD) - 它比 M5 (Intel) 便宜,并且对于散列仍然足够强大。希望有帮助:)