识别主要页面错误原因

时间:2010-11-24 12:54:41

标签: c++ linux administration page-fault

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

我尝试隔离代码的不同部分,但在测试时却很难重复出现页面错误错误。

有没有人建议在主要页面错误中从应用程序/ Linux获取更多信息?我真的只是一个。

1 个答案:

答案 0 :(得分:3)

您可以考虑在主页上将Valgrid视为:

  

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

具体而言,Valgrind包含一个名为Massif的工具,手册中给出了以下(释义)概述:

  

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

     

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

     
      
  • 它可以加快您的程序 - 较小的程序可以更好地与您的计算机缓存进行交互,并避免分页。

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

  •