gperftools/NEWS
csilvers 100c38c1a2 Fri Jul 15 16:10:51 2011 Google Inc. <opensource@google.com>
* google-perftools: version 1.8 release
	* PORTING: (Disabled) support for patching mmap on freebsd (chapp...)
	* PORTING: Support volatile __malloc_hook for glibc 2.14 (csilvers)
	* PORTING: Use _asm rdtsc and __rdtsc to get cycleclock in windows (koda)
	* PORTING: Fix fd vs. HANDLE compiler error on cygwin (csilvers)
	* PORTING: Do not test memalign or double-linking on OS X (csilvers)
	* PORTING: Actually enable TLS on windows (jontra)
	* PORTING: Some work to compile under Native Client (krasin)
	* PORTING: deal with pthread_once w/o -pthread on freebsd (csilvers)
	* Rearrange libc-overriding to make it easier to port (csilvers)
	* Display source locations in pprof disassembly (sanjay)
	* BUGFIX: Actually initialize allocator name (mec)
	* BUGFIX: Keep track of 'overhead' bytes in malloc reporting (csilvers)
	* Allow ignoring one object twice in the leak checker (glider)
	* BUGFIX: top10 in pprof should print 10 lines, not 11 (rsc)
	* Refactor vdso source files (tipp)
	* Some documentation cleanups
	* Document MAX_TOTAL_THREAD_CACHE_SIZE <= 1Gb (nsethi)
	* Add MallocExtension::GetOwnership(ptr) (csilvers)
	* BUGFIX: We were leaving out a needed $(top_srcdir) in the Makefile
	* PORTING: Support getting argv0 on OS X
	* Add 'weblist' command to pprof: like 'list' but html (sanjay)
	* Improve source listing in pprof (sanjay)
	* Cap cache sizes to reduce fragmentation (ruemmler)
	* Improve performance by capping or increasing sizes (ruemmler)
	* Add M{,un}mapReplacmenet hooks into MallocHook (ribrdb)
	* Refactored system allocator logic (gangren)
	* Include cleanups (csilvers)
	* Add TCMALLOC_SMALL_BUT_SLOW support (ruemmler)
	* Clarify that tcmalloc stats are MiB (robinson)
	* Remove support for non-tcmalloc debugallocation (blount)
	* Add a new test: malloc_hook_test (csilvers)
	* Change the configure script to be more crosstool-friendly (mcgrathr)
	* PORTING: leading-underscore changes to support win64 (csilvers)
	* Improve debugallocation tc_malloc_size (csilvers)
	* Extend atomicops.h and cyceclock to use ARM V6+ optimized code (sanek)
	* Change malloc-hook to use a list-like structure (llib)
	* Add flag to use MAP_PRIVATE in memfs_malloc (gangren)
	* Windows support for pprof: nul and /usr/bin/file (csilvers)
	* TESTING: add test on strdup to tcmalloc_test (csilvers)
	* Augment heap-checker to deal with no-inode maps (csilvers)
	* Count .dll/.dylib as shared libs in heap-checker (csilvers)
	* Disable sys_futex for arm; it's not always reliable (sanek)
	* PORTING: change lots of windows/port.h macros to functions
	* BUGFIX: Generate correct version# in tcmalloc.h on windows (csilvers)
	* PORTING: Some casting to make solaris happier about types (csilvers)
	* TESTING: Disable debugallocation_test in 'minimal' mode (csilvers)
	* Rewrite debugallocation to be more modular (csilvers)
	* Don't try to run the heap-checker under valgrind (ppluzhnikov)
	* BUGFIX: Make focused stat %'s relative, not absolute (sanjay)
	* BUGFIX: Don't use '//' comments in a C file (csilvers)
	* Quiet new-gcc compiler warnings via -Wno-unused-result, etc (csilvers)


git-svn-id: http://gperftools.googlecode.com/svn/trunk@110 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2011-07-16 01:07:10 +00:00

213 lines
9.1 KiB
Plaintext

== 15 July 2011 ==
I've just released perftools 1.8
Of the many changes in this release, a good number pertain to porting.
I've revamped OS X support to use the malloc-zone framework; it should
now Just Work to link in tcmalloc, without needing
`DYLD_FORCE_FLAT_NAMESPACE` or the like. (This is a pretty major
change, so please feel free to report feedback at
google-perftools@googlegroups.com.) 64-bit Windows support is also
improved, as is ARM support, and the hooks are in place to improve
FreeBSD support as well.
On the other hand, I'm seeing hanging tests on Cygwin. I see the same
hanging even with (the old) perftools 1.7, so I'm guessing this is
either a problem specific to my Cygwin installation, or nobody is
trying to use perftools under Cygwin. If you can reproduce the
problem, and even better have a solution, you can report it at
google-perftools@googlegroups.com.
Internal changes include several performance and space-saving tweaks.
One is user-visible (but in "stealth mode", and otherwise
undocumented): you can compile with `-DTCMALLOC_SMALL_BUT_SLOW`. In
this mode, tcmalloc will use less memory overhead, at the cost of
running (likely not noticeably) slower.
There are many other changes as well, too numerous to recount here,
but present in the
[http://google-perftools.googlecode.com/svn/tags/perftools-1.8/ChangeLog ChangeLog].
=== 7 February 2011 ===
Thanks to endlessr..., who
[http://code.google.com/p/google-perftools/issues/detail?id=307 identified]
why some tests were failing under MSVC 10 in release mode. It does not look
like these failures point toward any problem with tcmalloc itself; rather, the
problem is with the test, which made some assumptions that broke under the
some aggressive optimizations used in MSVC 10. I'll fix the test, but in
the meantime, feel free to use perftools even when compiled under MSVC
10.
=== 4 February 2011 ===
I've just released perftools 1.7
I apologize for the delay since the last release; so many great new
patches and bugfixes kept coming in (and are still coming in; I also
apologize to those folks who have to slip until the next release). I
picked this arbitrary time to make a cut.
Among the many new features in this release is a multi-megabyte
reduction in the amount of tcmalloc overhead uder x86_64, improved
performance in the case of contention, and many many bugfixes,
especially architecture-specific bugfixes. See the
[http://google-perftools.googlecode.com/svn/tags/perftools-1.7/ChangeLog ChangeLog]
for full details.
One architecture-specific change of note is added comments in the
[http://google-perftools.googlecode.com/svn/tags/perftools-1.7/README README]
for using tcmalloc under OS X. I'm trying to get my head around the
exact behavior of the OS X linker, and hope to have more improvements
for the next release, but I hope these notes help folks who have been
having trouble with tcmalloc on OS X.
*Windows users*: I've heard reports that some unittests fail on
Windows when compiled with MSVC 10 in Release mode. All tests pass in
Debug mode. I've not heard of any problems with earlier versions of
MSVC. I don't know if this is a problem with the runtime patching (so
the static patching discussed in README_windows.txt will still work),
a problem with perftools more generally, or a bug in MSVC 10. Anyone
with windows expertise that can debug this, I'd be glad to hear from!
=== 5 August 2010 ===
I've just released perftools 1.6
This version also has a large number of minor changes, including
support for `malloc_usable_size()` as a glibc-compatible alias to
`malloc_size()`, the addition of SVG-based output to `pprof`, and
experimental support for tcmalloc large pages, which may speed up
tcmalloc at the cost of greater memory use. To use tcmalloc large
pages, see the
[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/INSTALL
INSTALL file]; for all changes, see the
[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/ChangeLog
ChangeLog].
OS X NOTE: improvements in the profiler unittest have turned up an OS
X issue: in multithreaded programs, it seems that OS X often delivers
the profiling signal (from sigitimer()) to the main thread, even when
it's sleeping, rather than spawned threads that are doing actual work.
If anyone knows details of how OS X handles SIGPROF events (from
setitimer) in threaded programs, and has insight into this problem,
please send mail to google-perftools@googlegroups.com.
To see if you're affected by this, look for profiling time that pprof
attributes to `___semwait_signal`. This is work being done in other
threads, that is being attributed to sleeping-time in the main thread.
=== 20 January 2010 ===
I've just released perftools 1.5
This version has a slew of changes, leading to somewhat faster
performance and improvements in portability. It adds features like
`ITIMER_REAL` support to the cpu profiler, and `tc_set_new_mode` to
mimic the windows function of the same name. Full details are in the
[http://google-perftools.googlecode.com/svn/tags/perftools-1.5/ChangeLog
ChangeLog].
=== 11 September 2009 ===
I've just released perftools 1.4
The major change this release is the addition of a debugging malloc
library! If you link with `libtcmalloc_debug.so` instead of
`libtcmalloc.so` (and likewise for the `minimal` variants) you'll get
a debugging malloc, which will catch double-frees, writes to freed
data, `free`/`delete` and `delete`/`delete[]` mismatches, and even
(optionally) writes past the end of an allocated block.
We plan to do more with this library in the future, including
supporting it on Windows, and adding the ability to use the debugging
library with your default malloc in addition to using it with
tcmalloc.
There are also the usual complement of bug fixes, documented in the
ChangeLog, and a few minor user-tunable knobs added to components like
the system allocator.
=== 9 June 2009 ===
I've just released perftools 1.3
Like 1.2, this has a variety of bug fixes, especially related to the
Windows build. One of my bugfixes is to undo the weird `ld -r` fix to
`.a` files that I introduced in perftools 1.2: it caused problems on
too many platforms. I've reverted back to normal `.a` files. To work
around the original problem that prompted the `ld -r` fix, I now
provide `libtcmalloc_and_profiler.a`, for folks who want to link in
both.
The most interesting API change is that I now not only override
`malloc`/`free`/etc, I also expose them via a unique set of symbols:
`tc_malloc`/`tc_free`/etc. This enables clients to write their own
memory wrappers that use tcmalloc:
{{{
void* malloc(size_t size) { void* r = tc_malloc(size); Log(r); return r; }
}}}
=== 17 April 2009 ===
I've just released perftools 1.2.
This is mostly a bugfix release. The major change is internal: I have
a new system for creating packages, which allows me to create 64-bit
packages. (I still don't do that for perftools, because there is
still no great 64-bit solution, with libunwind still giving problems
and --disable-frame-pointers not practical in every environment.)
Another interesting change involves Windows: a
[http://code.google.com/p/google-perftools/issues/detail?id=126 new
patch] allows users to choose to override malloc/free/etc on Windows
rather than patching, as is done now. This can be used to create
custom CRTs.
My fix for this
[http://groups.google.com/group/google-perftools/browse_thread/thread/1ff9b50043090d9d/a59210c4206f2060?lnk=gst&q=dynamic#a59210c4206f2060
bug involving static linking] ended up being to make libtcmalloc.a and
libperftools.a a big .o file, rather than a true `ar` archive. This
should not yield any problems in practice -- in fact, it should be
better, since the heap profiler, leak checker, and cpu profiler will
now all work even with the static libraries -- but if you find it
does, please file a bug report.
Finally, the profile_handler_unittest provided in the perftools
testsuite (new in this release) is failing on FreeBSD. The end-to-end
test that uses the profile-handler is passing, so I suspect the
problem may be with the test, not the perftools code itself. However,
I do not know enough about how itimers work on FreeBSD to be able to
debug it. If you can figure it out, please let me know!
=== 11 March 2009 ===
I've just released perftools 1.1!
It has many changes since perftools 1.0 including
* Faster performance due to dynamically sized thread caches
* Better heap-sampling for more realistic profiles
* Improved support on Windows (MSVC 7.1 and cygwin)
* Better stacktraces in linux (using VDSO)
* Many bug fixes and feature requests
Note: if you use the CPU-profiler with applications that fork without
doing an exec right afterwards, please see the README. Recent testing
has shown that profiles are unreliable in that case. The problem has
existed since the first release of perftools. We expect to have a fix
for perftools 1.2. For more details, see
[http://code.google.com/p/google-perftools/issues/detail?id=105 issue 105].
Everyone who uses perftools 1.0 is encouraged to upgrade to perftools
1.1. If you see any problems with the new release, please file a bug
report at http://code.google.com/p/google-perftools/issues/list.
Enjoy!