gperftools/TODO
csilvers 74ad5d57ec Fri Apr 13 14:50:51 2007 Google Inc. <opensource@google.com>
* 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
2007-04-16 20:49:32 +00:00

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