Track down memory leaks in a long-running Linux server application by profiling allocations over time and viewing them in the web interface
Identify which functions in your code are allocating the most memory during a specific workload using full call stack data
Export profiling data as JSON for custom analysis or visualization outside the built-in browser interface
Stream profiling data over the network from a remote server to a separate machine when the profiled server lacks local disk space
Linux-only, must be preloaded alongside the target application using LD_PRELOAD to intercept memory allocations.
Bytehound is a memory profiler for Linux. When a program runs, it constantly requests and releases blocks of memory to do its work. If it requests more than it releases, memory usage grows over time and the program can eventually crash or slow the whole machine down. Bytehound tracks every one of those requests and releases, records where in the code each one came from, and gives you tools to figure out what went wrong. The tool records a full call stack for each allocation, meaning it can tell you not just that memory was used, but which function called which function called which function to get there. This level of detail makes it much easier to trace a memory problem to its source than tools that only show totals. Bytehound is also designed to be fast: it uses a custom approach to reading the call stack that the authors say can be orders of magnitude quicker than comparable tools, which matters when you want to profile a long-running application without slowing it down too much. Once profiling is complete, you can view the results through a built-in web interface that runs locally in your browser. The interface shows memory usage over time, groups allocations by where they originated in the code, and includes a scripting console for more advanced queries. Data can also be exported as JSON for custom analysis, or in Heaptrack format to use with a third-party analysis tool. Bytehound supports common Linux hardware architectures including AMD64, ARM, AArch64, and MIPS64. It works with programs that use the standard system memory allocator as well as jemalloc, an alternative allocator popular in performance-sensitive applications. It can also stream profiling data over a network to a separate machine, which is useful when the machine being profiled does not have enough storage to save the data locally.
← koute on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.