微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

严格的多个.NET进程的负载平衡

我有在Windows Server 2008 SE和64处理器上运行的多进程.NET(F#)科学模拟。 模拟的每一步都从1.5秒振荡到2秒。 由于每个进程必须等待其他进程,所以总体速度是最慢进程的速度(2秒*迭代次数)。 因此,我需要尽可能减less过程的振荡。

有没有办法如何强制一组进程具有完全相同的“计算时间”可用于他们的计算?

用于远程Web服务的Windows虚拟磁盘

转换.net EXE本地WIN32 EXE?

启动f#与Process.Start交互

Windows任务栏中search与我自己的结果

确定系统架构

我不知道我100%明白你想做什么。 但是对于进程间同步,您可以使用一个名为EventWaitHandle或Semaphore 。

更新每个评论

您可以使用ProcessorAffinity将进程限制到特定的处理器。

是否有可能平行2秒系列,以便你有多个模拟并行发生的“分支”?

例如:假设这是一个具有4个进程的模拟。 进程1需要2秒钟,所以直到进程1完成后才能完成。

process1---------------------------------------------- (2 sec) process2-------- (0.5 sec) process3---- (0.25 sec) process4---------------------------- (1 sec)

process1---------------------------------------------- (2 sec) process2-------- (0.5 sec) process3---- (0.25 sec) process4---------------------------- (1 sec)

在那里大部分进程正在等待进程1,这里有很多空闲时间。

对于您正在尝试的工作,是否可以同时运行多个这样的设备? 如果是这样的话,那么你可以通过其他模拟工具来利用你的空闲核心,同时等待你的长时间运行过程完成。

我不知道如何让操作系统尝试更公平地调度你的过程,但是我知道有很多关于避免你正在使用的体系结构的技术的研究,因为这个最低公因分母效应是一个主要的实践中的瓶颈。

我最喜欢的论文是Frigo和Strumpen 的多线程缓存遗忘算法的缓存复杂性 。 他们描述了诸如时空细分之类的引人入胜的技术,将大量并行计算(例如您所描述的计算)转换为任意精细的异步计算,从而使负载均衡变得毫不费力。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐