在多台计算机上扩展多线程应用程序

Mat*_*ice 6 malloc performance multithreading scalability

我正在做一个项目我们需要更多的性能.随着时间的推移,我们不断改进设计,使其更加并行(包括线程和分布式).然后最新的一步是将其中的一部分移动到具有16个核心的新机器上.我发现我们需要重新思考如何在共享内存模型中扩展到那么多内核.例如,标准内存分配器不够好.

人们会推荐哪些资源?

到目前为止,我发现Sutter的专栏Dobbs博士是一个良好的开端.我刚刚获得了多处理器编程的艺术和关于英特尔线程构建模块的O'Reilly书籍

Chr*_*son 6

其他一些有用的书籍是:

另外,请考虑减少并发进程之间的共享状态.如果可以避免它,你会扩展得更好,更好,因为你将能够分割出独立的工作单元,而不必在它们之间进行同样多的同步.

即使您需要共享某些状态,也请查看是否可以将共享状态与实际处理分区.这将使您可以并行执行尽可能多的处理,而不必将已完成的工作单元集成回共享状态.显然,如果您在工作单元之间存在依赖关系,则此方法不起作用,但值得研究,而不是仅仅假设状态始终是共享的.