用于性能分析的低硬件仿真

Posted

技术标签:

【中文标题】用于性能分析的低硬件仿真【英文标题】:Low hardware simulation for performance profiling 【发布时间】: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 上进行分析。 【参考方案1】:

URL 描述了如何限制 VirtualBox 映像上的磁盘带宽。您可以在 Virtualbox 上运行 Linux VM 并使用此方法来限制磁盘访问速度,使用来自this 答案的建议关闭磁盘缓存并分析您的应用程序。或者,您可以下载 QNX SDP,它带有一个可以使用 VMWare/Virtualbox/qemu 运行的预构建 x86_64 虚拟机映像的选项

我之前在 armv7 和 x86_64 上使用 QNX 的经验表明,在处理从闪存存储读取的大量大文件时,devb-sdmmc 驱动程序可能是一个瓶颈。 devb-sdmmc 和 io-blk 通常需要使用适当的缓存、块、预读大小和其他参数对驱动程序进行微调,这有助于提高磁盘访问性能。

【讨论】:

以上是关于用于性能分析的低硬件仿真的主要内容,如果未能解决你的问题,请参考以下文章

随机共振基于随机共振法的低信噪比周期性信号滤波和提取matlab仿真

Xamarin为仿真器性能形成硬件加速。 (花费大量时间部署)

10点直播:基于信道仿真的卫星通信设备性能测试在线研讨会

高性能嵌入式仿真软件SkyEye

Airsim动态 | 不会硬件在环仿真的小伙伴,看过来~

HammingHamming编译码理论与误码率matlab仿真和分析