如何在不同的机器上计算python程序的性能

时间:2017-10-03 14:40:01

标签: python performance gpu cpu computation

我想知道可以用来在两个不同系统上查找python代码性能的不同性能特征。还可以在不同的机器上扩展其性能吗?这种东西有可能吗?

让我们假设两个系统中的一个是在GPU上计算而另一个在CPU上 我想在启用CPU的不同系统上扩展python代码的性能。

这可以通过分析得出吗?

1 个答案:

答案 0 :(得分:0)

根据我的经验,基于实际性能分析做出假设已足以识别初始实例大小/要求,然后使用实时遥测和仪器来密切监控这些解决方案。

我用过几种方式来改善表现(这些术语是我所构成的胡言乱语):

  • 瓶颈的非正式表征 这涉及非正式地了解应用程序可能存在的瓶颈,以便对容量/机器要求进行非常粗略的了解。如果您在几乎没有网络的情况下执行CPU绑定计算,那么可以绕过从网络优化实例开始。此外,如果您正在实现对文件系统的处理,并且内存开销非常小或有限,那么您不需要高内存实例。

  • 外部效果实验 这涉及创建性能测试工具以建立基线实验,允许您更改计算机变量以确定它们对程序性能的影响。我喜欢设置基于队列的吞吐量测试系统,即@ 10k请求/秒什么是队列饱和,什么是服务时间。它涉及将记录/遥测添加到代码以记录这些数字。还要设置积压工作,以了解单个实例处理积压的速度有多快。

对于HTTP,有许多工具可以生成负载。

希望有一个支持您输入格式的自动化工具,但如果没有,您可能需要自己编写。

  • 效果分析

我认为这使用“低级”工具来科学地(与非正式分析相对)确定代码花费时间的位置。通常需要使用python profiler来确定您花费时间的例程,然后尝试优化它们。 http://www.brendangregg.com/linuxperf.html

对于此步骤,如果性能测试工具具有可接受的性能,则可以忽略此项:p

  • 实时遥测 在确定了可接受的性能和实例大小之后,实时遥测对于了解程序如何实时执行到实际工作负载至关重要。
    我发现吞吐量,处理数量,错误等都对维护高性能系统至关重要: http://www.brendangregg.com/usemethod.html