【发布时间】:2020-08-31 13:39:11
【问题描述】:
我需要优化我正在开发的应用程序,但我无法在我的开发机器上获得可靠的分析数据。该应用程序应该在 QNX 上的低端 ARM 硬件上运行,但出于逻辑原因,我无法访问最终硬件进行分析。
我尝试在我的开发机器上进行分析,但正如您所想象的那样,一切都如此之快,以至于我无法确定慢速部分。我创建了一个减少内存和 CPU 内核数的 Linux 虚拟机,但与最终硬件相比,它们仍然太快了。
是否可以降低虚拟机中的 CPU 时钟速度/内存速度/磁盘速度来模拟低性能硬件,或者有没有其他方法可以在我的开发机器上获取相关的分析数据?
考虑到应用正在处理数 GB 的数据我认为磁盘访问是主要瓶颈,限制磁盘速度可能会有所帮助
我可以使用在 Windows/Linux/MacOS 上运行在真实或虚拟机上的任何(与大多数开源和商业可用的)工具/方法。
【问题讨论】:
-
虽然处理了千兆字节的数据,但您的应用程序运行速度如此之快,以至于您的分析器无法获得足够的样本来帮助您?奇怪的!您使用什么语言/工具?
-
@RalfKleberhoff 它获得了样本,但样本来自我的开发 PC,与最终硬件无关。我的开发 PC 有 AMD 3950X CPU、PCIE4 M.2 驱动器和 96GB 的 RAM。使用这个系统,我无法可靠地分析最终硬件的瓶颈是 CPU、内存还是磁盘访问。
-
很难在如此不同的环境中分析应用程序(你的开发机器是 x86+linux/win,你的目标是 arm+qnx)。有一些虚拟机,如 qemu 或 bochs,但它们不是周期精确的。 qemu 在 x86 上模拟 arm 会更慢,bochs 很慢但只会模拟 x86。有针对 x86 的循环建模模拟器,例如 ptlsim 和 MARSSx86;并且有支持 arm (raw.githubusercontent.com/arm-university/arm-gem5-rsk/master/…) 的 gem5 模型。您的目标核心和存储设备是什么?您还可以尝试在一些 Raspberry Pi SBC 上进行分析。
标签: performance profiling