All Projects → koute → bytehound

koute / bytehound

Licence: other
A memory profiler for Linux.

Programming Languages

c
50402 projects - #5 most used programming language
rust
11053 projects
perl
6916 projects
javascript
184084 projects - #8 most used programming language
M4
1887 projects
shell
77523 projects

Projects that are alternatives of or similar to bytehound

Memory Profiler
A memory profiler for Linux.
Stars: ✭ 2,422 (-8.22%)
Mutual labels:  profiler, memory-profiler, profiling, memory-profiling
Py Spy
Sampling profiler for Python programs
Stars: ✭ 7,709 (+192.12%)
Mutual labels:  profiler, profiling
profiling
Non-discriminatory profiling of Ruby code leveraging the ruby-prof gem
Stars: ✭ 12 (-99.55%)
Mutual labels:  profiler, profiling
kokkos-tools
Kokkos C++ Performance Portability Programming EcoSystem: Profiling and Debugging Tools
Stars: ✭ 52 (-98.03%)
Mutual labels:  profiler, profiling
hotch
Profile helper
Stars: ✭ 28 (-98.94%)
Mutual labels:  profiler, memory-profiler
Scalene
Scalene: a high-performance, high-precision CPU, GPU, and memory profiler for Python
Stars: ✭ 4,819 (+82.61%)
Mutual labels:  profiler, profiling
Hotspot
The Linux perf GUI for performance analysis.
Stars: ✭ 2,415 (-8.49%)
Mutual labels:  profiler, profiling
Myperf4j
High performance Java APM. Powered by ASM. Try it. Test it. If you feel its better, use it.
Stars: ✭ 2,281 (-13.57%)
Mutual labels:  profiler, profiling
audria
audria - A Utility for Detailed Ressource Inspection of Applications
Stars: ✭ 35 (-98.67%)
Mutual labels:  profiler, profiling
Nlp profiler
A simple NLP library allows profiling datasets with one or more text columns. When given a dataset and a column name containing text data, NLP Profiler will return either high-level insights or low-level/granular statistical information about the text in that column.
Stars: ✭ 181 (-93.14%)
Mutual labels:  profiler, profiling
Mtuner
MTuner is a C/C++ memory profiler and memory leak finder for Windows, PlayStation 4 and 3, Android and other platforms
Stars: ✭ 2,007 (-23.95%)
Mutual labels:  memory-profiler, profiling
VisualProfiler-Unity
The Visual Profiler provides a drop in solution for viewing your mixed reality Unity application's frame rate, scene complexity, and memory usage.
Stars: ✭ 120 (-95.45%)
Mutual labels:  profiler, profiling
Laravel Db Profiler
Database Profiler for Laravel Web and Console Applications.
Stars: ✭ 141 (-94.66%)
Mutual labels:  profiler, profiling
Tracy
C++ frame profiler
Stars: ✭ 3,115 (+18.04%)
Mutual labels:  profiler, profiling
profiler
Continuous profiling based on pprof
Stars: ✭ 221 (-91.63%)
Mutual labels:  profiler, profiling
pylaprof
A Python sampling profiler for AWS Lambda functions (and not only).
Stars: ✭ 12 (-99.55%)
Mutual labels:  profiler, profiling
tracetree
A tool for capturing the execution of an entire process tree
Stars: ✭ 40 (-98.48%)
Mutual labels:  profiler
GVProf
GVProf: A Value Profiler for GPU-based Clusters
Stars: ✭ 25 (-99.05%)
Mutual labels:  profiler
llvm-epp
Efficient Path Profiling using LLVM
Stars: ✭ 16 (-99.39%)
Mutual labels:  profiling
rmem
MTuner SDK - Memory profiling library
Stars: ✭ 25 (-99.05%)
Mutual labels:  profiler

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 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].