关于ide:Bytehound一个更强大的-Linux-内存分析工具

60次阅读

共计 1650 个字符,预计需要花费 5 分钟才能阅读完成。

【导语】:更弱小的 Linux 内存剖析工具。

简介

Bytehound 是 Linux 的内存剖析工具。它可能显示内存变动曲线、占用详情、残缺的堆栈记录等信息,有助于解决内存透露等问题。具体性能如下:

  • 可用于剖析内存透露,准确地查看内存耗费的中央,辨认长期调配的内存并检测内存碎片
  • 收集每个申请和开释内存的操作的信息,跟踪残缺的堆栈信息
  • 能够动静剔除长期调配的内存,能够在很长一段时间内进行剖析
  • 应用定制的堆栈信息展现实现,这使得它比其余相似工具更高效,在某些状况下可能快几个数量级
  • 能够将采集到的数据导出为各种不同的格局:能够将数据导出为 JSON、Heaptrack(能够应用 Heaptrack GUI 进行剖析)和火焰图
  • 领有基于 Web 的 GUI,可用于剖析
  • 能够将剖析数据动静地流式传输到另一台机器,而不是将其保留在本地,这对于在内存受限的零碎上进行剖析十分有用
  • 反对 AMD64、ARM、AArch64 和 MIPS64 架构(其中 MIPS64 须要一个内核补丁 perf_event_open)
  • 反对对应用 jemalloc 作为分配器的应用程序进行剖析(仅实用于基于 AMD64 架构的 jemallocator)
  • 反对基于 Rhai 的嵌入式 DSL,容许进行编程和主动数据分析

我的项目地址是:

https://github.com/koute/byte…

装置

  1. 装置 GCC,Rust 和 Yarn,目标是为了构建 GUI
  2. 构建
$ cargo build --release -p bytehound-preload
$ cargo build --release -p bytehound-cli
  1. 从 target/release/libbytehound.so 或 target/release/bytehound 下获取二进制文件

用法

根本用法

$ export MEMORY_PROFILER_LOG=warn
$ LD_PRELOAD=./libbytehound.so ./your_application
$ ./bytehound server memory-profiling_*.dat

而后关上浏览器拜访 http://localhost:8080。

关上 debug 日志

出于性能起因,默认状况下分析器在编译时禁用了大部分调试日志。如果要启用 debug 日志,须要应用 debug-logs 性能进行从新编译构建:

$ cd preload
$ cargo build --release --features debug-logs

环境变量

Bytehound 分析器是通过很多的环境变量来管制它的行为的,以下是罕用的一些环境变量。

MEMORY_PROFILER_OUTPUT

默认值:memory-profiling_%e_%t_%p.dat,示意数据将写入的文件的门路,反对占位符,这些占位符将在运行时替换为以下内容:%p -> 过程的 PID %t -> UNIX 纪元以来的秒数 %e -> 可执行文件的名称 %n -> 主动递增计数器(0、1、..、9、10 等)

MEMORY_PROFILER_LOG

要应用的日志级别;可能的值:trace、debug、info、warn、error

MEMORY_PROFILER_LOGFILE

日志将写入的文件的门路;如果未设置,日志将被发送到 stderr,并且反对相似于 MEMORY_PROFILER_OUTPUT(除了 %n)的占位符。

MEMORY_PROFILER_CULL_TEMPORARY_ALLOCATIONS

默认值:0,当设置为 1 时,将剔除长期调配并从输入中省略它们。如果只关怀内存透露或想要在几天内进行长期剖析,能够设置为 1。

MEMORY_PROFILER_PRECISE_TIMESTAMPS

默认值:0,决定何时为每个事件收集工夫戳,或者只为事件块收集工夫戳。启用后,工夫戳将更加准确,但会减少 CPU 使用率。

开源前哨 日常分享热门、乏味和实用的开源我的项目。参加保护 10 万 + Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。

正文完
 0