这是我的情况: 我的公司需要对大量的测试样品进行测试。但是如果我们在Windows PC机上启动一个进程,这个测试可能会持续数小时,甚至几天。所以我们尝试拆分测试集并启动一个进程来测试多核linux服务器上的每个切片。
我们希望服务器解决方案的线性性能提升,但事实是,当测试任务完成时,我们只能观察到 2~3倍的改进 > 10~20个过程。
我尝试了几种方法来找到问题:
但没有运气,问题仍然存在。
为什么会这样?这是根本原因,我们的代码,操作系统还是硬件?
这是我的电脑和服务器的信息:
PC:os:win10; cpu:i5-4570,2物理核心; mem:16gb
server:os:redhat 6.5 cpu:E5-2630 v3,2个物理核心; mem:32gb
关于CPU:服务器有2个处理器,每个处理器有8个物理内核。查看this link了解详情。
关于我的测试:它的手写识别相关(这就是为什么它是一个cpu敏感的任务)。
关于IO:如果记录不计算,性能检查点不涉及太多IO。
答案 0 :(得分:0)
我们希望服务器解决方案能够实现线性性能提升, 但事实是我们只能观察到2到3倍的改善 测试任务由10~20个过程完成。
考虑到系统上只有2个核心,这似乎很合乎逻辑。由于任务切换,启动10-20个进程只会增加一些开销。
此外,如果多个进程同时从磁盘读取,I / O也可能成为瓶颈。
理想情况下,运行线程的数量不应超过内核数量的2倍。