Skip to content

Latest commit

 

History

History
27 lines (17 loc) · 1.15 KB

File metadata and controls

27 lines (17 loc) · 1.15 KB

eBPF 入门实践教程:编写 eBPF 程序 Memleak 监控内存泄漏

背景

内存泄漏对于一个程序而言是一个很严重的问题。倘若放任一个存在内存泄漏的程序运行,久而久之 系统的内存会慢慢被耗尽,导致程序运行速度显著下降。为了避免这一情况,memleak工具被提出。 它可以跟踪并匹配内存分配和释放的请求,并且打印出已经被分配资源而又尚未释放的堆栈信息。

实现原理

memleak 的实现逻辑非常直观。它在我们常用的动态分配内存的函数接口路径上挂载了ebpf程序, 同时在free上也挂载了ebpf程序。在调用分配内存相关函数时,memleak 会记录调用者的pid,分配得到 内存的地址,分配得到的内存大小等基本数据。在free之后,memeleak则会去map中删除记录的对应的分配 信息。对于用户态常用的分配函数 malloc, calloc 等,memleak使用了 uporbe 技术实现挂载,对于 内核态的函数,比如 kmalloc 等,memleak 则使用了现有的 tracepoint 来实现。

编写 eBPF 程序

TODO

编译运行

TODO

总结

TODO