2013-05-03 42 views
-1

我有执行各种任务的一小多核服务器,其中大部分是多线程的,已圆满速度调整。然而,某些任务依靠现有单线程应用程序,偶尔阻断时间敏感的批处理过程的性能(作为一个具体的例子,即通过bzip2的流数据库系统的一个偶然的转储,单线程过程中,将锁定整个转储过程中的某些数据库记录可能需要7-10小时,干扰其他数据库操作)。很显然,有没有办法通过本地其他多个CPU上运行单线程程序,而不是与原项目的多线程叉代替它。有几种多线程替代bzip2。但是,还有一些其他有问题的单线程应用程序,我宁愿减少需要维护和测试的服务器上的应用程序数量。为此,我正在寻找一种通用解决方案来在现有硬件上运行退出的单线程应用程序(即一个基本上将细分和重组指令集跨越多个处理器的抽象程序)。我曾考虑过虚拟化解决方案,但对这些工具几乎没有经验,似乎也找不到满足上述用例的功能。请注意,现有的硬件是64位的,能够虚拟化并运行非BSD Linux。如何“逼”单线程遗留应用到使用多个处理器

非常感谢!

回答

2

你不能让一个单线程应用程序的多线程。它不这样工作。 你可以做的是集群单线程应用程序 - 即同时运行它们的多个副本。

这方面的例子可以看出用的node.js - 甲单线程事件驱动的Java脚本基于环境。有一些工具,如http://learnboost.github.io/cluster/集群,它将管理节点集群的多个实例并平衡它们之间的工作。

通过运行多个副本,您将有一个单独的进程,每个实例然后将运行在不同的核心上。

+0

感谢您的快速回复。认为它是在黑暗中拍摄的。看起来它将成为代码和维护路线。我会给出一些时间用于其他输入,但会确保标记答案。再次感谢。 – WMX 2013-05-03 16:15:44

相关问题