下载多个文件:最佳性能解决方案

时间:2016-11-08 18:53:47

标签: multithreading c++11 asynchronous amazon-s3 parallel-processing

我正在编写一个应用程序,它需要从远程位置(例如,S3存储桶)读取数千个(比如说10000个)小文件(比如说4KB)。

从远程读取单次大约需要0.1秒,处理文件只需几毫秒(从10到30)。在性能方面哪个是最佳解决方案?

  • 我能做的更糟糕的是连续下载所有内容:0.1 * 10000 = 1000秒(约16分钟)。
  • 压缩一个大文件肯定会有所帮助,但它不是我的应用程序中的一个选项。
  • 我尝试生成N个线程(其中N是逻辑核心数),每个线程下载并处理10000个/ N个文件。这给了我10000 / N * 0.1秒。如果N = 16,则确实需要大约1分钟才能完成
  • 我也试图产生K * N个线程(这有时候会在高延迟系统上有所帮助,因为GPU)但我没有为任何K值加速(我试过2,3,4),可能是由于很多上下文线程切换。

我的一般问题是:你会如何设计这样一个类似的系统? 1分钟真的是我能做到的最好吗?

谢谢你, 朱塞佩

0 个答案:

没有答案