- Notifications
You must be signed in to change notification settings - Fork1.5k
gperftools/gperftools
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
gperftools----------(originally Google Performance Tools)OVERVIEW---------gperftools is a collection of a high-performance multi-threadedmalloc() implementation, plus some pretty nifty performance analysistools.gperftools is distributed under the terms of the BSD License. Join ourmailing list at gperftools@googlegroups.com for updates:https://groups.google.com/forum/#!forum/gperftoolsgperftools was original home for pprof program. The original pprof wasa Perl script and there is not that many Perl expertsnowadays. Thankfully, pprof has been rewritten in Go around 2016 andthat version of pprof has gotten a lot more feature-ful. So theoriginal pprof is now removed in favor of Go version athttps://github.com/google/pprof. Go's own profiling facilities arebased on that pprof version as well.TCMALLOC--------Just link in -ltcmalloc or -ltcmalloc_minimal to get the advantages oftcmalloc -- a replacement for malloc and new. See below for someenvironment variables you can use with tcmalloc, as well.tcmalloc functionality is available on all systems we've tested; seeINSTALL for more details. See README_windows.txt for instructions onusing tcmalloc on Windows.HEAP PROFILER-------------See docs/heapprofile.adoc for information about how to use tcmalloc'sheap profiler and analyze its output.As a quick-start, do the following after installing this package:1) Link your executable with -ltcmalloc2) Run your executable with the HEAPPROFILE environment var set: $ HEAPPROFILE=/tmp/heapprof <path/to/binary> [binary args]3) Run pprof to analyze the heap usage $ pprof <path/to/binary> /tmp/heapprof.0045.heap # run 'ls' to see options $ pprof --gv <path/to/binary> /tmp/heapprof.0045.heapYou can also use LD_PRELOAD to heap-profile an executable that youdidn't compile.There are other environment variables, besides HEAPPROFILE, you canset 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.CPU PROFILER------------See docs/cpuprofile.adoc for information about how to use the CPUprofiler and analyze its output.As a quick-start, do the following after installing this package:1) Link your executable with -lprofiler2) Run your executable with the CPUPROFILE environment var set: $ CPUPROFILE=/tmp/prof.out <path/to/binary> [binary args]3) Run pprof to analyze the CPU usage $ pprof <path/to/binary> /tmp/prof.out # -pg-like text output $ pprof --gv <path/to/binary> /tmp/prof.out # really cool graphical outputThere are other environment variables, besides CPUPROFILE, you can setto 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).CONFIGURATION OPTIONS---------------------For advanced users, there are several flags you can pass to'./configure' that tweak tcmalloc performance. (These are in additionto the environment variables you can set at runtime to affecttcmalloc, described below.) See the INSTALL file for details.ENVIRONMENT VARIABLES---------------------The cpu profiler, heap checker, and heap profiler will lie dormant,using no memory or CPU, until you turn them on. (Thus, there's noharm in linking -lprofiler into every application, and also -ltcmallocassuming you're ok using the non-libc malloc library.)The easiest way to turn them on is by setting the appropriateenvironment variables. We have several variables that let youenable/disable features as well as tweak parameters.Here are some of the most important variables:HEAPPROFILE=<pre> -- turns on heap profiling and dumps data using this prefixHEAPCHECK=<type> -- turns on heap checking with strictness 'type'CPUPROFILE=<file> -- 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=<level> -- the higher level, the more messages malloc emitsMALLOCSTATS=<level> -- prints memory-use stats at program-exitFor a full list of variables, see the documentation pages: docs/cpuprofile.adoc docs/heapprofile.adocSee also TCMALLOC_STACKTRACE_METHOD_VERBOSE andTCMALLOC_STACKTRACE_METHOD environment variables briefly documented inour INSTALL file and on our wiki page at:https://github.com/gperftools/gperftools/wiki/gperftools'-stacktrace-capturing-methods-and-their-issuesCOMPILING ON NON-LINUX SYSTEMS------------------------------Perftools was developed and tested on x86, aarch64 and riscv Linuxsystems, and it works in its full generality only on those systems.However, we've successfully ported much of the tcmalloc library toFreeBSD, Solaris x86 (not tested recently though), and Mac OS X(aarch64; x86 and ppc have not been tested recently); and we've portedthe basic functionality in tcmalloc_minimal to Windows. See INSTALLfor details. See README_windows.txt for details on the Windows port.---Originally written: 17 May 2011Last refreshed: 10 Aug 2023