[实践篇]13.9 如何使用gcore(ramdump)排查内存黑洞?

Posted 高桐@BILL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[实践篇]13.9 如何使用gcore(ramdump)排查内存黑洞?相关的知识,希望对你有一定的参考价值。

【QNX Hypervisor 2.2用户手册】目录(完结) 

通常情况下我们使用dumpsys meminfo,还是procrank都可以找出内存占用失控的进程。当系统发生oom_panic时,我们同样有很多种手段来分析内存布局,如前面所说的memory.txt信息;但是极少数情况下我们会发现内存布局很平滑,各个进程并没有“偷吃”。但是同样可用内存以所剩无几,有可能是ion占用高,又或者是某个内核线程内存泄漏。且oom_killer或激进的lmk查杀策略都无法满足内存回收的需求,那么此时则需要分析ramdump中的page_tracking信息。

这种情况下的内存黑洞排查需要page_tracking.txt和tasks.txt,以及开发的简单工具pagetacking_parser.py。

这个工具和之前的pageowner解析工具类似,大约花费了一整天的时间编写,适配和调试。

一,page_tracking.txt

该日志每个segment形如pageowner信息,如下:

PFN : 0x80600-0x80600 Page : 0xffffffbf0b018000 Order : 0 PID : 1 ts_nsec 638827501
      [<ffffffa9be91ba7c>] register_early_stack+0x34
      [<ffffffa9be91ae1c>] init_page_owner+0x3c
      [<ffffffa9c062f344>] page_ext_init+

以上是关于[实践篇]13.9 如何使用gcore(ramdump)排查内存黑洞?的主要内容,如果未能解决你的问题,请参考以下文章

[实践篇]13.9 如何使用gcore(ramdump)排查内存黑洞?

[实践篇]13.8 如何解析gcore?

[实践篇]13.8 如何解析gcore?

[实践篇]13.8 如何解析gcore?

Go -- 如何使用gcore工具获取一个core文件而不重启应用?

[实践篇]13.7 来自QNX侧的dump