首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么没有一个好的加速比与pytest-xdist并行测试?

为什么没有一个好的加速比与pytest-xdist并行测试?
EN

Stack Overflow用户
提问于 2014-04-19 15:52:22
回答 1查看 444关注 0票数 5

我在我的Macbook上使用python setup.py test --parallel N选项运行python setup.py test --parallel N(4个真实的内核,固态磁盘),它使用吡啶-xdist并行运行~ 8000测试。

我在1到10的范围内尝试了不同的N,但在所有情况下我只能获得大约2的速度,但我希望在3到4的范围内得到加速(因为运行测试应该是CPU限制的)。

为什么加速比很低,我怎样才能得到好的加速比(在一台计算机上使用多个核心)?

更新

我尝试了@Iguananaut:diskutil erasevolume HFS+ 'ramdisk' hdiutil attach -nomount ram://8388608 mkdir /Volumes/ramdisk/tmp time python setup.py test -a '--basetemp=/Volumes/ramdisk/tmp' --parallel 8的ramdisk建议,与SSD相比,现在的加速比是2.2,而不是2.0。因为我有四个物理核心,所以我期望在3到4之间有一些东西。也许由于某种原因,并行运行测试的开销非常大。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-21 03:43:02

我怀疑SSD是其中的限制因素。许多测试都是CPU绑定的,但同样多的是大量使用磁盘-临时文件等等。通过并行运行,这些可能会变得更慢。除此之外,很难多说,因为这取决于你的环境的具体情况。我得到了显着的加速,在六个核心上运行测试。不完全是6倍,但它确实产生了影响。

您可能尝试的一件事是将ramdisk设置为临时目录。您可以使用diskutil在OSX中完成此操作。如果你不确定,你可以在谷歌上搜索如何做到这一点。那么您应该能够运行./setup.py test -A '--basetemp=path/to/ramdisk'了。实际上,我还没有在Astropy测试中尝试过这一点,也不确定它将如何工作。但是,如果它确实起作用,它至少会在某种程度上帮助排除I/O作为瓶颈的可能性。

尽管如此,我还是故意犹豫到底会有多大帮助。即使使用ramdisk--现在RAM的速度正成为I/O绑定测试的瓶颈。不管您拥有多少CPU,所有的CPU绑定测试都可以立即完成,I/O绑定测试也不会变得更快,所以您仍然需要等待同样长的时间(或者几乎与它们完成的时间一样长)。对于多进程,进程之间的消息传递也会增加额外的开销--具体的执行方式取决于许多因素,但最有可能的是通过一些共享内存。任何阅读这篇文章的人都无法知道您的计算机上正在运行哪些其他进程,这些进程可能正在争夺这些相同的资源。即使您的系统监视器没有显示出大量使用CPU的任何东西,但这并不意味着没有进程在执行其他会增加瓶颈的事情。

我不会太在意你扔给它的速度和你扔它的次数成正比,特别是在笔记本电脑上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23172146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档