gperftools/NEWS

842 lines
31 KiB
Plaintext
Raw Normal View History

2017-05-22 05:55:29 +00:00
== 21 May 2017 ==
gperftools 2.6rc3 is out!
gperftools compilation on older systems (e.g. rhel 5) was fixed. This
was originally reported in github issue #888.
2017-04-17 04:45:51 +00:00
== 14 May 2017 ==
2017-05-15 07:02:43 +00:00
gperftools 2.6rc2 is out!
Just 2 small fixes on top of 2.6rc. Particularly, Rajalakshmi
Srinivasaraghavan contributed build fix for ppc32.
== 14 May 2017 ==
2017-04-17 04:45:51 +00:00
gperftools 2.6rc is out!
Highlights of this release are performance work on malloc fast-path
and support for more modern visual studio runtimes, and deprecation of
bundled pprof. Another significant performance-affecting changes are
reverting central free list transfer batch size back to 32 and
disabling of aggressive decommit mode by default.
Note, while we still ship perl implementation of pprof, everyone is
strongly advised to use golang reimplementation of pprof from
https://github.com/google/pprof.
Here are notable changes in more details (and see ChangeLog for full
details):
* a bunch of performance tweaks to tcmalloc fast-path were
merged. This speeds up critical path of tcmalloc by few tens of
%. Well tuned and allocation-heavy programs should see substantial
performance boost (should apply to all modern elf platforms). This
is based on Google-internal tcmalloc changes for fast-path (with
obvious exception of lacking per-cpu mode, of course). Original
changes were made by Aliaksei Kandratsenka. And Andrew Hunter,
Dmitry Vyukov and Sanjay Ghemawat contributed with reviews and
discussions.
* Architectures with 48 bits address space (x86-64 and aarch64) now
use faster 2 level page map. This was ported from Google-internal
change by Sanjay Ghemawat.
* Default value of TCMALLOC_TRANSFER_NUM_OBJ was returned back to
32. Larger values have been found to hurt certain programs (but help
some other benchmarks). Value can still be tweaked at run time via
environment variable.
* tcmalloc aggressive decommit mode is now disabled by default
again. It was found to degrade performance of certain tensorflow
benchmarks. Users who prefer smaller heap over small performance win
can still set environment variable TCMALLOC_AGGRESSIVE_DECOMMIT=t.
* runtime switchable sized delete support has be fixed and re-enabled
(on GNU/Linux). Programs that use C++ 14 or later that use sized
delete can again be sped up by setting environment variable
TCMALLOC_ENABLE_SIZED_DELETE=t. Support for enabling sized
deallication support at compile-time is still present, of course.
* tcmalloc now explicitly avoids use of MADV_FREE on Linux, unless
TCMALLOC_USE_MADV_FREE is defined at compile time. This is because
performance impact of MADV_FREE is not well known. Original issue
#780 raised by Mathias Stearn.
* issue #786 with occasional deadlocks in stack trace capturing via
libunwind was fixed. It was originally reported as Ceph issue:
http://tracker.ceph.com/issues/13522
* ChangeLog is now automatically generated from git log. Old ChangeLog
is now ChangeLog.old.
* tcmalloc now provides implementation of nallocx. Function was
originally introduced by jemalloc and can be used to return real
allocation size given allocation request size. This is ported from
Google-internal tcmalloc change contributed by Dmitry Vyukov.
* issue #843 which made tcmalloc crash when used with erlang runtime
was fixed.
* issue #839 which caused tcmalloc's aggressive decommit mode to
degrade performance in some corner cases was fixed.
* Bryan Chan contributed support for 31-bit s390.
* Brian Silverman contributed compilation fix for 32-bit ARMs
* Issue #817 that was causing tcmalloc to fail on windows 10 and
later, as well as on recent msvc was fixed. We now patch _free_base
as well.
* a bunch of minor documentaion/typos fixes by: Mike Gaffney
<mike@uberu.com>, iivlev <iivlev@productengine.com>, savefromgoogle
<savefromgoogle@users.noreply.github.com>, John McDole
<jtmcdole@gmail.com>, zmertens <zmertens@asu.edu>, Kirill Müller
<krlmlr@mailbox.org>, Eugene <n.eugene536@gmail.com>, Ola Olsson
<ola1olsson@gmail.com>, Mostyn Bramley-Moore <mostynb@opera.com>
* Tulio Magno Quites Machado Filho has contributed removal of
deprecated glibc malloc hooks.
* Issue #827 that caused intercepting malloc on osx 10.12 to fail was
fixed, by copying fix made by Mike Hommey to jemalloc. Much thanks
to Koichi Shiraishi and David Ribeiro Alves for reporting it and
testing fix.
* Aman Gupta and Kenton Varda contributed minor fixes to pprof (but
note again that pprof is deprecated)
* Ryan Macnak contributed compilation fix for aarch64
* Francis Ricci has fixed unaligned memory access in debug allocator
* TCMALLOC_PAGE_FENCE_NEVER_RECLAIM now actually works thanks to
contribution by Andrew Morrow.
2016-03-12 19:48:20 +00:00
== 12 Mar 2016 ==
gperftools 2.5 is out!
Just single bugfix was merged after rc2. Which was fix for issue #777.
2016-03-06 00:17:28 +00:00
== 5 Mar 2016 ==
gperftools 2.5rc2 is out!
New release contains just few commits on top of first release
candidate. One of them is build fix for Visual Studio. Another
significant change is that dynamic sized delete is now disabled by
default. It turned out that IFUNC relocations are not supporting our
advanced use case on all platforms and in all cases.
== 21 Feb 2016 ==
2016-02-22 06:38:23 +00:00
gperftools 2.5rc is out!
Here are major changes since 2.4:
* we've moved to github!
* Bryan Chan has contributed s390x support
* stacktrace capturing via libgcc's _Unwind_Backtrace was implemented
(for architectures with missing or broken libunwind).
* "emergency malloc" was implemented. Which unbreaks recursive calls
to malloc/free from stacktrace capturing functions (such us glib'c
backtrace() or libunwind on arm). It is enabled by
--enable-emergency-malloc configure flag or by default on arm when
--enable-stacktrace-via-backtrace is given. It is another fix for a
number common issues people had on platforms with missing or broken
libunwind.
* C++14 sized-deallocation is now supported (on gcc 5 and recent
clangs). It is off by default and can be enabled at configure time
via --enable-sized-delete. On GNU/Linux it can also be enabled at
run-time by either TCMALLOC_ENABLE_SIZED_DELETE environment variable
or by defining tcmalloc_sized_delete_enabled function which should
return 1 to enable it.
* we've lowered default value of transfer batch size to 512. Previous
value (bumped up in 2.1) was too high and caused performance
regression for some users. 512 should still give us performance
boost for workloads that need higher transfer batch size while not
penalizing other workloads too much.
* Brian Silverman's patch finally stopped arming profiling timer
unless profiling is started.
* Andrew Morrow has contributed support for obtaining cache size of the
current thread and softer idling (for use in MongoDB).
* we've implemented few minor performance improvements, particularly
on malloc fast-path.
A number of smaller fixes were made. Many of them were contributed:
* issue that caused spurious profiler_unittest.sh failures was fixed.
* Jonathan Lambrechts contributed improved callgrind format support to
pprof.
* Matt Cross contributed better support for debug symbols in separate
files to pprof.
* Matt Cross contributed support for printing collapsed stack frame
from pprof aimed at producing flame graphs.
* Angus Gratton has contributed documentation fix mentioning that on
windows only tcmalloc_minimal is supported.
* Anton Samokhvalov has made tcmalloc use mi_force_{un,}lock on OSX
instead of pthread_atfork. Which apparently fixes forking
issues tcmalloc had on OSX.
* Milton Chiang has contributed support for building 32-bit gperftools
on arm8.
* Patrick LoPresti has contributed support for specifying alternative
profiling signal via CPUPROFILE_TIMER_SIGNAL environment variable.
* Paolo Bonzini has contributed support configuring filename for
sending malloc tracing output via TCMALLOC_TRACE_FILE environment
variable.
* user spotrh has enabled use of futex on arm.
* user mitchblank has contributed better declaration for arg-less
profiler functions.
* Tom Conerly contributed proper freeing of memory allocated in
HeapProfileTable::FillOrderedProfile on error paths.
* user fdeweerdt has contributed curl arguments handling fix in pprof
* Frederik Mellbin fixed tcmalloc's idea of mangled new and delete
symbols on windows x64
* Dair Grant has contributed cacheline alignment for ThreadCache
objects
* Fredrik Mellbin has contributed updated windows/config.h for Visual
Studio 2015 and other windows fixes.
* we're not linking libpthread to libtcmalloc_minimal anymore. Instead
libtcmalloc_minimal links to pthread symbols weakly. As a result
single-threaded programs remain single-threaded when linking to or
preloading libtcmalloc_minimal.so.
* Boris Sazonov has contributed mips compilation fix and printf misue
in pprof.
* Adhemerval Zanella has contributed alignment fixes for statically
allocated variables.
* Jens Rosenboom has contributed fixes for heap-profiler_unittest.sh
* gshirishfree has contributed better description for GetStats method.
* cyshi has contributed spinlock pause fix.
* Chris Mayo has contributed --docdir argument support for configure.
* Duncan Sands has contributed fix for function aliases.
* Simon Que contributed better include for malloc_hook_c.h
* user wmamrak contributed struct timespec fix for Visual Studio 2015.
* user ssubotin contributed typo in PrintAvailability code.
== 10 Jan 2015 ==
2015-01-10 20:26:51 +00:00
gperftools 2.4 is out! The code is exactly same as 2.4rc.
2014-12-29 01:53:02 +00:00
== 28 Dec 2014 ==
gperftools 2.4rc is out!
Here are changes since 2.3:
* enabled aggressive decommit option by default. It was found to
significantly improve memory fragmentation with negligible impact on
performance. (Thanks to investigation work performed by Adhemerval
Zanella)
* added ./configure flags for tcmalloc pagesize and tcmalloc
allocation alignment. Larger page sizes have been reported to
improve performance occasionally. (Patch by Raphael Moreira Zinsly)
* sped-up hot-path of malloc/free. By about 5% on static library and
about 10% on shared library. Mainly due to more efficient checking
of malloc hooks.
* improved stacktrace capturing in cpu profiler (due to issue found by
Arun Sharma). As part of that issue pprof's handling of cpu profiles
was also improved.
2014-12-07 20:46:49 +00:00
== 7 Dec 2014 ==
gperftools 2.3 is out!
Here are changes since 2.3rc:
* (issue 658) correctly close socketpair fds on failure (patch by glider)
* libunwind integration can be disabled at configure time (patch by
Raphael Moreira Zinsly)
* libunwind integration is disabled by default for ppc64 (patch by
Raphael Moreira Zinsly)
* libunwind integration is force-disabled for OSX. It was not used by
default anyways. Fixes compilation issue I saw.
2014-11-03 03:38:29 +00:00
2014-12-07 21:33:40 +00:00
== 2 Nov 2014 ==
2014-11-03 03:38:29 +00:00
gperftools 2.3rc is out!
Most small improvements in this release were made to pprof tool.
New experimental Linux-only (for now) cpu profiling mode is a notable
big improvement.
Here are notable changes since 2.2.1:
* (issue-631) fixed debugallocation miscompilation on mmap-less
platforms (courtesy of user iamxujian)
* (issue-630) reference to wrong PROFILE (vs. correct CPUPROFILE)
environment variable was fixed (courtesy of WenSheng He)
* pprof now has option to display stack traces in output for heap
checker (courtesy of Michael Pasieka)
* (issue-636) pprof web command now works on mingw
* (issue-635) pprof now handles library paths that contain spaces
(courtesy of user mich...@sebesbefut.com)
* (issue-637) pprof now has an option to not strip template arguments
(patch by jiakai)
* (issue-644) possible out-of-bounds access in GetenvBeforeMain was
fixed (thanks to user abyss.7)
* (issue-641) pprof now has an option --show_addresses (thanks to user
yurivict). New option prints instruction address in addition to
function name in stack traces
* (issue-646) pprof now works around some issues of addr2line
reportedly when DWARF v4 format is used (patch by Adam McNeeney)
* (issue-645) heap profiler exit message now includes remaining memory
allocated info (patch by user yurivict)
* pprof code that finds location of /proc/<pid>/maps in cpu profile
files is now fixed (patch by Ricardo M. Correia)
* (issue-654) pprof now handles "split text segments" feature of
Chromium for Android. (patch by simonb)
* (issue-655) potential deadlock on windows caused by early call to
getenv in malloc initialization code was fixed (bug reported and fix
proposed by user zndmitry)
* incorrect detection of arm 6zk instruction set support
(-mcpu=arm1176jzf-s) was fixed. (Reported by pedronavf on old
issue-493)
* new cpu profiling mode on Linux is now implemented. It sets up
separate profiling timers for separate threads. Which improves
accuracy of profiling on Linux a lot. It is off by default. And is
enabled if both librt.f is loaded and CPUPROFILE_PER_THREAD_TIMERS
environment variable is set. But note that all threads need to be
registered via ProfilerRegisterThread.
2014-06-21 22:39:46 +00:00
== 21 Jun 2014 ==
gperftools 2.2.1 is out!
Here's list of fixes:
* issue-626 was closed. Which fixes initialization statically linked
tcmalloc.
* issue 628 was closed. It adds missing header file into source
tarball. This fixes for compilation on PPC Linux.
2014-05-04 00:44:38 +00:00
== 3 May 2014 ==
gperftools 2.2 is out!
Here are notable changes since 2.2rc:
* issue 620 (crash on windows when c runtime dll is reloaded) was
fixed
2014-04-19 20:16:02 +00:00
== 19 Apr 2014 ==
gperftools 2.2rc is out!
Here are notable changes since 2.1:
* a number of fixes for a number compilers and platforms. Notably
Visual Studio 2013, recent mingw with c++ threads and some OSX
fixes.
* we now have mips and mips64 support! (courtesy of Jovan Zelincevic,
Jean Lee, user xiaoyur347 and others)
* we now have aarch64 (aka arm64) support! (contributed by Riku
Voipio)
* there's now support for ppc64-le (by Raphael Moreira Zinsly and
Adhemerval Zanella)
* there's now some support of uclibc (contributed by user xiaoyur347)
* google/ headers will now give you deprecation warning. They are
deprecated since 2.0
* there's now new api: tc_malloc_skip_new_handler (ported from chromium
fork)
* issue-557: added support for dumping heap profile via signal (by
Jean Lee)
* issue-567: Petr Hosek contributed SysAllocator support for windows
* Joonsoo Kim contributed several speedups for central freelist code
* TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES environment variable now works
* configure scripts are now using AM_MAINTAINER_MODE. It'll only
affect folks who modify source from .tar.gz and want automake to
automatically rebuild Makefile-s. See automake documentation for
that.
* issue-586: detect main executable even if PIE is active (based on
patch by user themastermind1). Notably, it fixes profiler use with
ruby.
* there is now support for switching backtrace capturing method at
runtime (via TCMALLOC_STACKTRACE_METHOD and
TCMALLOC_STACKTRACE_METHOD_VERBOSE environment variables)
* there is new backtrace capturing method using -finstrument-functions
prologues contributed by user xiaoyur347
* few cases of crashes/deadlocks in profiler were addressed. See
(famous) issue-66, issue-547 and issue-579.
* issue-464 (memory corruption in debugalloc's realloc after
memallign) is now fixed
* tcmalloc is now able to release memory back to OS on windows
(issue-489). The code was ported from chromium fork (by a number of
authors).
* Together with issue-489 we ported chromium's "aggressive decommit"
mode. In this mode (settable via malloc extension and via
environment variable TCMALLOC_AGGRESSIVE_DECOMMIT), free pages are
returned back to OS immediately.
* MallocExtension::instance() is now faster (based on patch by
Adhemerval Zanella)
* issue-610 (hangs on windows in multibyte locales) is now fixed
The following people helped with ideas or patches (based on git log,
some contributions purely in bugtracker might be missing): Andrew
C. Morrow, yurivict, Wang YanQing, Thomas Klausner,
davide.italiano@10gen.com, Dai MIKURUBE, Joon-Sung Um, Jovan
Zelincevic, Jean Lee, Petr Hosek, Ben Avison, drussel, Joonsoo Kim,
Hannes Weisbach, xiaoyur347, Riku Voipio, Adhemerval Zanella, Raphael
Moreira Zinsly
== 30 July 2013 ==
gperftools 2.1 is out!
Just few fixes where merged after rc. Most notably:
* Some fixes for debug allocation on POWER/Linux
== 20 July 2013 ==
gperftools 2.1rc is out!
As a result of more than a year of contributions we're ready for 2.1
release.
But before making that step I'd like to create RC and make sure people
have chance to test it.
Here are notable changes since 2.0:
* fixes for building on newer platforms. Notably, there's now initial
support for x32 ABI (--enable-minimal only at this time))
* new getNumericProperty stats for cache sizes
* added HEAP_PROFILER_TIME_INTERVAL variable (see documentation)
* added environment variable to control heap size (TCMALLOC_HEAP_LIMIT_MB)
* added environment variable to disable release of memory back to OS
(TCMALLOC_DISABLE_MEMORY_RELEASE)
* cpu profiler can now be switched on and off by sending it a signal
(specified in CPUPROFILESIGNAL)
* (issue 491) fixed race-ful spinlock wake-ups
* (issue 496) added some support for fork-ing of process that is using
tcmalloc
* (issue 368) improved memory fragmentation when large chunks of
memory are allocated/freed
== 03 February 2012 ==
I've just released gperftools 2.0
The `google-perftools` project has been renamed to `gperftools`. I
(csilvers) am stepping down as maintainer, to be replaced by
David Chappelle. Welcome to the team, David! David has been an
an active contributor to perftools in the past -- in fact, he's the
only person other than me that already has commit status. I am
pleased to have him take over as maintainer.
I have both renamed the project (the Google Code site renamed a few
weeks ago), and bumped the major version number up to 2, to reflect
the new community ownership of the project. Almost all the
[http://gperftools.googlecode.com/svn/tags/gperftools-2.0/ChangeLog changes]
are related to the renaming.
The main functional change from google-perftools 1.10 is that
I've renamed the `google/` include-directory to be `gperftools/`
instead. New code should `#include <gperftools/tcmalloc.h>`/etc.
(Most users of perftools don't need any perftools-specific includes at
all, so this is mostly directed to "power users.") I've kept the old
names around as forwarding headers to the new, so `#include
<google/tcmalloc.h>` will continue to work.
(The other functional change which I snuck in is getting rid of some
bash-isms in one of the unittest driver scripts, so it could run on
Solaris.)
Note that some internal names still contain the text `google`, such as
the `google_malloc` internal linker section. I think that's a
trickier transition, and can happen in a future release (if at all).
=== 31 January 2012 ===
I've just released perftools 1.10
There is an API-incompatible change: several of the methods in the
`MallocExtension` class have changed from taking a `void*` to taking a
`const void*`. You should not be affected by this API change
unless you've written your own custom malloc extension that derives
from `MallocExtension`, but since it is a user-visible change, I have
upped the `.so` version number for this release.
This release focuses on improvements to linux-syscall-support.h,
including ARM and PPC fixups and general cleanups. I hope this will
magically fix an array of bugs people have been seeing.
There is also exciting news on the porting front, with support for
patching win64 assembly contributed by IBM Canada! This is an
important step -- perhaps the most difficult -- to getting perftools
to work on 64-bit windows using the patching technique (it doesn't
affect the libc-modification technique). `premable_patcher_test` has
been added to help test these changes; it is meant to compile under
x86_64, and won't work under win32.
For the full list of changes, including improved `HEAP_PROFILE_MMAP`
support, see the
[http://gperftools.googlecode.com/svn/tags/google-perftools-1.10/ChangeLog ChangeLog].
=== 24 January 2011 ===
The `google-perftools` Google Code page has been renamed to
`gperftools`, in preparation for the project being renamed to
`gperftools`. In the coming weeks, I'll be stepping down as
maintainer for the perftools project, and as part of that Google is
relinquishing ownership of the project; it will now be entirely
community run. The name change reflects that shift. The 'g' in
'gperftools' stands for 'great'. :-)
=== 23 December 2011 ===
I've just released perftools 1.9.1
I missed including a file in the tarball, that is needed to compile on
ARM. If you are not compiling on ARM, or have successfully compiled
perftools 1.9, there is no need to upgrade.
=== 22 December 2011 ===
Thu Dec 22 16:22:45 2011 Google Inc. <opensource@google.com> * google-perftools: version 1.9 release * Lightweight check for double-frees (blount) * BUGFIX: Fix pprof to exit properly if run with no args (dagitses) * Suggest ASan as a way to diagnose buggy code (ppluzhnikov) * Get rid of unused CACHELINE_SIZE (csilvers) * Replace atexit() calls with global dtors; helps freebsd (csilvers) * Disable heap-checker under AddressSanitizer (kcc) * Fix bug in powerpc stacktracing (ppluzhnikov) * PERF: Use exponential backoff waiting for spinlocks (m3b) * Fix 64-bit nm on 32-bit binaries in pprof (csilvers) * Add ProfileHandlerDisallowForever (rsc) * BUGFIX: Shell escape when forking in pprof (csilvers) * No longer combine overloaded functions in pprof (csilvers) * Fix address-normalizing bug in pprof (csilvers) * More consistently call abort() instead of exit() on failure (csilvers) * Allow NoGlobalLeaks to be safely called more than once (csilvers) * PORTING/BUGFIX: Fix ARM cycleclock to use volatile asm (dougkwan) * PORTING: 64-bit atomic ops for ARMv7 (dougkwan) * PORTING: Implement stacktrace for ARM (dougkwan) * PORTING: Fix malloc_hook_mmap_linux for ARM (dougkwan) * PORTING: Update linux_syscall_support.h for ARM/etc (evannier, sanek) * PORTING: Fix freebsd to work on x86_64 (chapp...@gmail.com) * PORTING: Added additional SYS_mmap fixes for FreeBSD (chappedm) * PORTING: Allow us to compile on OS X 10.6 and run on 10.5 (raltherr) * PORTING: Check for mingw compilers that *do* define timespec * PORTING: Add "support" for MIPS cycletimer * PORTING: Fix fallback cycle-timer to work with Now (dougkwan) * PERF: Move stack trace collecting out of the mutex (taylorc) * PERF: Get the deallocation stack trace outside the mutex (sean) * Make PageHeap dynamically allocated for leak checks (maxim) * BUGFIX: Fix probing of nm -f behavior in pprof (dpeng) * BUGFIX: Fix a race with the CentralFreeList lock before main (sanjay) * Support /pprof/censusprofile url arguments (rajatjain) * Change IgnoreObject to return its argument (nlewycky) * Update malloc-hook files to support more CPUs * BUGFIX: write our own strstr to avoid libc problems (csilvers) * Use simple callgrind compression facility in pprof * Print an error message when we can't run pprof to symbolize (csilvers) * Die in configure when g++ is't installed (csilvers) * DOC: Beef up the documentation a bit about using libunwind (csilvers) git-svn-id: http://gperftools.googlecode.com/svn/trunk@130 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2011-12-23 00:45:49 +00:00
I've just released perftools 1.9
This change has a slew of improvements, from better ARM and freebsd
support, to improved performance by moving some code outside of locks,
to better pprof reporting of code with overloaded functions.
The full list of changes is in the
[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.9/ChangeLog ChangeLog].
=== 26 August 2011 ===
I've just released perftools 1.8.3
The star-crossed 1.8 series continues; in 1.8.1, I had accidentally
removed some code that was needed for FreeBSD. (Without this code
many apps would crash at startup.) This release re-adds that code.
If you are not on FreeBSD, or are using FreeBSD with perftools 1.8 or
earlier, there is no need to upgrade.
=== 11 August 2011 ===
I've just released perftools 1.8.2
I was incorrectly calculating the patch-level in the configuration
step, meaning the TC_VERSION_PATCH #define in tcmalloc.h was wrong.
Since the testing framework checks for this, it was failing. Now it
should work again. This time, I was careful to re-run my tests after
upping the version number. :-)
If you don't care about the TC_VERSION_PATCH #define, there's no
reason to upgrae.
=== 26 July 2011 ===
I've just released perftools 1.8.1
I was missing an #include that caused the build to break under some
compilers, especially newer gcc's, that wanted it. This only affects
people who build from source, so only the .tar.gz file is updated from
perftools 1.8. If you didn't have any problems compiling perftools
1.8, there's no reason to upgrade.
=== 15 July 2011 ===
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
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/google-perftools-1.8/ChangeLog ChangeLog].
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
=== 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.
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
=== 4 February 2011 ===
Fri Feb 04 15:54:31 2011 Google Inc. <opensource@google.com> * google-perftools: version 1.7 release * Reduce page map key size under x86_64 by 4.4MB (rus) * Remove a flaky malloc-extension test (fdabek) * Improve the performance of PageHeap::New (ond..., csilvers) * Improve sampling_test with no-inline additions/etc (fdabek) * 16-byte align debug allocs (jyasskin) * Change FillProcSelfMaps to detect out-of-buffer-space (csilvers) * Document the need for sampling to use GetHeapSample (csilvers) * Try to read TSC frequency from tsc_freq_khs (adurbin) * Do better at figuring out if tests are running under gdb (ppluzhnikov) * Improve spinlock contention performance (ruemmler) * Better internal-function list for pprof's /contention (ruemmler) * Speed up GoogleOnce (m3b) * Limit number of incoming/outgoing edges in pprof (sanjay) * Add pprof --evince to go along with --gv (csilvers) * Document the various ways to get heap-profiling information (csilvers) * Separate out synchronization profiling routines (ruemmler) * Improve malloc-stats output to be more understandable (csilvers) * Add support for census profiler in pporf (nabeelmian) * Document how pprof's /symbol must support GET requests (csilvers) * Improve acx_pthread.m4 (ssuomi, liujisi) * Speed up pprof's ExtractSymbols (csilvers) * Ignore some known-leaky (java) libraries in the heap checker (davidyu) * Make kHideMask use all 64 bits in tests (ppluzhnikov) * Clean up pprof input-file handling (csilvers) * BUGFIX: Don't crash if __environ is NULL (csilvers) * BUGFIX: Fix totally broken debugallocation tests (csilvers) * BUGFIX: Fix up fake_VDSO handling for unittest (ppluzhnikov) * BUGFIX: Suppress all large allocs when report threshold is 0 (lexie) * BUGFIX: mmap2 on i386 takes an off_t, not off64_t (csilvers) * PORTING: Add missing PERFTOOLS_DLL_DECL (csilvers) * PORTING: Add stddef.h to make newer gcc's happy (csilvers) * PORTING: Document some tricks for working under OS X (csilvers) * PORTING: Don't try to check valgrind for windows (csilvers) * PORTING: Make array-size a var to compile under clang (chandlerc) * PORTING: No longer hook _aligned_malloc and _aligned_free (csilvers) * PORTING: Quiet some gcc warnings (csilvers) * PORTING: Replace %PRIxPTR with %p to be more portable (csilvers) * PORTING: Support systems that capitalize /proc weirdly (sanek) * PORTING: Treat arm3 the same as arm5t in cycletimer (csilvers) * PORTING: Update windows logging to not allocate memory (csilvers) * PORTING: avoid double-patching newer windows DLLs (roger.orr) * PORTING: get dynamic_annotations.c to work on windows (csilvers) * Add pkg-config .pc files for the 5 libraries we produce (csilvers) * Added proper libtool versioning, so this lib will be 0.1.0 (csilvers) * Moved from autoconf 2.64 to 2.65 git-svn-id: http://gperftools.googlecode.com/svn/trunk@102 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2011-02-05 00:19:37 +00:00
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/google-perftools-1.7/ChangeLog ChangeLog]
Fri Feb 04 15:54:31 2011 Google Inc. <opensource@google.com> * google-perftools: version 1.7 release * Reduce page map key size under x86_64 by 4.4MB (rus) * Remove a flaky malloc-extension test (fdabek) * Improve the performance of PageHeap::New (ond..., csilvers) * Improve sampling_test with no-inline additions/etc (fdabek) * 16-byte align debug allocs (jyasskin) * Change FillProcSelfMaps to detect out-of-buffer-space (csilvers) * Document the need for sampling to use GetHeapSample (csilvers) * Try to read TSC frequency from tsc_freq_khs (adurbin) * Do better at figuring out if tests are running under gdb (ppluzhnikov) * Improve spinlock contention performance (ruemmler) * Better internal-function list for pprof's /contention (ruemmler) * Speed up GoogleOnce (m3b) * Limit number of incoming/outgoing edges in pprof (sanjay) * Add pprof --evince to go along with --gv (csilvers) * Document the various ways to get heap-profiling information (csilvers) * Separate out synchronization profiling routines (ruemmler) * Improve malloc-stats output to be more understandable (csilvers) * Add support for census profiler in pporf (nabeelmian) * Document how pprof's /symbol must support GET requests (csilvers) * Improve acx_pthread.m4 (ssuomi, liujisi) * Speed up pprof's ExtractSymbols (csilvers) * Ignore some known-leaky (java) libraries in the heap checker (davidyu) * Make kHideMask use all 64 bits in tests (ppluzhnikov) * Clean up pprof input-file handling (csilvers) * BUGFIX: Don't crash if __environ is NULL (csilvers) * BUGFIX: Fix totally broken debugallocation tests (csilvers) * BUGFIX: Fix up fake_VDSO handling for unittest (ppluzhnikov) * BUGFIX: Suppress all large allocs when report threshold is 0 (lexie) * BUGFIX: mmap2 on i386 takes an off_t, not off64_t (csilvers) * PORTING: Add missing PERFTOOLS_DLL_DECL (csilvers) * PORTING: Add stddef.h to make newer gcc's happy (csilvers) * PORTING: Document some tricks for working under OS X (csilvers) * PORTING: Don't try to check valgrind for windows (csilvers) * PORTING: Make array-size a var to compile under clang (chandlerc) * PORTING: No longer hook _aligned_malloc and _aligned_free (csilvers) * PORTING: Quiet some gcc warnings (csilvers) * PORTING: Replace %PRIxPTR with %p to be more portable (csilvers) * PORTING: Support systems that capitalize /proc weirdly (sanek) * PORTING: Treat arm3 the same as arm5t in cycletimer (csilvers) * PORTING: Update windows logging to not allocate memory (csilvers) * PORTING: avoid double-patching newer windows DLLs (roger.orr) * PORTING: get dynamic_annotations.c to work on windows (csilvers) * Add pkg-config .pc files for the 5 libraries we produce (csilvers) * Added proper libtool versioning, so this lib will be 0.1.0 (csilvers) * Moved from autoconf 2.64 to 2.65 git-svn-id: http://gperftools.googlecode.com/svn/trunk@102 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2011-02-05 00:19:37 +00:00
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!
Thu Aug 5 12:48:03 PDT 2010 * google-perftools: version 1.6 release * Add tc_malloc_usable_size for compatibility with glibc (csilvers) * Override malloc_usable_size with tc_malloc_usable_size (csilvers) * Default to no automatic heap sampling in tcmalloc (csilvers) * Add -DTCMALLOC_LARGE_PAGES, a possibly faster tcmalloc (rus) * Make some functions extern "C" to avoid false ODR warnings (jyasskin) * pprof: Add SVG-based output (rsc) * pprof: Extend pprof --tools to allow per-tool configs (csilvers) * pprof: Improve support of 64-bit and big-endian profiles (csilvers) * pprof: Add interactive callgrind suport (weidenri...) * pprof: Improve address->function mapping a bit (dpeng) * Better detection of when we're running under valgrind (csilvers) * Better CPU-speed detection under valgrind (saito) * Use, and recommend, -fno-builtin-malloc when compiling (csilvers) * Avoid false-sharing of memory between caches (bmaurer) * BUGFIX: Fix heap sampling to use correct alloc size (bmauer) * BUGFIX: Avoid gcc 4.0.x bug by making hook-clearing atomic (csilvers) * BUGFIX: Avoid gcc 4.5.x optimization bug (csilvers) * BUGFIX: Work around deps-determining bug in libtool 1.5.26 (csilvers) * BUGFIX: Fixed test to use HAVE_PTHREAD, not HAVE_PTHREADS (csilvers) * BUGFIX: Fix tls callback behavior on windows when using wpo (wtc) * BUGFIX: properly align allocation sizes on Windows (antonm) * BUGFIX: Fix prototypes for tcmalloc/debugalloc wrt throw() (csilvers) * DOC: Updated heap-checker doc to match reality better (fischman) * DOC: Document ProfilerFlush, ProfilerStartWithOptions (csilvers) * DOC: Update docs for heap-profiler functions (csilvers) * DOC: Clean up documentation around tcmalloc.slack_bytes (fikes) * DOC: Renamed README.windows to README_windows.txt (csilvers) * DOC: Update the NEWS file to be non-empty (csilvers) * PORTING: Fix windows addr2line and nm with proper rc code (csilvers) * PORTING: Add CycleClock and atomicops support for arm 5 (sanek) * PORTING: Improve PC finding on cygwin and redhat 7 (csilvers) * PORTING: speed up function-patching under windows (csilvers) git-svn-id: http://gperftools.googlecode.com/svn/trunk@97 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2010-08-05 20:36:47 +00:00
=== 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
* Suppress all large allocs when report threshold==0 * Clarified meaning of various malloc stats * Change from ATTRIBUTED_DEPRECATED to comments * Make array-size a var to compile under clang * Reduce page map key size under x86_64 by 4.4MB * Added full qualification to MemoryBarrier * Support systems that capitalize /proc weirdly * Avoid gcc warning: exporting type in unnamed ns * Add some dynamic annotations for gcc attributes * Add support for census profiler in pprof * Speed up pprof's ExtractSymbols * Speed up GoogleOnce * Add pkg-config (.pc) files * Detect when __environ exists but is NULL * Improve spinlock contention performance * Add GetFreeListSizes * Improve sampling_test, eg by adding no-inline * Relax malloc_extension test-check for big pages * Add proper library version number information * Update from autoconf 2.64 to 2.65 * Better document how to write a server that works with pprof * Change FillProcSelfMaps to better handle out-of-space * No longer hook _aligned_malloc/free in windows * Handle function-forwarding in DLLs when patching (in windows) * Update .vcproj files that had wrong .cc files in them (!) * get rid of unnecessary 'size < 0' * fix comments a bit in sysinfo.cc * another go at improving malloc-stats output * fix comment typo in profiler.cc * Add a few more thread annotations * Try to read TSC frequency from 'tsc_freq_khz' * Fix annotalysis/TSAN incompatibility * Add pprof --evince to go along with --gv * Document need for sampling to use GetHeapSample * Fix flakiness in malloc_extension_test * Separate out synchronization profiling routines git-svn-id: http://gperftools.googlecode.com/svn/trunk@99 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2010-11-18 01:07:25 +00:00
[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/INSTALL
Thu Aug 5 12:48:03 PDT 2010 * google-perftools: version 1.6 release * Add tc_malloc_usable_size for compatibility with glibc (csilvers) * Override malloc_usable_size with tc_malloc_usable_size (csilvers) * Default to no automatic heap sampling in tcmalloc (csilvers) * Add -DTCMALLOC_LARGE_PAGES, a possibly faster tcmalloc (rus) * Make some functions extern "C" to avoid false ODR warnings (jyasskin) * pprof: Add SVG-based output (rsc) * pprof: Extend pprof --tools to allow per-tool configs (csilvers) * pprof: Improve support of 64-bit and big-endian profiles (csilvers) * pprof: Add interactive callgrind suport (weidenri...) * pprof: Improve address->function mapping a bit (dpeng) * Better detection of when we're running under valgrind (csilvers) * Better CPU-speed detection under valgrind (saito) * Use, and recommend, -fno-builtin-malloc when compiling (csilvers) * Avoid false-sharing of memory between caches (bmaurer) * BUGFIX: Fix heap sampling to use correct alloc size (bmauer) * BUGFIX: Avoid gcc 4.0.x bug by making hook-clearing atomic (csilvers) * BUGFIX: Avoid gcc 4.5.x optimization bug (csilvers) * BUGFIX: Work around deps-determining bug in libtool 1.5.26 (csilvers) * BUGFIX: Fixed test to use HAVE_PTHREAD, not HAVE_PTHREADS (csilvers) * BUGFIX: Fix tls callback behavior on windows when using wpo (wtc) * BUGFIX: properly align allocation sizes on Windows (antonm) * BUGFIX: Fix prototypes for tcmalloc/debugalloc wrt throw() (csilvers) * DOC: Updated heap-checker doc to match reality better (fischman) * DOC: Document ProfilerFlush, ProfilerStartWithOptions (csilvers) * DOC: Update docs for heap-profiler functions (csilvers) * DOC: Clean up documentation around tcmalloc.slack_bytes (fikes) * DOC: Renamed README.windows to README_windows.txt (csilvers) * DOC: Update the NEWS file to be non-empty (csilvers) * PORTING: Fix windows addr2line and nm with proper rc code (csilvers) * PORTING: Add CycleClock and atomicops support for arm 5 (sanek) * PORTING: Improve PC finding on cygwin and redhat 7 (csilvers) * PORTING: speed up function-patching under windows (csilvers) git-svn-id: http://gperftools.googlecode.com/svn/trunk@97 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2010-08-05 20:36:47 +00:00
INSTALL file]; for all changes, see the
* Suppress all large allocs when report threshold==0 * Clarified meaning of various malloc stats * Change from ATTRIBUTED_DEPRECATED to comments * Make array-size a var to compile under clang * Reduce page map key size under x86_64 by 4.4MB * Added full qualification to MemoryBarrier * Support systems that capitalize /proc weirdly * Avoid gcc warning: exporting type in unnamed ns * Add some dynamic annotations for gcc attributes * Add support for census profiler in pprof * Speed up pprof's ExtractSymbols * Speed up GoogleOnce * Add pkg-config (.pc) files * Detect when __environ exists but is NULL * Improve spinlock contention performance * Add GetFreeListSizes * Improve sampling_test, eg by adding no-inline * Relax malloc_extension test-check for big pages * Add proper library version number information * Update from autoconf 2.64 to 2.65 * Better document how to write a server that works with pprof * Change FillProcSelfMaps to better handle out-of-space * No longer hook _aligned_malloc/free in windows * Handle function-forwarding in DLLs when patching (in windows) * Update .vcproj files that had wrong .cc files in them (!) * get rid of unnecessary 'size < 0' * fix comments a bit in sysinfo.cc * another go at improving malloc-stats output * fix comment typo in profiler.cc * Add a few more thread annotations * Try to read TSC frequency from 'tsc_freq_khz' * Fix annotalysis/TSAN incompatibility * Add pprof --evince to go along with --gv * Document need for sampling to use GetHeapSample * Fix flakiness in malloc_extension_test * Separate out synchronization profiling routines git-svn-id: http://gperftools.googlecode.com/svn/trunk@99 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2010-11-18 01:07:25 +00:00
[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/ChangeLog
Thu Aug 5 12:48:03 PDT 2010 * google-perftools: version 1.6 release * Add tc_malloc_usable_size for compatibility with glibc (csilvers) * Override malloc_usable_size with tc_malloc_usable_size (csilvers) * Default to no automatic heap sampling in tcmalloc (csilvers) * Add -DTCMALLOC_LARGE_PAGES, a possibly faster tcmalloc (rus) * Make some functions extern "C" to avoid false ODR warnings (jyasskin) * pprof: Add SVG-based output (rsc) * pprof: Extend pprof --tools to allow per-tool configs (csilvers) * pprof: Improve support of 64-bit and big-endian profiles (csilvers) * pprof: Add interactive callgrind suport (weidenri...) * pprof: Improve address->function mapping a bit (dpeng) * Better detection of when we're running under valgrind (csilvers) * Better CPU-speed detection under valgrind (saito) * Use, and recommend, -fno-builtin-malloc when compiling (csilvers) * Avoid false-sharing of memory between caches (bmaurer) * BUGFIX: Fix heap sampling to use correct alloc size (bmauer) * BUGFIX: Avoid gcc 4.0.x bug by making hook-clearing atomic (csilvers) * BUGFIX: Avoid gcc 4.5.x optimization bug (csilvers) * BUGFIX: Work around deps-determining bug in libtool 1.5.26 (csilvers) * BUGFIX: Fixed test to use HAVE_PTHREAD, not HAVE_PTHREADS (csilvers) * BUGFIX: Fix tls callback behavior on windows when using wpo (wtc) * BUGFIX: properly align allocation sizes on Windows (antonm) * BUGFIX: Fix prototypes for tcmalloc/debugalloc wrt throw() (csilvers) * DOC: Updated heap-checker doc to match reality better (fischman) * DOC: Document ProfilerFlush, ProfilerStartWithOptions (csilvers) * DOC: Update docs for heap-profiler functions (csilvers) * DOC: Clean up documentation around tcmalloc.slack_bytes (fikes) * DOC: Renamed README.windows to README_windows.txt (csilvers) * DOC: Update the NEWS file to be non-empty (csilvers) * PORTING: Fix windows addr2line and nm with proper rc code (csilvers) * PORTING: Add CycleClock and atomicops support for arm 5 (sanek) * PORTING: Improve PC finding on cygwin and redhat 7 (csilvers) * PORTING: speed up function-patching under windows (csilvers) git-svn-id: http://gperftools.googlecode.com/svn/trunk@97 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2010-08-05 20:36:47 +00:00
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
* Suppress all large allocs when report threshold==0 * Clarified meaning of various malloc stats * Change from ATTRIBUTED_DEPRECATED to comments * Make array-size a var to compile under clang * Reduce page map key size under x86_64 by 4.4MB * Added full qualification to MemoryBarrier * Support systems that capitalize /proc weirdly * Avoid gcc warning: exporting type in unnamed ns * Add some dynamic annotations for gcc attributes * Add support for census profiler in pprof * Speed up pprof's ExtractSymbols * Speed up GoogleOnce * Add pkg-config (.pc) files * Detect when __environ exists but is NULL * Improve spinlock contention performance * Add GetFreeListSizes * Improve sampling_test, eg by adding no-inline * Relax malloc_extension test-check for big pages * Add proper library version number information * Update from autoconf 2.64 to 2.65 * Better document how to write a server that works with pprof * Change FillProcSelfMaps to better handle out-of-space * No longer hook _aligned_malloc/free in windows * Handle function-forwarding in DLLs when patching (in windows) * Update .vcproj files that had wrong .cc files in them (!) * get rid of unnecessary 'size < 0' * fix comments a bit in sysinfo.cc * another go at improving malloc-stats output * fix comment typo in profiler.cc * Add a few more thread annotations * Try to read TSC frequency from 'tsc_freq_khz' * Fix annotalysis/TSAN incompatibility * Add pprof --evince to go along with --gv * Document need for sampling to use GetHeapSample * Fix flakiness in malloc_extension_test * Separate out synchronization profiling routines git-svn-id: http://gperftools.googlecode.com/svn/trunk@99 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2010-11-18 01:07:25 +00:00
attributes to `___semwait_signal`. This is work being done in other
Thu Aug 5 12:48:03 PDT 2010 * google-perftools: version 1.6 release * Add tc_malloc_usable_size for compatibility with glibc (csilvers) * Override malloc_usable_size with tc_malloc_usable_size (csilvers) * Default to no automatic heap sampling in tcmalloc (csilvers) * Add -DTCMALLOC_LARGE_PAGES, a possibly faster tcmalloc (rus) * Make some functions extern "C" to avoid false ODR warnings (jyasskin) * pprof: Add SVG-based output (rsc) * pprof: Extend pprof --tools to allow per-tool configs (csilvers) * pprof: Improve support of 64-bit and big-endian profiles (csilvers) * pprof: Add interactive callgrind suport (weidenri...) * pprof: Improve address->function mapping a bit (dpeng) * Better detection of when we're running under valgrind (csilvers) * Better CPU-speed detection under valgrind (saito) * Use, and recommend, -fno-builtin-malloc when compiling (csilvers) * Avoid false-sharing of memory between caches (bmaurer) * BUGFIX: Fix heap sampling to use correct alloc size (bmauer) * BUGFIX: Avoid gcc 4.0.x bug by making hook-clearing atomic (csilvers) * BUGFIX: Avoid gcc 4.5.x optimization bug (csilvers) * BUGFIX: Work around deps-determining bug in libtool 1.5.26 (csilvers) * BUGFIX: Fixed test to use HAVE_PTHREAD, not HAVE_PTHREADS (csilvers) * BUGFIX: Fix tls callback behavior on windows when using wpo (wtc) * BUGFIX: properly align allocation sizes on Windows (antonm) * BUGFIX: Fix prototypes for tcmalloc/debugalloc wrt throw() (csilvers) * DOC: Updated heap-checker doc to match reality better (fischman) * DOC: Document ProfilerFlush, ProfilerStartWithOptions (csilvers) * DOC: Update docs for heap-profiler functions (csilvers) * DOC: Clean up documentation around tcmalloc.slack_bytes (fikes) * DOC: Renamed README.windows to README_windows.txt (csilvers) * DOC: Update the NEWS file to be non-empty (csilvers) * PORTING: Fix windows addr2line and nm with proper rc code (csilvers) * PORTING: Add CycleClock and atomicops support for arm 5 (sanek) * PORTING: Improve PC finding on cygwin and redhat 7 (csilvers) * PORTING: speed up function-patching under windows (csilvers) git-svn-id: http://gperftools.googlecode.com/svn/trunk@97 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2010-08-05 20:36:47 +00:00
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].
Fri Feb 04 15:54:31 2011 Google Inc. <opensource@google.com> * google-perftools: version 1.7 release * Reduce page map key size under x86_64 by 4.4MB (rus) * Remove a flaky malloc-extension test (fdabek) * Improve the performance of PageHeap::New (ond..., csilvers) * Improve sampling_test with no-inline additions/etc (fdabek) * 16-byte align debug allocs (jyasskin) * Change FillProcSelfMaps to detect out-of-buffer-space (csilvers) * Document the need for sampling to use GetHeapSample (csilvers) * Try to read TSC frequency from tsc_freq_khs (adurbin) * Do better at figuring out if tests are running under gdb (ppluzhnikov) * Improve spinlock contention performance (ruemmler) * Better internal-function list for pprof's /contention (ruemmler) * Speed up GoogleOnce (m3b) * Limit number of incoming/outgoing edges in pprof (sanjay) * Add pprof --evince to go along with --gv (csilvers) * Document the various ways to get heap-profiling information (csilvers) * Separate out synchronization profiling routines (ruemmler) * Improve malloc-stats output to be more understandable (csilvers) * Add support for census profiler in pporf (nabeelmian) * Document how pprof's /symbol must support GET requests (csilvers) * Improve acx_pthread.m4 (ssuomi, liujisi) * Speed up pprof's ExtractSymbols (csilvers) * Ignore some known-leaky (java) libraries in the heap checker (davidyu) * Make kHideMask use all 64 bits in tests (ppluzhnikov) * Clean up pprof input-file handling (csilvers) * BUGFIX: Don't crash if __environ is NULL (csilvers) * BUGFIX: Fix totally broken debugallocation tests (csilvers) * BUGFIX: Fix up fake_VDSO handling for unittest (ppluzhnikov) * BUGFIX: Suppress all large allocs when report threshold is 0 (lexie) * BUGFIX: mmap2 on i386 takes an off_t, not off64_t (csilvers) * PORTING: Add missing PERFTOOLS_DLL_DECL (csilvers) * PORTING: Add stddef.h to make newer gcc's happy (csilvers) * PORTING: Document some tricks for working under OS X (csilvers) * PORTING: Don't try to check valgrind for windows (csilvers) * PORTING: Make array-size a var to compile under clang (chandlerc) * PORTING: No longer hook _aligned_malloc and _aligned_free (csilvers) * PORTING: Quiet some gcc warnings (csilvers) * PORTING: Replace %PRIxPTR with %p to be more portable (csilvers) * PORTING: Support systems that capitalize /proc weirdly (sanek) * PORTING: Treat arm3 the same as arm5t in cycletimer (csilvers) * PORTING: Update windows logging to not allocate memory (csilvers) * PORTING: avoid double-patching newer windows DLLs (roger.orr) * PORTING: get dynamic_annotations.c to work on windows (csilvers) * Add pkg-config .pc files for the 5 libraries we produce (csilvers) * Added proper libtool versioning, so this lib will be 0.1.0 (csilvers) * Moved from autoconf 2.64 to 2.65 git-svn-id: http://gperftools.googlecode.com/svn/trunk@102 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
2011-02-05 00:19:37 +00:00
=== 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!