mirror of
https://github.com/gperftools/gperftools
synced 2025-01-17 12:20:55 +00:00
74ad5d57ec
* google-perftools: version 0.90 release * (As the version-number jump hints, this is a major new release: almost every piece of functionality was rewritten. I can't do justice to all the changes, but will concentrate on highlights.) *** USER-VISIBLE CHANGES: * Ability to "release" unused memory added to tcmalloc * Exposed more tweaking knobs via environment variables (see docs) * pprof tries harder to map addresses to functions * tcmalloc_minimal compiles and runs on FreeBSD 6.0 and Solaris 10 *** INTERNAL CHANGES: * Much better 64-bit support * Better multiple-processor support (e.g. multicore contention tweaks) * Support for recent kernel ABI changes (e.g. new arg to mremap) * Addition of spinlocks to tcmalloc to reduce contention cost * Speed up tcmalloc by using __thread on systems that support TLS * Total redesign of heap-checker to improve liveness checking * More portable stack-frame analysis -- no more hard-coded constants! * Disentangled heap-profiler code and heap-checker code * Several new unittests to test, e.g., thread-contention costs * Lots of small (but important!) bug fixes: e.g., fixing GetPC on amd64 *** KNOWN PROBLEMS: * CPU-profiling may crash on x86_64 (64-bit) systems. See the README * Profiling/heap-checking may deadlock on x86_64 systems. See README git-svn-id: http://gperftools.googlecode.com/svn/trunk@28 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
49 lines
1.7 KiB
Plaintext
49 lines
1.7 KiB
Plaintext
HEAP PROFILER
|
|
|
|
1) Fix heap profiling under all STLs
|
|
* Find out how to force non-glibc STL libraries to call new() and
|
|
delete() for every allocation / deallocation.
|
|
* Make heap profiler ignore STL-internal allocations for those
|
|
libraries under which we cannot profile accurately, so we only
|
|
see object-level leaks.
|
|
2) Remove dependency on tcmalloc?
|
|
3) Port to non-linux O/Ses (right now code uses /proc for library info)
|
|
4) Port to non-x86 architectures (locking code in spinlock is x86-specific)
|
|
5) Port to C?
|
|
6) Figure out how to get setenv() to work properly before main() in
|
|
shared libaries, and get rid of the profile-naming hack once we
|
|
do. (See HeapProfiler::Init().)
|
|
|
|
|
|
HEAP CHECKER
|
|
|
|
1) Remove requirement that the heap-checker must be linked last into
|
|
an application (hard! -- it needs its global constructor to run
|
|
first)
|
|
|
|
TCMALLOC
|
|
|
|
1) Implement mallinfo/mallopt
|
|
2) Have tcmalloc work correctly when libpthread is not linked in
|
|
(currently working for glibc, could use other libc's too)
|
|
3) Return memory to the system when requirements drop
|
|
4) Explore coloring allocated objects to avoid cache conflicts
|
|
5) Explore biasing reclamation to larger addresses
|
|
6) Add contention stats to a synchronization.cc (can do spinlocks,
|
|
but threads? -- may have to provide our own thread implementation)
|
|
|
|
CPU PROFILER
|
|
|
|
1) Figure out how to get setenv() to work properly before main() in
|
|
shared libaries(), and get rid of the profile-naming hack once we
|
|
do. (See Profiler::GetUniquePathFromEnv().)
|
|
2) Resolve crashing problems on x86_64 (see README)
|
|
|
|
STACKTRACE
|
|
|
|
1) Document and advertise libstacktrace
|
|
2) Remove dependency on linux/x86
|
|
|
|
---
|
|
4 April 2007
|