Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Gperftools | 7,892 | 2 | a day ago | 1 | August 03, 2017 | 118 | bsd-3-clause | C++ | ||
Main gperftools repository | ||||||||||
Node Webkit Agent | 1,101 | 85 | 17 | 4 years ago | 15 | July 29, 2014 | 15 | JavaScript | ||
NodeJS agent for WebKit devtools front-end | ||||||||||
Diago | 355 | a year ago | 1 | apache-2.0 | Go | |||||
Diago is a visualization tool for CPU profiles and heap snapshots generated with `pprof`. | ||||||||||
V8 Analytics | 172 | 6 | 5 | 6 years ago | 15 | July 06, 2017 | JavaScript | |||
v8 engine's cpu & heap-memory analytics | ||||||||||
Diat | 122 | a year ago | 6 | mit | JavaScript | |||||
A CLI tool to help with diagnosing Node.js processes basing on inspector. | ||||||||||
Node Oom Heapdump | 83 | 12 | 1 | a month ago | 34 | February 10, 2022 | 1 | mit | JavaScript | |
Create a V8 heap snapshot right before an "Out of Memory" error occurs, or create a heap snapshot or CPU profile on request. | ||||||||||
Openprofiling Node | 60 | 2 years ago | 4 | apache-2.0 | TypeScript | |||||
OpenProfiling is a toolkit for collecting profiling data from production workload safely. | ||||||||||
Strong Agent | 60 | 60 | 7 | 6 years ago | 66 | January 26, 2017 | 4 | other | JavaScript | |
Profile, control, and monitor Node.js processes and clusters | ||||||||||
Process Top | 57 | 3 | 9 | 3 years ago | 3 | November 03, 2020 | mit | JavaScript | ||
A "top" like module for your Node.js process. Collects CPU usage etc. | ||||||||||
Js Meter | 53 | 8 | 2 | 5 years ago | 6 | October 18, 2018 | 1 | JavaScript | ||
it is an tool of measuring performance of time, CPU, RAM and heap of javascript code |
(originally Google Performance Tools)
The fastest malloc we’ve seen; works particularly well with threads and STL. Also: thread-friendly heap-checker, heap-profiler, and cpu-profiler.
gperftools is a collection of a high-performance multi-threaded malloc() implementation, plus some pretty nifty performance analysis tools.
gperftools is distributed under the terms of the BSD License. Join our mailing list at [email protected] for updates: https://groups.google.com/forum/#!forum/gperftools
gperftools was original home for pprof program. But do note that original pprof (which is still included with gperftools) is now deprecated in favor of Go version at google/pprof
Just link in -ltcmalloc or -ltcmalloc_minimal to get the advantages of tcmalloc -- a replacement for malloc and new. See below for some environment variables you can use with tcmalloc, as well.
tcmalloc functionality is available on all systems we've tested; see INSTALL for more details. See README_windows.txt for instructions on using tcmalloc on Windows.
when compiling. gcc makes some optimizations assuming it is using its own, built-in malloc; that assumption obviously isn't true with tcmalloc. In practice, we haven't seen any problems with this, but the expected risk is highest for users who register their own malloc hooks with tcmalloc (using gperftools/malloc_hook.h). The risk is lowest for folks who use tcmalloc_minimal (or, of course, who pass in the above flags :-) ).
See docs/heapprofile.html for information about how to use tcmalloc's heap profiler and analyze its output.
As a quick-start, do the following after installing this package:
You can also use LD_PRELOAD to heap-profile an executable that you didn't compile.
There are other environment variables, besides HEAPPROFILE, you can set to adjust the heap-profiler behavior; c.f. "ENVIRONMENT VARIABLES" below.
The heap profiler is available on all unix-based systems we've tested; see INSTALL for more details. It is not currently available on Windows.
Please note that as of gperftools-2.11 this is deprecated. You should consider asan and other sanitizers instead.
See docs/heap_checker.html for information about how to use tcmalloc's heap checker.
In order to catch all heap leaks, tcmalloc must be linked last into your executable. The heap checker may mischaracterize some memory accesses in libraries listed after it on the link line. For instance, it may report these libraries as leaking memory when they're not. (See the source code for more details.)
Here's a quick-start for how to use:
As a quick-start, do the following after installing this package:
Other values for HEAPCHECK: normal (equivalent to "1"), strict, draconian
You can also use LD_PRELOAD to heap-check an executable that you didn't compile.
The heap checker is only available on Linux at this time; see INSTALL for more details.
See docs/cpuprofile.html for information about how to use the CPU profiler and analyze its output.
As a quick-start, do the following after installing this package:
There are other environment variables, besides CPUPROFILE, you can set to adjust the cpu-profiler behavior; cf "ENVIRONMENT VARIABLES" below.
The CPU profiler is available on all unix-based systems we've tested; see INSTALL for more details. It is not currently available on Windows.
NOTE: CPU profiling doesn't work after fork (unless you immediately do an exec()-like call afterwards). Furthermore, if you do fork, and the child calls exit(), it may corrupt the profile data. You can use _exit() to work around this. We hope to have a fix for both problems in the next release of perftools (hopefully perftools 1.2).
If you want the CPU profiler, heap profiler, and heap leak-checker to all be available for your application, you can do: gcc -o myapp ... -lprofiler -ltcmalloc
However, if you have a reason to use the static versions of the library, this two-library linking won't work: gcc -o myapp ... /usr/lib/libprofiler.a /usr/lib/libtcmalloc.a # errors!
Instead, use the special libtcmalloc_and_profiler library, which we make for just this purpose: gcc -o myapp ... /usr/lib/libtcmalloc_and_profiler.a
For advanced users, there are several flags you can pass to './configure' that tweak tcmalloc performance. (These are in addition to the environment variables you can set at runtime to affect tcmalloc, described below.) See the INSTALL file for details.
The cpu profiler, heap checker, and heap profiler will lie dormant, using no memory or CPU, until you turn them on. (Thus, there's no harm in linking -lprofiler into every application, and also -ltcmalloc assuming you're ok using the non-libc malloc library.)
The easiest way to turn them on is by setting the appropriate environment variables. We have several variables that let you enable/disable features as well as tweak parameters.
Here are some of the most important variables:
HEAPPROFILE=
-- turns on heap profiling and dumps data using this prefix HEAPCHECK=-- turns on heap checking with strictness 'type' CPUPROFILE= -- turns on cpu profiling and dumps data to this file. PROFILESELECTED=1 -- if set, cpu-profiler will only profile regions of code surrounded with ProfilerEnable()/ProfilerDisable(). CPUPROFILE_FREQUENCY=x-- how many interrupts/second the cpu-profiler samples. PERFTOOLS_VERBOSE=
-- the higher level, the more messages malloc emits MALLOCSTATS= -- prints memory-use stats at program-exit For a full list of variables, see the documentation pages: docs/cpuprofile.html docs/heapprofile.html docs/heap_checker.html
See also TCMALLOC_STACKTRACE_METHOD_VERBOSE and TCMALLOC_STACKTRACE_METHOD environment variables briefly documented in our INSTALL file and on our wiki page at: https://github.com/gperftools/gperftools/wiki/gperftools'-stacktrace-capturing-methods-and-their-issues
COMPILING ON NON-LINUX SYSTEMS
Perftools was developed and tested on x86, aarch64 and riscv Linux systems, and it works in its full generality only on those systems.
However, we've successfully ported much of the tcmalloc library to FreeBSD, Solaris x86 (not tested recently though), and Mac OS X (aarch64; x86 and ppc have not been tested recently); and we've ported the basic functionality in tcmalloc_minimal to Windows. See INSTALL for details. See README_windows.txt for details on the Windows port.
Originally written: 17 May 2011 Last refreshed: 10 Aug 2023