在多进程序列化文件时,我们面临着性能问题。
问题是:我们正在创建多个进程(在分布式计算环境中)来执行我们的计算,然后将每个进程的输出记录在一个文件中。主进程使用这些文件,将其合并到内存中,并进行进一步的计算。
我们限制了服务器的数量。在同一台服务器上可以创建2-3个进程。当这种情况发生时(2-3个进程在同一服务器上创建),我们就会遇到这样一个场景:这些进程试图同时在磁盘上写入\序列化计算文件(文件大小约为80-90MB)。当发生这种情况时,序列化文件大约需要3m。在正常情况下,80-90MB只需要30秒。
我们在性能监视器(和我们的日志计时)中监控了这个场景,可以看到由于2-3个进程同时尝试写入,它所需的时间大约是正常计时的6倍。
任何建议,以改善计时(3分钟的情况)是赞赏的。
我们使用.Net框架,代码是用c#编写的。
发布于 2014-06-16 19:20:34
您可以尝试强制进程写入不同的文件,然后只读取文件夹中的所有文件。例如,您可以具有以下结构
|-C:\experiments\current
|--- output_{UNIQUE_SUFFIX}.bin
|--- output_0.bin
|--- output_1.bin
|--- output_nwvpqnfj.bin
|--- output_jhfjqhfew.bin
https://stackoverflow.com/questions/24242378
复制相似问题