诺基亚新动作!自创开源Linux内存分析器—Memory Profiler

    xiaoxiao2022-06-26  195

    Linux系统下查看内存有多种方式,比如通过命令 ps ,top,free, pmap 等,或者通过/proc系统。工具类的,我们使用Valgrind 发现 Linux 程序的内存问题。

    昨天,诺基亚打破“常态”,在Github上自创开源了一款Linux内存分析器—Nokia Memory Profiler!

    Nokia Memory Profiler 是适用于 Linux 的内存分析器。

     

    特征

    可用于分析内存泄漏,查看内存消耗的确切位置,识别临时分配并调查过多的内存碎片收集每个内容分配和释放的信息,以及完整的堆栈跟踪使用定制的堆栈展开实现,性价比明显高于其他类似工具,在某些情况下可能高出几个数量级可以将收集的数据导出为各种不同的格式; 它可以将数据导出为JSON(你可以根据需要自行分析),导出为Heaptrack(你可以使用优秀的Heaptrack GUI进行分析)还可以导出为火焰图有自己的基于Web的GUI,可用于分析可以将分析数据动态地流式传输到另一台机器,而不是在本地保存,这对于在内存受限的系统上进行分析非常有用支持AMD64,ARM,AArch64和MIPS64架构

     

    Building

    1、每晚更新安装Rust和Yarn包管理器(用于构建GUI)

    2、建立:

    $ cargo build --release -p memory-profiler $ cargo build --release -p memory-profiler-cli

    3、从二进制文件中提取target/release/libmemory_profiler.so和target/release/memory-profiler-cli

    基本用法

    $ LD_PRELOAD=./libmemory_profiler.so ./your_application $ ./memory-profiler-cli server memory-profiling_*.dat

    然后打开Web浏览器并将其指向http://localhost:8080以访问GUI。

    如果你不想使用GUI,您还可以使用服务器公开的REST API。例如:

    生成泄漏分配的火焰图: $ curl "http://localhost:8080/data/last/export/flamegraph?lifetime=only_leaked" > flame.svg 将泄漏的分配导出为ASCII树状图: $ curl "http://localhost:8080/data/last/allocation_ascii_tree?lifetime=only_leaked" 将应用程序发出的三个最大分配导出到JSON $ curl "http://localhost:8080/data/last/allocations?sort_by=size&order=dsc&count=3" 导出三个最大的呼叫站点至少有10个分配,其中至少50%被泄露: $ curl "http://localhost:8080/data/last/allocation_groups?group_allocations_min=10&group_leaked_allocations_min=50%&sort_by=all.size&count=3"

    Github传送地址:https://github.com/nokia/memory-profiler


    最新回复(0)