我们在通过多个进程序列化文件时遇到性能问题。
以下是问题: 我们正在创建多个进程(在分布式计算环境中)来进行计算,然后在文件中写下每个进程的输出。主进程使用这些文件,将其合并到内存中并进行进一步计算。
我们没有限制服务器。发生的事情是可以在同一服务器中创建2-3个进程。当发生这种情况时(在同一服务器中创建2-3个进程),我们遇到的情况是这些进程尝试同时在磁盘上写入\ serialize computed文件(文件大小约为80-90 MB)。发生这种情况时,序列化文件大约需要3米。在正常情况下,80-90 MB只需30秒。
我们在性能监视器(以及我们的日志时序)中监视了这种情况,并且可以看到因为2-3个进程同时尝试写入,它比正常时间长约6倍。
任何改善时间(3分钟情景)的建议都值得赞赏。
我们使用.Net框架,代码用c#编写。
答案 0 :(得分:-1)
您可以尝试强制进程写入不同的文件,然后只读取文件夹中的所有文件。例如,您可以使用以下结构
|-C:\experiments\current
|--- output_{UNIQUE_SUFFIX}.bin
|--- output_0.bin
|--- output_1.bin
|--- output_nwvpqnfj.bin
|--- output_jhfjqhfew.bin