15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)== 03 February 2012 == 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released gperftools 2.0 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The `google-perftools` project has been renamed to `gperftools`. I 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(csilvers) am stepping down as maintainer, to be replaced by 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)David Chappelle. Welcome to the team, David! David has been an 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)an active contributor to perftools in the past -- in fact, he's the 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)only person other than me that already has commit status. I am 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)pleased to have him take over as maintainer. 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I have both renamed the project (the Google Code site renamed a few 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)weeks ago), and bumped the major version number up to 2, to reflect 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the new community ownership of the project. Almost all the 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://gperftools.googlecode.com/svn/tags/gperftools-2.0/ChangeLog changes] 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)are related to the renaming. 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The main functional change from google-perftools 1.10 is that 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've renamed the `google/` include-directory to be `gperftools/` 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)instead. New code should `#include <gperftools/tcmalloc.h>`/etc. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(Most users of perftools don't need any perftools-specific includes at 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)all, so this is mostly directed to "power users.") I've kept the old 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)names around as forwarding headers to the new, so `#include 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)<google/tcmalloc.h>` will continue to work. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(The other functional change which I snuck in is getting rid of some 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bash-isms in one of the unittest driver scripts, so it could run on 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Solaris.) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Note that some internal names still contain the text `google`, such as 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the `google_malloc` internal linker section. I think that's a 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)trickier transition, and can happen in a future release (if at all). 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 31 January 2012 === 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.10 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)There is an API-incompatible change: several of the methods in the 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`MallocExtension` class have changed from taking a `void*` to taking a 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`const void*`. You should not be affected by this API change 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)unless you've written your own custom malloc extension that derives 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from `MallocExtension`, but since it is a user-visible change, I have 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)upped the `.so` version number for this release. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This release focuses on improvements to linux-syscall-support.h, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)including ARM and PPC fixups and general cleanups. I hope this will 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)magically fix an array of bugs people have been seeing. 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)There is also exciting news on the porting front, with support for 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)patching win64 assembly contributed by IBM Canada! This is an 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)important step -- perhaps the most difficult -- to getting perftools 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to work on 64-bit windows using the patching technique (it doesn't 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)affect the libc-modification technique). `premable_patcher_test` has 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)been added to help test these changes; it is meant to compile under 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)x86_64, and won't work under win32. 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)For the full list of changes, including improved `HEAP_PROFILE_MMAP` 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)support, see the 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://gperftools.googlecode.com/svn/tags/google-perftools-1.10/ChangeLog ChangeLog]. 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 24 January 2011 === 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The `google-perftools` Google Code page has been renamed to 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`gperftools`, in preparation for the project being renamed to 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`gperftools`. In the coming weeks, I'll be stepping down as 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)maintainer for the perftools project, and as part of that Google is 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)relinquishing ownership of the project; it will now be entirely 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)community run. The name change reflects that shift. The 'g' in 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)'gperftools' stands for 'great'. :-) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 23 December 2011 === 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.9.1 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I missed including a file in the tarball, that is needed to compile on 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ARM. If you are not compiling on ARM, or have successfully compiled 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)perftools 1.9, there is no need to upgrade. 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 22 December 2011 === 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.9 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This change has a slew of improvements, from better ARM and freebsd 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)support, to improved performance by moving some code outside of locks, 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to better pprof reporting of code with overloaded functions. 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The full list of changes is in the 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.9/ChangeLog ChangeLog]. 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 26 August 2011 === 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.8.3 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The star-crossed 1.8 series continues; in 1.8.1, I had accidentally 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)removed some code that was needed for FreeBSD. (Without this code 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)many apps would crash at startup.) This release re-adds that code. 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If you are not on FreeBSD, or are using FreeBSD with perftools 1.8 or 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)earlier, there is no need to upgrade. 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 11 August 2011 === 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.8.2 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I was incorrectly calculating the patch-level in the configuration 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)step, meaning the TC_VERSION_PATCH #define in tcmalloc.h was wrong. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Since the testing framework checks for this, it was failing. Now it 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)should work again. This time, I was careful to re-run my tests after 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)upping the version number. :-) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If you don't care about the TC_VERSION_PATCH #define, there's no 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)reason to upgrae. 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 26 July 2011 === 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.8.1 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I was missing an #include that caused the build to break under some 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compilers, especially newer gcc's, that wanted it. This only affects 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)people who build from source, so only the .tar.gz file is updated from 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)perftools 1.8. If you didn't have any problems compiling perftools 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)1.8, there's no reason to upgrade. 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 15 July 2011 === 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.8 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Of the many changes in this release, a good number pertain to porting. 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've revamped OS X support to use the malloc-zone framework; it should 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)now Just Work to link in tcmalloc, without needing 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`DYLD_FORCE_FLAT_NAMESPACE` or the like. (This is a pretty major 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)change, so please feel free to report feedback at 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)google-perftools@googlegroups.com.) 64-bit Windows support is also 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)improved, as is ARM support, and the hooks are in place to improve 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FreeBSD support as well. 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)On the other hand, I'm seeing hanging tests on Cygwin. I see the same 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)hanging even with (the old) perftools 1.7, so I'm guessing this is 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)either a problem specific to my Cygwin installation, or nobody is 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)trying to use perftools under Cygwin. If you can reproduce the 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)problem, and even better have a solution, you can report it at 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)google-perftools@googlegroups.com. 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Internal changes include several performance and space-saving tweaks. 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)One is user-visible (but in "stealth mode", and otherwise 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)undocumented): you can compile with `-DTCMALLOC_SMALL_BUT_SLOW`. In 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)this mode, tcmalloc will use less memory overhead, at the cost of 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)running (likely not noticeably) slower. 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)There are many other changes as well, too numerous to recount here, 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)but present in the 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.8/ChangeLog ChangeLog]. 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 7 February 2011 === 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Thanks to endlessr..., who 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://code.google.com/p/google-perftools/issues/detail?id=307 identified] 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)why some tests were failing under MSVC 10 in release mode. It does not look 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)like these failures point toward any problem with tcmalloc itself; rather, the 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)problem is with the test, which made some assumptions that broke under the 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)some aggressive optimizations used in MSVC 10. I'll fix the test, but in 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the meantime, feel free to use perftools even when compiled under MSVC 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)10. 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 4 February 2011 === 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.7 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I apologize for the delay since the last release; so many great new 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)patches and bugfixes kept coming in (and are still coming in; I also 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)apologize to those folks who have to slip until the next release). I 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)picked this arbitrary time to make a cut. 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Among the many new features in this release is a multi-megabyte 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)reduction in the amount of tcmalloc overhead uder x86_64, improved 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)performance in the case of contention, and many many bugfixes, 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)especially architecture-specific bugfixes. See the 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/google-perftools-1.7/ChangeLog ChangeLog] 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for full details. 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)One architecture-specific change of note is added comments in the 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/perftools-1.7/README README] 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for using tcmalloc under OS X. I'm trying to get my head around the 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exact behavior of the OS X linker, and hope to have more improvements 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for the next release, but I hope these notes help folks who have been 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)having trouble with tcmalloc on OS X. 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*Windows users*: I've heard reports that some unittests fail on 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Windows when compiled with MSVC 10 in Release mode. All tests pass in 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Debug mode. I've not heard of any problems with earlier versions of 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MSVC. I don't know if this is a problem with the runtime patching (so 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the static patching discussed in README_windows.txt will still work), 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)a problem with perftools more generally, or a bug in MSVC 10. Anyone 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)with windows expertise that can debug this, I'd be glad to hear from! 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 5 August 2010 === 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.6 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This version also has a large number of minor changes, including 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)support for `malloc_usable_size()` as a glibc-compatible alias to 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`malloc_size()`, the addition of SVG-based output to `pprof`, and 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)experimental support for tcmalloc large pages, which may speed up 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)tcmalloc at the cost of greater memory use. To use tcmalloc large 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)pages, see the 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/INSTALL 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTALL file]; for all changes, see the 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/perftools-1.6/ChangeLog 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ChangeLog]. 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OS X NOTE: improvements in the profiler unittest have turned up an OS 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)X issue: in multithreaded programs, it seems that OS X often delivers 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the profiling signal (from sigitimer()) to the main thread, even when 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)it's sleeping, rather than spawned threads that are doing actual work. 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If anyone knows details of how OS X handles SIGPROF events (from 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)setitimer) in threaded programs, and has insight into this problem, 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)please send mail to google-perftools@googlegroups.com. 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)To see if you're affected by this, look for profiling time that pprof 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)attributes to `___semwait_signal`. This is work being done in other 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)threads, that is being attributed to sleeping-time in the main thread. 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 20 January 2010 === 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.5 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This version has a slew of changes, leading to somewhat faster 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)performance and improvements in portability. It adds features like 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`ITIMER_REAL` support to the cpu profiler, and `tc_set_new_mode` to 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)mimic the windows function of the same name. Full details are in the 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://google-perftools.googlecode.com/svn/tags/perftools-1.5/ChangeLog 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ChangeLog]. 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 11 September 2009 === 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.4 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The major change this release is the addition of a debugging malloc 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library! If you link with `libtcmalloc_debug.so` instead of 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`libtcmalloc.so` (and likewise for the `minimal` variants) you'll get 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)a debugging malloc, which will catch double-frees, writes to freed 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)data, `free`/`delete` and `delete`/`delete[]` mismatches, and even 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(optionally) writes past the end of an allocated block. 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)We plan to do more with this library in the future, including 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)supporting it on Windows, and adding the ability to use the debugging 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library with your default malloc in addition to using it with 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)tcmalloc. 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)There are also the usual complement of bug fixes, documented in the 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ChangeLog, and a few minor user-tunable knobs added to components like 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the system allocator. 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 9 June 2009 === 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.3 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Like 1.2, this has a variety of bug fixes, especially related to the 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Windows build. One of my bugfixes is to undo the weird `ld -r` fix to 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`.a` files that I introduced in perftools 1.2: it caused problems on 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)too many platforms. I've reverted back to normal `.a` files. To work 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)around the original problem that prompted the `ld -r` fix, I now 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)provide `libtcmalloc_and_profiler.a`, for folks who want to link in 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)both. 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The most interesting API change is that I now not only override 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`malloc`/`free`/etc, I also expose them via a unique set of symbols: 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`tc_malloc`/`tc_free`/etc. This enables clients to write their own 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)memory wrappers that use tcmalloc: 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){{{ 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void* malloc(size_t size) { void* r = tc_malloc(size); Log(r); return r; } 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}}} 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 17 April 2009 === 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.2. 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This is mostly a bugfix release. The major change is internal: I have 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)a new system for creating packages, which allows me to create 64-bit 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)packages. (I still don't do that for perftools, because there is 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)still no great 64-bit solution, with libunwind still giving problems 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)and --disable-frame-pointers not practical in every environment.) 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Another interesting change involves Windows: a 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://code.google.com/p/google-perftools/issues/detail?id=126 new 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)patch] allows users to choose to override malloc/free/etc on Windows 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)rather than patching, as is done now. This can be used to create 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)custom CRTs. 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)My fix for this 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://groups.google.com/group/google-perftools/browse_thread/thread/1ff9b50043090d9d/a59210c4206f2060?lnk=gst&q=dynamic#a59210c4206f2060 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bug involving static linking] ended up being to make libtcmalloc.a and 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libperftools.a a big .o file, rather than a true `ar` archive. This 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)should not yield any problems in practice -- in fact, it should be 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)better, since the heap profiler, leak checker, and cpu profiler will 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)now all work even with the static libraries -- but if you find it 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)does, please file a bug report. 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Finally, the profile_handler_unittest provided in the perftools 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)testsuite (new in this release) is failing on FreeBSD. The end-to-end 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test that uses the profile-handler is passing, so I suspect the 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)problem may be with the test, not the perftools code itself. However, 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I do not know enough about how itimers work on FreeBSD to be able to 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)debug it. If you can figure it out, please let me know! 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)=== 11 March 2009 === 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)I've just released perftools 1.1! 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)It has many changes since perftools 1.0 including 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Faster performance due to dynamically sized thread caches 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Better heap-sampling for more realistic profiles 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Improved support on Windows (MSVC 7.1 and cygwin) 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Better stacktraces in linux (using VDSO) 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Many bug fixes and feature requests 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Note: if you use the CPU-profiler with applications that fork without 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)doing an exec right afterwards, please see the README. Recent testing 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)has shown that profiles are unreliable in that case. The problem has 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)existed since the first release of perftools. We expect to have a fix 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for perftools 1.2. For more details, see 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)[http://code.google.com/p/google-perftools/issues/detail?id=105 issue 105]. 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Everyone who uses perftools 1.0 is encouraged to upgrade to perftools 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)1.1. If you see any problems with the new release, please file a bug 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)report at http://code.google.com/p/google-perftools/issues/list. 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Enjoy! 339