Retour au classement

koute/bytehound

C

A memory profiler for Linux.

profilingprofilermemory-profilingmemory-profiler
Croissance des étoiles
Étoiles
4.8k
Forks
203
Croissance hebdomadaire
Issues
43
2k3k4k
mai 2019sept. 2021févr. 2024juil. 2026
README

Bytehound - a memory profiler for Linux

Features

  • Can be used to analyze memory leaks, see where exactly the memory is being consumed, identify temporary allocations and investigate excessive memory fragmentation
  • Gathers every allocation and deallocation, along with full stack traces
  • Can dynamically cull temporary allocations allowing you to profile over a long period of time
  • Uses a custom, tailor-made stack unwinding implementation which makes it a lot cheaper than other similar tools, potentially up to orders of magnitude faster in some cases
  • Can export the data it gathered into various different formats; it can export the data as JSON (so you can analyze it yourself if you want), as Heaptrack (so you can use the excellent Heaptrack GUI for analysis) and as a flamegraph
  • Has its own Web-based GUI which can be used for analysis
  • Can dynamically stream the profiling data to another machine instead of saving it locally, which is useful for profiling on memory-constrained systems
  • Supports AMD64, ARM, AArch64 and MIPS64 architectures (where MIPS64 requires a tiny out-of-tree kernel patch for perf_event_open)
  • Supports profiling of applications which use jemalloc as their allocator (only works on AMD64 with the jemallocator crate)
  • Supports an embedded DSL based on Rhai to allow for programmatic and/or automated data analysis

Screenshots

Building

  1. Install GCC, Rust nightly (only 1.62 or newer is supported) and the Yarn package manager (for building the GUI)

  2. Build it:

     $ cargo build --release -p bytehound-preload
     $ cargo build --release -p bytehound-cli
    
  3. Grab the binaries from target/release/libbytehound.so and target/release/bytehound

Usage

Basic usage

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

Then open your Web browser and point it at http://localhost:8080 to access the GUI.

Documentation

You can find the full documentation for the profiler in our Memory profiling for fun and profit book.

Enabling full debug logs

By default the profiler is compiled with most of its debug logs disabled for performance reasons. To reenable them be sure to recompile it with the debug-logs feature, e.g. like this:

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

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dépôts similaires
wolfpld/tracy

Frame profiler

C++Otherprofilergamedev
tracy.nereid.pl
16.4k1.2k
winsiderss/systeminformer

A free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars & Solutions, Inc. @ https://windows-internals.com

CMIT Licenseadministratorwindows
systeminformer.com
15.4k1.8k
benfred/py-spy

Sampling profiler for Python programs

Rustcrates.ioMIT Licenseprofilerpython
15.4k540
plasma-umass/scalene

Scalene: a high-performance, high-precision CPU, GPU, and memory profiler for Python with AI-powered optimization proposals

PythonPyPIApache License 2.0pythonprofiling
13.5k435
grafana/pyroscope

Continuous Profiling Platform. Debug performance issues down to a single line of code

GoGo ModulesGNU Affero General Public License v3.0continuous-profilingprofiling
grafana.com/oss/pyroscope/
11.6k777
gaogaotiantian/viztracer

A debugging and profiling tool that can trace and visualize python code execution

PythonPyPIApache License 2.0tracerpython3
viztracer.readthedocs.io
7.7k469
btraceio/btrace

Production-safe dynamic tracing and diagnostics for Java applications—attach to live JVMs with no restart or recompilation.

JavaMavenApache License 2.0btracejava
6k958
flamegraph-rs/flamegraph

Easy flamegraphs for Rust projects and everything else, without Perl or pipes <3

Rustcrates.ioApache License 2.0flamegraphsprofiling
6k194
itsgoingd/clockwork

Clockwork - php dev tools in your browser - server-side component

PHPPackagistMIT Licenseclockworkphp
underground.works/clockwork
5.9k334
KDAB/hotspot

The Linux perf GUI for performance analysis.

C++performance-analysisperformance
5.1k288
parca-dev/parca

Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.

TypeScriptnpmApache License 2.0pprofprofiling
parca.dev
4.9k252
nikolaydubina/go-recipes

🦩 Tools for Go projects

GoGo ModulesMIT Licensegocommand-line-tool
4.5k166