4

我被要求查看一个用 C++ 编写并在 Linux 上运行的内部应用程序,这有一些困难。周期性地它会有大量的主要页面错误(~200k),这会导致挂钟运行时间增加 x10+,然后在某些运行中它将没有。

我已经尝试隔离不同的代码片段,但在测试它时很难重复页面错误错误。

有没有人对从应用程序/Linux 中获取更多关于主要页面错误的信息有任何建议?我所拥有的只是一个总数。

4

1 回答 1

3

您可能想考虑Valgrid,主页上描述为:

Valgrind 是一个用于构建动态分析工具的仪器框架。Valgrind 工具可以自动检测许多内存管理和线程错误,并详细分析您的程序。您还可以使用 Valgrind 构建新工具。

具体来说,Valgrind 包含一个名为Massif的工具,手册中给出了以下(转述)概述:

Massif 是一个堆分析器。它测量您的程序使用了多少堆内存。[..]

堆分析可以帮助您减少程序使用的内存量。在具有虚拟内存的现代机器上,这提供了以下好处:

  • 它可以加速你的程序——一个更小的程序将更好地与你机器的缓存交互并避免分页。

  • 如果您的程序使用大量内存,它将减少耗尽机器交换空间的机会。

于 2010-11-24T16:42:06.390 回答