【发布时间】:2015-09-10 20:14:16
【问题描述】:
我正在开发一个需要搜索超大状态空间的应用程序。为了做到这一点,我已经获得了对具有 32 个核心的集群节点的访问权限。我的程序不需要太多内存(可能大约 10 兆字节),我也不需要做太多 IO(除了在找到某个文本文件时输出解决方案)。所以我的问题变成了:对我来说,编写一个程序比启动多个线程以并行执行搜索更好,还是与启动相同进程的实例一样,使得搜索空间在它们(用不同的命令行参数指定)?
在我的情况下,可以独立搜索空间,因此我不需要线程/进程之间的任何共享内存。我只关心搜索效率。值得注意的是,该程序可能需要运行数周至数月。请原谅我的无知,我是理论背景的。
【问题讨论】:
-
CentOS 6 - 将用 C/C++ 编写。
-
对于完美分区问题,使用线程和进程之间可能没有性能差异。使用任何你觉得更舒服的东西。不过,进程的一个优点是:如果单个工作线程崩溃,则只需重新启动该工作线程,而在多线程程序中,一个线程崩溃可能会导致一切崩溃。
-
从维护的角度来看,多进程通常也是要走的路。由于数据可以完美分区,因此更容易横向扩展至更多节点以获得额外性能。
-
多节点/进程正是 solr 云的设计方式。您的搜索可能不属于 solr 用例,但设计似乎相似。
标签: linux multithreading