google-perftools

詳細情報

タイトル google-perftools
URL https://github.com/gperftools/gperftools
バージョン ver 2.18.1
更新日 2026/03/07
追加日 2013/08/17
種別 フリーソフト
説明 高速malloc()やCPU解析を搭載したプロファイリングツール。

レビュー

概要

google-perftools(現在の名称:gperftools)は、Googleが開発したC/C++プログラム向けの高性能なパフォーマンス分析ツールセットです。高速なマルチスレッド対応メモリアロケーター「tcmalloc」と、CPUプロファイラー・ヒーププロファイラーを組み合わせており、大規模なサーバーアプリケーションのパフォーマンス改善に活用されています。元々はGoogle社内ツールとして開発され、オープンソース化されました。pprofツールはその後Go言語で書き直され、独立したプロジェクトとして分離しています。現在のバージョンは2.18.1です。

主要な特徴・機能

  • tcmalloc(Thread-Caching Malloc) - マルチスレッド対応の高速メモリアロケーター。標準のmalloc()より大幅に高速
  • CPUプロファイラー - 環境変数CPUPROFILEでCPU使用率を詳細に分析
  • ヒーププロファイラー - HEAPPROFILE環境変数でメモリ使用量・リークを検出
  • ヒープチェッカー - メモリリークの自動検出
  • pprofサポート - プロファイルデータの可視化・分析ツール連携
  • クロスプラットフォーム - Linux(x86・aarch64・RISC-V)・FreeBSD・macOS対応
  • リンクするだけで高速化 - -ltcmallocオプションを追加するだけで既存アプリを高速化可能

対象ユーザー

  • C/C++で書かれた高パフォーマンスなサーバーアプリケーションの開発者
  • メモリリークやパフォーマンスボトルネックを調査するエンジニア
  • 大規模分散システムのパフォーマンスチューニングを行うSRE・インフラエンジニア
  • システムプログラミングを学ぶ開発者

ライセンス情報

BSD-3-Clause ライセンスのオープンソースソフトウェアです。ソースコードはGitHub(https://github.com/gperftools/gperftools)で公開されており、商用・非商用を問わず無償で利用・改変・再配布が可能です。

スクリーンショット

更新グラフ

バージョン履歴

gperftools-2.18.1

gperftools 2.18.1 is out!

This release contains just one trivial fix for compilation failure on PPC.

gperftools-2.18

gperftools 2.18 is out!

This release contains a number of improvements for the bazel build system, in particular for Windows. Plus a number of correctness fixes.

Notable changes:

  • Correctness of C23 sized deallocation (free_sized) vs realloc has been fixed. Previously, free_sized could crash the process when used on reallocated objects. This also significantly changes the behavior of realloc. Previously, we had heuristics to avoid shrinking if the new size was at least 50% of the old size, and to pad small growths to at least 1.25x the original size. These heuristics have been removed to ensure compatibility with free_sized.
  • Bazel build support for Windows has been significantly improved, now working with MinGW and MSVC.
  • We now have an experimental :tcmalloc_minimal_nopatch Bazel target for Windows.
  • Fast TL
(省略されました)
gperftools-2.17.2

Couple bugs were found in the recently introduced changes. So this is another point release with some fixes.

gperftools-2.17.1

There was just one fix submitted since 2.17. graysky has contributed build fix for (legacy, 32-bit) ARMs. Huge thanks!

gperftools-2.17

gperftools 2.17 is out!

We have had a few relatively simple updates since the RC release.

  • Salvatore Dipietro has contributed SB instruction support for spinlock delay loops on newer ARMs.

  • libgcc backtrace capturing method now handles deep backtraces better.

  • PPC+musl users can now workaround some issues building PPC-specific backtrace code by adding TCMALLOC_DISABLE_PPC_FRAME_POINTER_BACKTRACER preprocessor define. Much thanks to Josef Schlehofer for reporting the problem. See details in #1602.

  • Jackie Cui has contributed a small change to the page heap span selection logic that makes a big difference in reducing the amount of used memory in some workloads. See #1604 for further details.

Much thanks to all the contributors.

You can f

(省略されました)
gperftools-2.16.90 Pre-release
Pre-release

gperftools 2.17rc is out!

2.17 headline changes are removal of heap leak checker and removal of legacy Perl pprof implementation. People should install and use much, much improved pprof implementation from github.com/google/pprof.

Here is a complete list of reasonably notable changes:

  • [headline] heap leak checker has been amputated, as promised earlier
  • [headline] we don't ship pprof anymore. People need to get modern and awesome pprof implementation from github.com/google/pprof
  • we now have some basic CI infrastructure via Github Actions
  • we now have basic Bazel support
  • our docs have been slightly updated and converted to AsciiDoc format
  • we now implement C23 free{,_aligned}_siz
(省略されました)
gperftools-2.16

gperftools 2.16 is out!

This release doesn't have major fixes or big headline features, but it has quite a lot of internal modernizations and cleanups. By the number of commits, 2.16 is going to be our biggest release ever.

This release's main focus was making our code and building infrastructure simpler, more straightforward, more portable, and more modern.

Please note that the gperftools 2.16 release will be the last release with the heap leak checker included. The time has come to drop this feature entirely. All users should migrate to relevant gcc/clang sanitizers.

Here are the most notable changes:

  • we've upgraded our C++ standard to C++ 17. Some fraction of our code base was modernized.

  • We've integrated (vendored copy of) GoogleTest, and most tests now use it. GoogleTest has helped us elimina

(省略されました)
gperftools-2.15.90 Pre-release
Pre-release

gperftools 2.16rc is out!

This release doesn't have major fixes or big headline features, but it has quite a lot of internal modernizations and cleanups. By the number of commits, 2.16 is going to be our biggest release ever.

This release's main focus was making our code and building infrastructure simpler, more straightforward, more portable, and more modern.

Please note that the gperftools 2.16 release will be the last release with the heap leak checker included. The time has come to drop this feature entirely. All users should migrate to relevant gcc/clang sanitizers.

Here are the most notable changes:

  • we've upgraded our C++ standard to C++ 17. Some fraction of our code base was modernized.

(省略されました)
gperftools-2.15

This release has the following bug fixes:

  • Xiaowei Wang has pointed out the pthread linking issue on cmake on older glibcs (where -pthread is not implicit). See #1473 for more details.

  • Mikael Simberg and Tom "spot" Callaway have pointed out the missing symbols issue when linking PPC or i386 builds. #1474 has all the details.

Huge thanks to all contributors!

gperftools-2.14

gperftools 2.14 is out!

This release has the following set of notable changes:

  • Roman Geissler has contributed a fix to nasty initialization bug introduced in 2.13 (see github issue #1452 for one example where it fails).

  • spinlock delay support now has proper windows support. Instead of simply sleeping, it uses WaitOnAddress (which is basically windows equivalent of futexes). This improvement was contributed by Lennox Ho.

  • we now have basic QNX support (basic malloc + heap profiler) championed by Xiang.Lin. Thanks! Do note, however, that QNX doesn't provide SIGPROF ticks, so there will be no cpu profiler support on this OS.

  • Yikai Zhao has contributed several fixes to important corner cases of generic_fp stacktrace method.

  • several people have contributed v

(省略されました)
gperftools-2.12

Brett T. Warden contributed one significant fix. After a change in the previous release, we installed broken pkg-config files. Brett noticed and fixed that. Huge thanks!