如何在 C++ 应用程序中模拟高存储活动

Posted

技术标签:

【中文标题】如何在 C++ 应用程序中模拟高存储活动【英文标题】:How to simulate high storage activity in a C++ application 【发布时间】:2014-07-30 14:39:37 【问题描述】:

有哪些方法可以帮助识别大型多线程 c++ 应用程序中可能因访问存储 I/O 而受阻的问题?

我可以分析应用程序以查找特定运行的特定减速,但我似乎无法模拟缓慢的 I/O 来帮助识别特定的问题区域。

当调整任何主要系统组件(CPU、内存和 I/O)时,性能可能会有所不同,我认为查看这组依赖组件不同的运行差异会很有用。

我很熟悉 VTune 等运行工具,如果此分析器内部有某个地方可以执行此操作,我想知道,但我愿意使用其他工具。

【问题讨论】:

如果你的 I/O 问题被分离到一个组件中,你可以用延迟来装饰它 确实如此。我可以这样做,尽管它可能很乏味。存储空间有很多不同的方式。 我会编写一个小型应用程序,该应用程序使用可控的吞吐量参数读写存储,并与您的应用程序并行运行,从而有效地为系统施加所需的压力。这样您就可以检查不同的场景和工作负载 永远不要模拟何时可以实际测量。去储藏室,找到你能找到的最旧的硬盘,然后读写。 VTurne ect 非常擅长识别您想要加速的代码中的热点,但它们需要调试代码并且自己占用资源,因此它们在测量实际性能方面做得很差。 【参考方案1】:

您可以创建并挂载一个 FUSE 文件系统,它只是延迟包装常规文件系统调用:http://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/

【讨论】:

以上是关于如何在 C++ 应用程序中模拟高存储活动的主要内容,如果未能解决你的问题,请参考以下文章

Mac 鼠标/键盘事件的监听和模拟

我如何在一些全局击键上使用 Python 或 C++ 将一些文本粘贴到 linux 中的当前活动应用程序

华为OD机试模拟题用 C++ 实现 - 网上商城优惠活动(2023.Q1)

如何在 Xcode 7 Beta 5 中安装 iOS 7 及更高版本的模拟器?

Mac压测工具(Siege)记录.md

如何使用 C++ 在 RAD Studio XE6 中存储 Android 应用程序数据/设置?