加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 导致主要页面错误的日志内存访问

发布时间:2020-12-14 02:12:28 所属栏目:Linux 来源:网络整理
导读:有谁知道如何获取导致页面错误的内存访问(指针)?我主要对主要的页面错误感兴趣. 关于我正在努力实现的目标的一些背景知识.我有一个具有大内存占用(数据库)的应用程序,我想将分页与对大型数据结构(例如表,使用mmap()分配的索引)的访问相关联.该过程的映射很
有谁知道如何获取导致页面错误的内存访问(指针)?我主要对主要的页面错误感兴趣.

关于我正在努力实现的目标的一些背景知识.我有一个具有大内存占用(数据库)的应用程序,我想将分页与对大型数据结构(例如表,使用mmap()分配的索引)的访问相关联.该过程的映射很容易从/ proc // maps中检索.现在,如果我有导致页面错误的内存访问,我可以跟踪访问每个数据结构时导致的页面错误数量.

我认为perf或systemtap可以完成这项工作.有任何想法吗?

解决方法

查看探测点可用的内容:

% stap -L vm.pagefault
vm.pagefault name:string write_access:long address:long $mm:struct mm_struct* 
   $vma:struct vm_area_struct* $address:long unsigned int $flags:unsigned int

记录,尝试将地址映射到符号名称

# stap -e 'probe vm.pagefault { if (execname()=="foo") { printf("%p (%s)n",address,usymdata(address)) } }' -d /bin/foo --ldd

另见:http://sourceware.org/systemtap/examples/#memory/pfaults.stp

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读