我希望在这里找到一些帮助。
我们在测试环境中使用node,mongodb,supertest,mocha和spawn。
我们试图改进我们的mocha测试环境以并行运行测试,因为我们的测试用例现在运行了将近5分钟! (600例)
我们正在产生例如4个进程并且并行运行测试。它非常成功,但只是在Linux上 在我的Mac上,测试仍然运行得很慢。似乎不同的流程并没有真正并行运行。
MacOSX的:
- 并行运行9个测试:37s
- 不并行运行9次测试:41s
的Linux:
- 并行运行9次测试:16s
- 不并行运行9次测试:25s
10.9.2
16gb ram
核心i7 2,2ghz
物理处理器:1
核心:4
线程:8
的ubuntu
8gb ram
核心i5-2520M 2.5ghz
物理处理器:1
核心:2
线程:4
是否有提高macosx流程性能的提示? (ulimit,launchctl(maxfiles)除外?)
为什么测试在linux上运行得更快?
感谢, 凯特
答案 0 :(得分:2)
我在这里复制了我的评论,因为它描述了大部分答案。
鉴于你的机器的规格,我怀疑额外的8演出的ram,并且处理能力影响很大,特别是给定节点单一过程模型,并且你只启动了4个进程。我怀疑Linux机器8 gigs,2.5 ghz和4线程是一个瓶颈。因此,我实际上希望处理器运行测试的时间大致相当于两台机器。鉴于你正在运行mongo,我对你的磁盘I / O性能更感兴趣。您的磁盘I / O最有可能减慢速度。有什么规格?
您的规格: macosx:东芝5400RPM 8MB linux:希捷7200转16mb
您的Linux驱动器显着,比您的mac驱动器快1.33倍,并且具有更大的缓存。对于基于数据库的应用,硬盘性能至关重要。在您的应用程序中花费的大部分时间都将等待I / O,特别是在Nodes单一进程工作方法中。我建议将此作为90%性能差异的罪魁祸首,并将其余部分归结为linux可能在背景中减少垃圾,进一步加剧了Mac Disk Drive的性能问题。
此外,启动多个节点进程不太可能有助于此。由于处理器时间不是您的瓶颈,因此启动太多进程只会减慢磁盘速度。这就是问题的另一个证据就是linux上多个进程的性能比mac上的多个进程的性能要好。 1流程几乎可以最大限度地提高5400驱动器的性能,因此您不会发现运行多个流程会显着提高性能。而多个Linux节点进程使用磁盘充分发挥它的潜力。如果您要启动更多进程,您可能会看到Linux操作系统的回报递减,除非您当然要升级到SSD。