Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 3CF06200C0B for ; Sun, 29 Jan 2017 22:24:34 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 3B77D160B64; Sun, 29 Jan 2017 21:24:34 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 71B6C160B5E for ; Sun, 29 Jan 2017 22:24:32 +0100 (CET) Received: (qmail 84140 invoked by uid 500); 29 Jan 2017 21:24:31 -0000 Mailing-List: contact commits-help@quickstep.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@quickstep.incubator.apache.org Delivered-To: mailing list commits@quickstep.incubator.apache.org Received: (qmail 84124 invoked by uid 99); 29 Jan 2017 21:24:31 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 29 Jan 2017 21:24:31 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id E0ADB18043F for ; Sun, 29 Jan 2017 21:24:30 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -6.219 X-Spam-Level: X-Spam-Status: No, score=-6.219 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-2.999] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id as2EEn_vIUyJ for ; Sun, 29 Jan 2017 21:24:18 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with SMTP id 341D65FCE6 for ; Sun, 29 Jan 2017 21:24:16 +0000 (UTC) Received: (qmail 79279 invoked by uid 99); 29 Jan 2017 21:23:00 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 29 Jan 2017 21:23:00 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 60E62DFCE8; Sun, 29 Jan 2017 21:23:00 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: jianqiao@apache.org To: commits@quickstep.incubator.apache.org Date: Sun, 29 Jan 2017 21:23:16 -0000 Message-Id: In-Reply-To: <8803a134f3d64ca79e257f8c349eb371@git.apache.org> References: <8803a134f3d64ca79e257f8c349eb371@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [18/55] [partial] incubator-quickstep git commit: Make the third party directory leaner. archived-at: Sun, 29 Jan 2017 21:24:34 -0000 http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/t-test1.times.txt ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/t-test1.times.txt b/third_party/gperftools/doc/t-test1.times.txt deleted file mode 100644 index 0163693..0000000 --- a/third_party/gperftools/doc/t-test1.times.txt +++ /dev/null @@ -1,480 +0,0 @@ -time.1.ptmalloc.64:0.56 user 0.02 system 0.57 elapsed 100% CPU -time.1.tcmalloc.64:0.38 user 0.02 system 0.40 elapsed 98% CPU -time.1.ptmalloc.128:0.61 user 0.01 system 0.61 elapsed 101% CPU -time.1.tcmalloc.128:0.35 user 0.00 system 0.35 elapsed 99% CPU -time.1.ptmalloc.256:0.59 user 0.01 system 0.60 elapsed 100% CPU -time.1.tcmalloc.256:0.27 user 0.02 system 0.28 elapsed 102% CPU -time.1.ptmalloc.512:0.57 user 0.00 system 0.57 elapsed 100% CPU -time.1.tcmalloc.512:0.25 user 0.01 system 0.25 elapsed 101% CPU -time.1.ptmalloc.1024:0.52 user 0.00 system 0.52 elapsed 99% CPU -time.1.tcmalloc.1024:0.22 user 0.02 system 0.24 elapsed 97% CPU -time.1.ptmalloc.2048:0.47 user 0.00 system 0.47 elapsed 99% CPU -time.1.tcmalloc.2048:0.22 user 0.02 system 0.25 elapsed 95% CPU -time.1.ptmalloc.4096:0.48 user 0.01 system 0.48 elapsed 100% CPU -time.1.tcmalloc.4096:0.25 user 0.01 system 0.25 elapsed 100% CPU -time.1.ptmalloc.8192:0.49 user 0.02 system 0.49 elapsed 102% CPU -time.1.tcmalloc.8192:0.27 user 0.02 system 0.28 elapsed 101% CPU -time.1.ptmalloc.16384:0.51 user 0.04 system 0.55 elapsed 99% CPU -time.1.tcmalloc.16384:0.35 user 0.02 system 0.37 elapsed 100% CPU -time.1.ptmalloc.32768:0.53 user 0.14 system 0.66 elapsed 100% CPU -time.1.tcmalloc.32768:0.67 user 0.02 system 0.69 elapsed 99% CPU -time.1.ptmalloc.65536:0.68 user 0.31 system 0.98 elapsed 100% CPU -time.1.tcmalloc.65536:0.71 user 0.01 system 0.72 elapsed 99% CPU -time.1.ptmalloc.131072:0.90 user 0.72 system 1.62 elapsed 99% CPU -time.1.tcmalloc.131072:0.94 user 0.03 system 0.97 elapsed 99% CPU -time.2.ptmalloc.64:1.05 user 0.00 system 0.53 elapsed 196% CPU -time.2.tcmalloc.64:0.66 user 0.03 system 0.37 elapsed 185% CPU -time.2.ptmalloc.128:1.77 user 0.01 system 0.89 elapsed 198% CPU -time.2.tcmalloc.128:0.53 user 0.01 system 0.29 elapsed 184% CPU -time.2.ptmalloc.256:1.14 user 0.01 system 0.62 elapsed 182% CPU -time.2.tcmalloc.256:0.45 user 0.02 system 0.26 elapsed 180% CPU -time.2.ptmalloc.512:1.26 user 0.40 system 1.79 elapsed 92% CPU -time.2.tcmalloc.512:0.43 user 0.02 system 0.27 elapsed 166% CPU -time.2.ptmalloc.1024:0.98 user 0.03 system 0.56 elapsed 179% CPU -time.2.tcmalloc.1024:0.44 user 0.02 system 0.34 elapsed 134% CPU -time.2.ptmalloc.2048:0.87 user 0.02 system 0.44 elapsed 199% CPU -time.2.tcmalloc.2048:0.49 user 0.02 system 0.34 elapsed 148% CPU -time.2.ptmalloc.4096:0.92 user 0.03 system 0.48 elapsed 196% CPU -time.2.tcmalloc.4096:0.50 user 0.02 system 0.49 elapsed 105% CPU -time.2.ptmalloc.8192:1.05 user 0.04 system 0.55 elapsed 196% CPU -time.2.tcmalloc.8192:0.59 user 0.01 system 0.51 elapsed 116% CPU -time.2.ptmalloc.16384:1.30 user 0.14 system 0.72 elapsed 198% CPU -time.2.tcmalloc.16384:0.63 user 0.03 system 0.68 elapsed 96% CPU -time.2.ptmalloc.32768:1.33 user 0.56 system 1.00 elapsed 189% CPU -time.2.tcmalloc.32768:1.16 user 0.01 system 1.17 elapsed 99% CPU -time.2.ptmalloc.65536:1.86 user 1.79 system 2.01 elapsed 181% CPU -time.2.tcmalloc.65536:1.35 user 0.01 system 1.35 elapsed 100% CPU -time.2.ptmalloc.131072:2.61 user 5.19 system 4.81 elapsed 162% CPU -time.2.tcmalloc.131072:1.86 user 0.04 system 1.90 elapsed 100% CPU -time.3.ptmalloc.64:1.79 user 0.03 system 0.67 elapsed 268% CPU -time.3.tcmalloc.64:1.58 user 0.04 system 0.62 elapsed 260% CPU -time.3.ptmalloc.128:2.77 user 1.34 system 3.07 elapsed 133% CPU -time.3.tcmalloc.128:1.19 user 0.01 system 0.50 elapsed 236% CPU -time.3.ptmalloc.256:2.14 user 0.02 system 0.85 elapsed 252% CPU -time.3.tcmalloc.256:0.96 user 0.01 system 0.41 elapsed 236% CPU -time.3.ptmalloc.512:3.37 user 1.31 system 3.33 elapsed 140% CPU -time.3.tcmalloc.512:0.93 user 0.04 system 0.39 elapsed 243% CPU -time.3.ptmalloc.1024:1.66 user 0.01 system 0.64 elapsed 260% CPU -time.3.tcmalloc.1024:0.81 user 0.02 system 0.44 elapsed 187% CPU -time.3.ptmalloc.2048:2.07 user 0.01 system 0.82 elapsed 252% CPU -time.3.tcmalloc.2048:1.10 user 0.04 system 0.59 elapsed 191% CPU -time.3.ptmalloc.4096:2.01 user 0.03 system 0.79 elapsed 258% CPU -time.3.tcmalloc.4096:0.87 user 0.03 system 0.65 elapsed 137% CPU -time.3.ptmalloc.8192:2.22 user 0.11 system 0.83 elapsed 280% CPU -time.3.tcmalloc.8192:0.96 user 0.06 system 0.75 elapsed 135% CPU -time.3.ptmalloc.16384:2.56 user 0.47 system 1.02 elapsed 295% CPU -time.3.tcmalloc.16384:0.99 user 0.04 system 1.03 elapsed 99% CPU -time.3.ptmalloc.32768:3.29 user 1.75 system 1.96 elapsed 256% CPU -time.3.tcmalloc.32768:1.67 user 0.02 system 1.69 elapsed 99% CPU -time.3.ptmalloc.65536:4.04 user 6.62 system 4.92 elapsed 216% CPU -time.3.tcmalloc.65536:1.91 user 0.02 system 1.98 elapsed 97% CPU -time.3.ptmalloc.131072:5.55 user 17.86 system 12.44 elapsed 188% CPU -time.3.tcmalloc.131072:2.78 user 0.02 system 2.82 elapsed 99% CPU -time.4.ptmalloc.64:3.42 user 1.36 system 3.20 elapsed 149% CPU -time.4.tcmalloc.64:2.42 user 0.02 system 0.71 elapsed 341% CPU -time.4.ptmalloc.128:3.98 user 1.79 system 3.89 elapsed 148% CPU -time.4.tcmalloc.128:1.87 user 0.02 system 0.58 elapsed 325% CPU -time.4.ptmalloc.256:4.06 user 2.14 system 4.12 elapsed 150% CPU -time.4.tcmalloc.256:1.69 user 0.02 system 0.51 elapsed 331% CPU -time.4.ptmalloc.512:4.48 user 2.15 system 4.39 elapsed 150% CPU -time.4.tcmalloc.512:1.62 user 0.03 system 0.52 elapsed 314% CPU -time.4.ptmalloc.1024:3.18 user 0.03 system 0.84 elapsed 381% CPU -time.4.tcmalloc.1024:1.53 user 0.02 system 0.56 elapsed 274% CPU -time.4.ptmalloc.2048:3.24 user 0.02 system 0.84 elapsed 384% CPU -time.4.tcmalloc.2048:1.44 user 0.04 system 0.66 elapsed 221% CPU -time.4.ptmalloc.4096:3.50 user 0.04 system 0.91 elapsed 389% CPU -time.4.tcmalloc.4096:1.31 user 0.01 system 0.89 elapsed 148% CPU -time.4.ptmalloc.8192:6.77 user 3.85 system 4.14 elapsed 256% CPU -time.4.tcmalloc.8192:1.20 user 0.05 system 0.97 elapsed 127% CPU -time.4.ptmalloc.16384:7.08 user 5.06 system 4.63 elapsed 262% CPU -time.4.tcmalloc.16384:1.27 user 0.03 system 1.25 elapsed 103% CPU -time.4.ptmalloc.32768:5.57 user 4.22 system 3.31 elapsed 295% CPU -time.4.tcmalloc.32768:2.17 user 0.03 system 2.25 elapsed 97% CPU -time.4.ptmalloc.65536:6.11 user 15.05 system 9.19 elapsed 230% CPU -time.4.tcmalloc.65536:2.51 user 0.02 system 2.57 elapsed 98% CPU -time.4.ptmalloc.131072:7.58 user 33.15 system 21.28 elapsed 191% CPU -time.4.tcmalloc.131072:3.57 user 0.07 system 3.66 elapsed 99% CPU -time.5.ptmalloc.64:4.44 user 2.08 system 4.37 elapsed 148% CPU -time.5.tcmalloc.64:2.87 user 0.02 system 0.79 elapsed 361% CPU -time.5.ptmalloc.128:4.77 user 2.77 system 5.14 elapsed 146% CPU -time.5.tcmalloc.128:2.65 user 0.03 system 0.72 elapsed 367% CPU -time.5.ptmalloc.256:5.82 user 2.88 system 5.49 elapsed 158% CPU -time.5.tcmalloc.256:2.33 user 0.01 system 0.66 elapsed 352% CPU -time.5.ptmalloc.512:6.27 user 3.11 system 5.34 elapsed 175% CPU -time.5.tcmalloc.512:2.14 user 0.03 system 0.70 elapsed 307% CPU -time.5.ptmalloc.1024:6.82 user 3.18 system 5.23 elapsed 191% CPU -time.5.tcmalloc.1024:2.20 user 0.02 system 0.70 elapsed 313% CPU -time.5.ptmalloc.2048:6.57 user 3.46 system 5.22 elapsed 192% CPU -time.5.tcmalloc.2048:2.15 user 0.03 system 0.82 elapsed 264% CPU -time.5.ptmalloc.4096:8.75 user 5.09 system 5.26 elapsed 263% CPU -time.5.tcmalloc.4096:1.68 user 0.03 system 1.08 elapsed 158% CPU -time.5.ptmalloc.8192:4.48 user 0.61 system 1.51 elapsed 335% CPU -time.5.tcmalloc.8192:1.47 user 0.07 system 1.18 elapsed 129% CPU -time.5.ptmalloc.16384:5.71 user 1.98 system 2.14 elapsed 358% CPU -time.5.tcmalloc.16384:1.58 user 0.03 system 1.52 elapsed 105% CPU -time.5.ptmalloc.32768:7.19 user 7.81 system 5.53 elapsed 270% CPU -time.5.tcmalloc.32768:2.63 user 0.05 system 2.72 elapsed 98% CPU -time.5.ptmalloc.65536:8.45 user 23.51 system 14.30 elapsed 223% CPU -time.5.tcmalloc.65536:3.12 user 0.05 system 3.21 elapsed 98% CPU -time.5.ptmalloc.131072:10.22 user 43.63 system 27.84 elapsed 193% CPU -time.5.tcmalloc.131072:4.42 user 0.07 system 4.51 elapsed 99% CPU -time.6.ptmalloc.64:5.57 user 2.56 system 5.08 elapsed 159% CPU -time.6.tcmalloc.64:3.20 user 0.01 system 0.89 elapsed 360% CPU -time.6.ptmalloc.128:5.98 user 3.52 system 5.71 elapsed 166% CPU -time.6.tcmalloc.128:2.76 user 0.02 system 0.78 elapsed 355% CPU -time.6.ptmalloc.256:4.61 user 0.02 system 1.19 elapsed 389% CPU -time.6.tcmalloc.256:2.65 user 0.02 system 0.74 elapsed 356% CPU -time.6.ptmalloc.512:8.28 user 3.88 system 6.61 elapsed 183% CPU -time.6.tcmalloc.512:2.60 user 0.02 system 0.72 elapsed 362% CPU -time.6.ptmalloc.1024:4.75 user 0.00 system 1.22 elapsed 387% CPU -time.6.tcmalloc.1024:2.56 user 0.02 system 0.79 elapsed 325% CPU -time.6.ptmalloc.2048:8.90 user 4.59 system 6.15 elapsed 219% CPU -time.6.tcmalloc.2048:2.37 user 0.06 system 0.96 elapsed 250% CPU -time.6.ptmalloc.4096:11.41 user 7.02 system 6.31 elapsed 291% CPU -time.6.tcmalloc.4096:1.82 user 0.03 system 1.19 elapsed 154% CPU -time.6.ptmalloc.8192:11.64 user 8.25 system 5.97 elapsed 332% CPU -time.6.tcmalloc.8192:1.83 user 0.07 system 1.38 elapsed 136% CPU -time.6.ptmalloc.16384:7.44 user 2.98 system 3.01 elapsed 345% CPU -time.6.tcmalloc.16384:1.83 user 0.08 system 1.80 elapsed 105% CPU -time.6.ptmalloc.32768:8.69 user 12.35 system 8.04 elapsed 261% CPU -time.6.tcmalloc.32768:3.14 user 0.06 system 3.24 elapsed 98% CPU -time.6.ptmalloc.65536:10.52 user 35.43 system 20.75 elapsed 221% CPU -time.6.tcmalloc.65536:3.62 user 0.03 system 3.72 elapsed 98% CPU -time.6.ptmalloc.131072:11.74 user 59.00 system 36.93 elapsed 191% CPU -time.6.tcmalloc.131072:5.33 user 0.04 system 5.42 elapsed 98% CPU -time.7.ptmalloc.64:6.60 user 3.45 system 6.01 elapsed 167% CPU -time.7.tcmalloc.64:3.50 user 0.04 system 0.94 elapsed 376% CPU -time.7.ptmalloc.128:7.09 user 4.25 system 6.69 elapsed 169% CPU -time.7.tcmalloc.128:3.13 user 0.03 system 0.84 elapsed 374% CPU -time.7.ptmalloc.256:9.28 user 4.85 system 7.20 elapsed 196% CPU -time.7.tcmalloc.256:3.06 user 0.02 system 0.82 elapsed 375% CPU -time.7.ptmalloc.512:9.13 user 4.78 system 6.79 elapsed 204% CPU -time.7.tcmalloc.512:2.99 user 0.03 system 0.83 elapsed 359% CPU -time.7.ptmalloc.1024:10.85 user 6.41 system 7.52 elapsed 229% CPU -time.7.tcmalloc.1024:3.05 user 0.04 system 0.89 elapsed 345% CPU -time.7.ptmalloc.2048:5.65 user 0.08 system 1.47 elapsed 388% CPU -time.7.tcmalloc.2048:3.01 user 0.01 system 0.98 elapsed 306% CPU -time.7.ptmalloc.4096:6.09 user 0.08 system 1.58 elapsed 389% CPU -time.7.tcmalloc.4096:2.25 user 0.03 system 1.32 elapsed 171% CPU -time.7.ptmalloc.8192:6.73 user 0.85 system 1.99 elapsed 379% CPU -time.7.tcmalloc.8192:2.22 user 0.08 system 1.61 elapsed 142% CPU -time.7.ptmalloc.16384:8.87 user 4.66 system 4.04 elapsed 334% CPU -time.7.tcmalloc.16384:2.07 user 0.07 system 2.07 elapsed 103% CPU -time.7.ptmalloc.32768:10.61 user 17.85 system 11.22 elapsed 253% CPU -time.7.tcmalloc.32768:3.68 user 0.06 system 3.79 elapsed 98% CPU -time.7.ptmalloc.65536:13.05 user 45.97 system 27.28 elapsed 216% CPU -time.7.tcmalloc.65536:4.16 user 0.07 system 4.31 elapsed 98% CPU -time.7.ptmalloc.131072:13.22 user 62.67 system 41.33 elapsed 183% CPU -time.7.tcmalloc.131072:6.10 user 0.06 system 6.25 elapsed 98% CPU -time.8.ptmalloc.64:7.31 user 3.92 system 6.39 elapsed 175% CPU -time.8.tcmalloc.64:4.00 user 0.01 system 1.04 elapsed 383% CPU -time.8.ptmalloc.128:9.40 user 5.41 system 7.67 elapsed 192% CPU -time.8.tcmalloc.128:3.61 user 0.02 system 0.94 elapsed 386% CPU -time.8.ptmalloc.256:10.61 user 6.35 system 7.96 elapsed 212% CPU -time.8.tcmalloc.256:3.30 user 0.02 system 0.99 elapsed 335% CPU -time.8.ptmalloc.512:12.42 user 7.10 system 8.79 elapsed 221% CPU -time.8.tcmalloc.512:3.35 user 0.04 system 0.94 elapsed 358% CPU -time.8.ptmalloc.1024:13.63 user 8.54 system 8.95 elapsed 247% CPU -time.8.tcmalloc.1024:3.44 user 0.02 system 0.96 elapsed 359% CPU -time.8.ptmalloc.2048:6.45 user 0.03 system 1.67 elapsed 386% CPU -time.8.tcmalloc.2048:3.55 user 0.05 system 1.09 elapsed 328% CPU -time.8.ptmalloc.4096:6.83 user 0.26 system 1.80 elapsed 393% CPU -time.8.tcmalloc.4096:2.78 user 0.06 system 1.53 elapsed 185% CPU -time.8.ptmalloc.8192:7.59 user 1.29 system 2.36 elapsed 376% CPU -time.8.tcmalloc.8192:2.57 user 0.07 system 1.84 elapsed 142% CPU -time.8.ptmalloc.16384:10.15 user 6.20 system 5.20 elapsed 314% CPU -time.8.tcmalloc.16384:2.40 user 0.05 system 2.42 elapsed 101% CPU -time.8.ptmalloc.32768:11.82 user 24.48 system 14.60 elapsed 248% CPU -time.8.tcmalloc.32768:4.37 user 0.05 system 4.47 elapsed 98% CPU -time.8.ptmalloc.65536:15.41 user 58.94 system 34.42 elapsed 215% CPU -time.8.tcmalloc.65536:4.90 user 0.04 system 4.96 elapsed 99% CPU -time.8.ptmalloc.131072:16.07 user 82.93 system 52.51 elapsed 188% CPU -time.8.tcmalloc.131072:7.13 user 0.04 system 7.19 elapsed 99% CPU -time.9.ptmalloc.64:8.44 user 4.59 system 6.92 elapsed 188% CPU -time.9.tcmalloc.64:4.00 user 0.02 system 1.05 elapsed 382% CPU -time.9.ptmalloc.128:10.92 user 6.14 system 8.31 elapsed 205% CPU -time.9.tcmalloc.128:3.88 user 0.02 system 1.01 elapsed 382% CPU -time.9.ptmalloc.256:13.01 user 7.75 system 9.12 elapsed 227% CPU -time.9.tcmalloc.256:3.89 user 0.01 system 1.00 elapsed 386% CPU -time.9.ptmalloc.512:14.96 user 8.89 system 9.73 elapsed 244% CPU -time.9.tcmalloc.512:3.80 user 0.03 system 1.01 elapsed 377% CPU -time.9.ptmalloc.1024:15.42 user 10.20 system 9.80 elapsed 261% CPU -time.9.tcmalloc.1024:3.86 user 0.03 system 1.19 elapsed 325% CPU -time.9.ptmalloc.2048:7.24 user 0.02 system 1.87 elapsed 388% CPU -time.9.tcmalloc.2048:3.98 user 0.05 system 1.26 elapsed 319% CPU -time.9.ptmalloc.4096:7.96 user 0.18 system 2.06 elapsed 394% CPU -time.9.tcmalloc.4096:3.27 user 0.04 system 1.69 elapsed 195% CPU -time.9.ptmalloc.8192:9.00 user 1.63 system 2.79 elapsed 380% CPU -time.9.tcmalloc.8192:3.00 user 0.06 system 2.05 elapsed 148% CPU -time.9.ptmalloc.16384:12.07 user 8.13 system 6.55 elapsed 308% CPU -time.9.tcmalloc.16384:2.85 user 0.05 system 2.75 elapsed 105% CPU -time.9.ptmalloc.32768:13.99 user 29.65 system 18.02 elapsed 242% CPU -time.9.tcmalloc.32768:4.98 user 0.06 system 5.13 elapsed 98% CPU -time.9.ptmalloc.65536:16.89 user 70.42 system 42.11 elapsed 207% CPU -time.9.tcmalloc.65536:5.55 user 0.04 system 5.65 elapsed 98% CPU -time.9.ptmalloc.131072:18.53 user 94.11 system 61.17 elapsed 184% CPU -time.9.tcmalloc.131072:8.06 user 0.04 system 8.16 elapsed 99% CPU -time.10.ptmalloc.64:9.81 user 5.70 system 7.42 elapsed 208% CPU -time.10.tcmalloc.64:4.43 user 0.03 system 1.20 elapsed 370% CPU -time.10.ptmalloc.128:12.69 user 7.81 system 9.02 elapsed 227% CPU -time.10.tcmalloc.128:4.27 user 0.02 system 1.13 elapsed 378% CPU -time.10.ptmalloc.256:15.04 user 9.53 system 9.92 elapsed 247% CPU -time.10.tcmalloc.256:4.23 user 0.02 system 1.09 elapsed 388% CPU -time.10.ptmalloc.512:17.30 user 10.46 system 10.61 elapsed 261% CPU -time.10.tcmalloc.512:4.14 user 0.05 system 1.10 elapsed 379% CPU -time.10.ptmalloc.1024:16.96 user 9.38 system 9.30 elapsed 283% CPU -time.10.tcmalloc.1024:4.27 user 0.06 system 1.18 elapsed 366% CPU -time.10.ptmalloc.2048:8.07 user 0.03 system 2.06 elapsed 393% CPU -time.10.tcmalloc.2048:4.49 user 0.07 system 1.33 elapsed 342% CPU -time.10.ptmalloc.4096:8.66 user 0.25 system 2.25 elapsed 394% CPU -time.10.tcmalloc.4096:3.61 user 0.05 system 1.78 elapsed 205% CPU -time.10.ptmalloc.8192:21.52 user 17.43 system 10.41 elapsed 374% CPU -time.10.tcmalloc.8192:3.59 user 0.10 system 2.33 elapsed 158% CPU -time.10.ptmalloc.16384:20.55 user 24.85 system 12.55 elapsed 361% CPU -time.10.tcmalloc.16384:3.29 user 0.04 system 3.22 elapsed 103% CPU -time.10.ptmalloc.32768:15.23 user 38.13 system 22.49 elapsed 237% CPU -time.10.tcmalloc.32768:5.62 user 0.05 system 5.72 elapsed 99% CPU -time.10.ptmalloc.65536:19.80 user 85.42 system 49.98 elapsed 210% CPU -time.10.tcmalloc.65536:6.23 user 0.09 system 6.36 elapsed 99% CPU -time.10.ptmalloc.131072:20.91 user 106.97 system 69.08 elapsed 185% CPU -time.10.tcmalloc.131072:8.94 user 0.09 system 9.09 elapsed 99% CPU -time.11.ptmalloc.64:10.82 user 6.34 system 7.92 elapsed 216% CPU -time.11.tcmalloc.64:4.80 user 0.03 system 1.24 elapsed 387% CPU -time.11.ptmalloc.128:14.58 user 8.61 system 9.81 elapsed 236% CPU -time.11.tcmalloc.128:4.65 user 0.03 system 1.21 elapsed 384% CPU -time.11.ptmalloc.256:17.38 user 10.98 system 10.75 elapsed 263% CPU -time.11.tcmalloc.256:4.51 user 0.03 system 1.18 elapsed 384% CPU -time.11.ptmalloc.512:19.18 user 11.71 system 10.95 elapsed 282% CPU -time.11.tcmalloc.512:4.57 user 0.02 system 1.19 elapsed 384% CPU -time.11.ptmalloc.1024:19.94 user 12.41 system 10.48 elapsed 308% CPU -time.11.tcmalloc.1024:4.71 user 0.05 system 1.29 elapsed 367% CPU -time.11.ptmalloc.2048:8.70 user 0.04 system 2.35 elapsed 371% CPU -time.11.tcmalloc.2048:4.97 user 0.07 system 1.43 elapsed 350% CPU -time.11.ptmalloc.4096:22.47 user 18.43 system 10.82 elapsed 377% CPU -time.11.tcmalloc.4096:4.22 user 0.03 system 1.91 elapsed 221% CPU -time.11.ptmalloc.8192:11.61 user 2.38 system 3.73 elapsed 374% CPU -time.11.tcmalloc.8192:3.74 user 0.09 system 2.46 elapsed 155% CPU -time.11.ptmalloc.16384:14.13 user 13.38 system 9.60 elapsed 286% CPU -time.11.tcmalloc.16384:3.61 user 0.03 system 3.63 elapsed 100% CPU -time.11.ptmalloc.32768:17.92 user 43.84 system 26.74 elapsed 230% CPU -time.11.tcmalloc.32768:6.31 user 0.03 system 6.45 elapsed 98% CPU -time.11.ptmalloc.65536:22.40 user 96.38 system 58.30 elapsed 203% CPU -time.11.tcmalloc.65536:6.92 user 0.12 system 6.98 elapsed 100% CPU -time.11.ptmalloc.131072:21.03 user 108.04 system 72.78 elapsed 177% CPU -time.11.tcmalloc.131072:9.79 user 0.08 system 9.94 elapsed 99% CPU -time.12.ptmalloc.64:12.23 user 7.16 system 8.38 elapsed 231% CPU -time.12.tcmalloc.64:5.21 user 0.05 system 1.41 elapsed 371% CPU -time.12.ptmalloc.128:16.97 user 10.19 system 10.47 elapsed 259% CPU -time.12.tcmalloc.128:5.10 user 0.02 system 1.31 elapsed 390% CPU -time.12.ptmalloc.256:19.99 user 12.10 system 11.57 elapsed 277% CPU -time.12.tcmalloc.256:5.01 user 0.03 system 1.29 elapsed 390% CPU -time.12.ptmalloc.512:21.85 user 12.66 system 11.46 elapsed 300% CPU -time.12.tcmalloc.512:5.05 user 0.00 system 1.32 elapsed 379% CPU -time.12.ptmalloc.1024:9.40 user 0.04 system 2.40 elapsed 393% CPU -time.12.tcmalloc.1024:5.14 user 0.02 system 1.39 elapsed 369% CPU -time.12.ptmalloc.2048:9.72 user 0.04 system 2.49 elapsed 391% CPU -time.12.tcmalloc.2048:5.74 user 0.05 system 1.62 elapsed 355% CPU -time.12.ptmalloc.4096:10.64 user 0.20 system 2.75 elapsed 393% CPU -time.12.tcmalloc.4096:4.45 user 0.03 system 2.04 elapsed 218% CPU -time.12.ptmalloc.8192:12.66 user 3.30 system 4.30 elapsed 371% CPU -time.12.tcmalloc.8192:4.21 user 0.13 system 2.65 elapsed 163% CPU -time.12.ptmalloc.16384:15.73 user 15.68 system 11.14 elapsed 281% CPU -time.12.tcmalloc.16384:4.17 user 0.06 system 4.10 elapsed 102% CPU -time.12.ptmalloc.32768:19.45 user 56.00 system 32.74 elapsed 230% CPU -time.12.tcmalloc.32768:6.96 user 0.08 system 7.14 elapsed 98% CPU -time.12.ptmalloc.65536:23.33 user 110.45 system 65.06 elapsed 205% CPU -time.12.tcmalloc.65536:7.77 user 0.15 system 7.72 elapsed 102% CPU -time.12.ptmalloc.131072:24.03 user 124.74 system 82.94 elapsed 179% CPU -time.12.tcmalloc.131072:10.81 user 0.06 system 10.94 elapsed 99% CPU -time.13.ptmalloc.64:14.08 user 7.60 system 8.85 elapsed 244% CPU -time.13.tcmalloc.64:5.51 user 0.01 system 1.47 elapsed 375% CPU -time.13.ptmalloc.128:18.20 user 10.98 system 10.99 elapsed 265% CPU -time.13.tcmalloc.128:5.34 user 0.01 system 1.39 elapsed 382% CPU -time.13.ptmalloc.256:21.48 user 13.94 system 12.25 elapsed 289% CPU -time.13.tcmalloc.256:5.33 user 0.01 system 1.39 elapsed 381% CPU -time.13.ptmalloc.512:24.22 user 14.84 system 12.97 elapsed 301% CPU -time.13.tcmalloc.512:5.49 user 0.02 system 1.41 elapsed 389% CPU -time.13.ptmalloc.1024:25.26 user 17.03 system 12.85 elapsed 328% CPU -time.13.tcmalloc.1024:5.65 user 0.04 system 1.50 elapsed 378% CPU -time.13.ptmalloc.2048:10.41 user 0.03 system 2.69 elapsed 387% CPU -time.13.tcmalloc.2048:5.93 user 0.10 system 1.77 elapsed 339% CPU -time.13.ptmalloc.4096:11.37 user 0.52 system 3.04 elapsed 391% CPU -time.13.tcmalloc.4096:5.08 user 0.11 system 2.22 elapsed 233% CPU -time.13.ptmalloc.8192:21.76 user 18.54 system 10.58 elapsed 380% CPU -time.13.tcmalloc.8192:5.04 user 0.16 system 2.93 elapsed 177% CPU -time.13.ptmalloc.16384:26.35 user 34.47 system 17.01 elapsed 357% CPU -time.13.tcmalloc.16384:4.66 user 0.04 system 4.66 elapsed 100% CPU -time.13.ptmalloc.32768:21.41 user 63.59 system 38.14 elapsed 222% CPU -time.13.tcmalloc.32768:7.71 user 0.03 system 7.83 elapsed 98% CPU -time.13.ptmalloc.65536:24.99 user 120.80 system 71.59 elapsed 203% CPU -time.13.tcmalloc.65536:8.87 user 0.64 system 8.37 elapsed 113% CPU -time.13.ptmalloc.131072:25.97 user 142.27 system 96.00 elapsed 175% CPU -time.13.tcmalloc.131072:11.48 user 0.06 system 11.67 elapsed 98% CPU -time.14.ptmalloc.64:15.01 user 9.11 system 9.41 elapsed 256% CPU -time.14.tcmalloc.64:5.98 user 0.02 system 1.58 elapsed 378% CPU -time.14.ptmalloc.128:20.34 user 12.72 system 11.62 elapsed 284% CPU -time.14.tcmalloc.128:5.88 user 0.04 system 1.51 elapsed 392% CPU -time.14.ptmalloc.256:24.26 user 14.95 system 12.92 elapsed 303% CPU -time.14.tcmalloc.256:5.72 user 0.02 system 1.50 elapsed 381% CPU -time.14.ptmalloc.512:27.28 user 16.45 system 13.89 elapsed 314% CPU -time.14.tcmalloc.512:5.99 user 0.02 system 1.54 elapsed 388% CPU -time.14.ptmalloc.1024:25.84 user 16.99 system 12.61 elapsed 339% CPU -time.14.tcmalloc.1024:5.94 user 0.06 system 1.59 elapsed 375% CPU -time.14.ptmalloc.2048:11.96 user 0.01 system 3.12 elapsed 382% CPU -time.14.tcmalloc.2048:6.39 user 0.07 system 1.79 elapsed 359% CPU -time.14.ptmalloc.4096:20.19 user 11.77 system 8.26 elapsed 386% CPU -time.14.tcmalloc.4096:5.65 user 0.05 system 2.32 elapsed 244% CPU -time.14.ptmalloc.8192:22.01 user 16.39 system 9.89 elapsed 387% CPU -time.14.tcmalloc.8192:5.44 user 0.11 system 3.07 elapsed 180% CPU -time.14.ptmalloc.16384:18.15 user 22.40 system 15.02 elapsed 269% CPU -time.14.tcmalloc.16384:5.29 user 0.08 system 5.34 elapsed 100% CPU -time.14.ptmalloc.32768:24.29 user 72.07 system 42.63 elapsed 225% CPU -time.14.tcmalloc.32768:8.47 user 0.02 system 8.62 elapsed 98% CPU -time.14.ptmalloc.65536:27.63 user 130.56 system 78.64 elapsed 201% CPU -time.14.tcmalloc.65536:9.85 user 1.61 system 9.04 elapsed 126% CPU -time.14.ptmalloc.131072:28.87 user 146.38 system 100.54 elapsed 174% CPU -time.14.tcmalloc.131072:12.46 user 0.11 system 12.71 elapsed 98% CPU -time.15.ptmalloc.64:16.25 user 10.05 system 9.82 elapsed 267% CPU -time.15.tcmalloc.64:6.30 user 0.02 system 1.64 elapsed 385% CPU -time.15.ptmalloc.128:22.33 user 13.23 system 12.24 elapsed 290% CPU -time.15.tcmalloc.128:6.08 user 0.03 system 1.59 elapsed 384% CPU -time.15.ptmalloc.256:26.56 user 16.57 system 13.70 elapsed 314% CPU -time.15.tcmalloc.256:6.14 user 0.03 system 1.61 elapsed 382% CPU -time.15.ptmalloc.512:29.68 user 18.08 system 14.56 elapsed 327% CPU -time.15.tcmalloc.512:6.12 user 0.04 system 1.68 elapsed 364% CPU -time.15.ptmalloc.1024:17.07 user 6.22 system 6.26 elapsed 371% CPU -time.15.tcmalloc.1024:6.38 user 0.02 system 1.75 elapsed 364% CPU -time.15.ptmalloc.2048:26.64 user 17.25 system 11.51 elapsed 381% CPU -time.15.tcmalloc.2048:6.77 user 0.18 system 1.92 elapsed 361% CPU -time.15.ptmalloc.4096:13.21 user 0.74 system 3.57 elapsed 390% CPU -time.15.tcmalloc.4096:6.03 user 0.09 system 2.36 elapsed 258% CPU -time.15.ptmalloc.8192:22.92 user 17.51 system 10.50 elapsed 385% CPU -time.15.tcmalloc.8192:5.96 user 0.12 system 3.36 elapsed 180% CPU -time.15.ptmalloc.16384:19.37 user 24.87 system 16.69 elapsed 264% CPU -time.15.tcmalloc.16384:5.88 user 0.07 system 5.84 elapsed 101% CPU -time.15.ptmalloc.32768:25.43 user 82.30 system 48.98 elapsed 219% CPU -time.15.tcmalloc.32768:9.11 user 0.05 system 9.30 elapsed 98% CPU -time.15.ptmalloc.65536:29.31 user 140.07 system 83.78 elapsed 202% CPU -time.15.tcmalloc.65536:8.51 user 1.59 system 9.75 elapsed 103% CPU -time.15.ptmalloc.131072:30.22 user 163.15 system 109.50 elapsed 176% CPU -time.15.tcmalloc.131072:13.35 user 0.10 system 13.54 elapsed 99% CPU -time.16.ptmalloc.64:17.69 user 10.11 system 10.11 elapsed 274% CPU -time.16.tcmalloc.64:6.63 user 0.04 system 1.72 elapsed 387% CPU -time.16.ptmalloc.128:23.05 user 14.37 system 12.75 elapsed 293% CPU -time.16.tcmalloc.128:6.61 user 0.02 system 1.71 elapsed 387% CPU -time.16.ptmalloc.256:29.11 user 19.35 system 14.57 elapsed 332% CPU -time.16.tcmalloc.256:6.62 user 0.03 system 1.73 elapsed 382% CPU -time.16.ptmalloc.512:31.65 user 18.71 system 14.71 elapsed 342% CPU -time.16.tcmalloc.512:6.63 user 0.04 system 1.73 elapsed 383% CPU -time.16.ptmalloc.1024:31.99 user 21.22 system 14.87 elapsed 357% CPU -time.16.tcmalloc.1024:6.81 user 0.04 system 1.79 elapsed 382% CPU -time.16.ptmalloc.2048:30.35 user 21.36 system 13.30 elapsed 388% CPU -time.16.tcmalloc.2048:6.91 user 0.50 system 2.01 elapsed 367% CPU -time.16.ptmalloc.4096:18.85 user 7.18 system 6.61 elapsed 393% CPU -time.16.tcmalloc.4096:6.70 user 0.10 system 2.62 elapsed 259% CPU -time.16.ptmalloc.8192:22.19 user 14.30 system 9.37 elapsed 389% CPU -time.16.tcmalloc.8192:6.18 user 0.19 system 3.58 elapsed 177% CPU -time.16.ptmalloc.16384:31.22 user 46.78 system 22.92 elapsed 340% CPU -time.16.tcmalloc.16384:6.79 user 0.07 system 6.86 elapsed 99% CPU -time.16.ptmalloc.32768:27.31 user 87.32 system 52.00 elapsed 220% CPU -time.16.tcmalloc.32768:9.85 user 0.06 system 10.07 elapsed 98% CPU -time.16.ptmalloc.65536:32.83 user 160.62 system 95.67 elapsed 202% CPU -time.16.tcmalloc.65536:10.18 user 0.09 system 10.41 elapsed 98% CPU -time.16.ptmalloc.131072:31.99 user 173.41 system 115.98 elapsed 177% CPU -time.16.tcmalloc.131072:14.52 user 0.05 system 14.67 elapsed 99% CPU -time.17.ptmalloc.64:19.38 user 11.61 system 10.61 elapsed 291% CPU -time.17.tcmalloc.64:7.11 user 0.02 system 1.84 elapsed 386% CPU -time.17.ptmalloc.128:26.25 user 16.15 system 13.53 elapsed 313% CPU -time.17.tcmalloc.128:6.97 user 0.02 system 1.78 elapsed 390% CPU -time.17.ptmalloc.256:30.66 user 18.36 system 14.97 elapsed 327% CPU -time.17.tcmalloc.256:6.94 user 0.04 system 1.80 elapsed 387% CPU -time.17.ptmalloc.512:33.71 user 22.79 system 15.95 elapsed 354% CPU -time.17.tcmalloc.512:7.00 user 0.02 system 1.83 elapsed 381% CPU -time.17.ptmalloc.1024:33.49 user 22.47 system 15.00 elapsed 373% CPU -time.17.tcmalloc.1024:7.20 user 0.03 system 1.90 elapsed 380% CPU -time.17.ptmalloc.2048:23.87 user 11.92 system 9.26 elapsed 386% CPU -time.17.tcmalloc.2048:6.01 user 1.83 system 2.15 elapsed 363% CPU -time.17.ptmalloc.4096:14.69 user 0.95 system 3.98 elapsed 392% CPU -time.17.tcmalloc.4096:7.25 user 0.10 system 2.62 elapsed 279% CPU -time.17.ptmalloc.8192:22.44 user 13.52 system 9.39 elapsed 382% CPU -time.17.tcmalloc.8192:7.21 user 0.24 system 3.95 elapsed 188% CPU -time.17.ptmalloc.16384:23.33 user 33.67 system 21.89 elapsed 260% CPU -time.17.tcmalloc.16384:7.28 user 0.06 system 7.10 elapsed 103% CPU -time.17.ptmalloc.32768:29.35 user 103.11 system 60.36 elapsed 219% CPU -time.17.tcmalloc.32768:10.53 user 0.07 system 10.71 elapsed 98% CPU -time.17.ptmalloc.65536:33.21 user 170.89 system 100.84 elapsed 202% CPU -time.17.tcmalloc.65536:10.85 user 0.05 system 11.04 elapsed 98% CPU -time.17.ptmalloc.131072:34.98 user 182.87 system 122.05 elapsed 178% CPU -time.17.tcmalloc.131072:15.27 user 0.09 system 15.49 elapsed 99% CPU -time.18.ptmalloc.64:21.08 user 12.15 system 11.43 elapsed 290% CPU -time.18.tcmalloc.64:7.45 user 0.03 system 1.95 elapsed 383% CPU -time.18.ptmalloc.128:27.65 user 17.26 system 14.03 elapsed 320% CPU -time.18.tcmalloc.128:7.46 user 0.03 system 1.92 elapsed 389% CPU -time.18.ptmalloc.256:32.78 user 20.55 system 15.70 elapsed 339% CPU -time.18.tcmalloc.256:7.31 user 0.02 system 1.88 elapsed 389% CPU -time.18.ptmalloc.512:33.31 user 20.06 system 15.05 elapsed 354% CPU -time.18.tcmalloc.512:7.33 user 0.02 system 1.91 elapsed 383% CPU -time.18.ptmalloc.1024:35.46 user 24.83 system 16.30 elapsed 369% CPU -time.18.tcmalloc.1024:7.60 user 0.06 system 2.05 elapsed 373% CPU -time.18.ptmalloc.2048:19.98 user 6.80 system 6.76 elapsed 395% CPU -time.18.tcmalloc.2048:6.89 user 1.29 system 2.28 elapsed 357% CPU -time.18.ptmalloc.4096:15.99 user 0.93 system 4.32 elapsed 391% CPU -time.18.tcmalloc.4096:7.70 user 0.10 system 2.77 elapsed 280% CPU -time.18.ptmalloc.8192:23.51 user 14.84 system 9.97 elapsed 384% CPU -time.18.tcmalloc.8192:8.16 user 0.27 system 4.25 elapsed 197% CPU -time.18.ptmalloc.16384:35.79 user 52.41 system 26.47 elapsed 333% CPU -time.18.tcmalloc.16384:7.81 user 0.07 system 7.61 elapsed 103% CPU -time.18.ptmalloc.32768:33.17 user 116.07 system 68.64 elapsed 217% CPU -time.18.tcmalloc.32768:11.34 user 0.13 system 11.57 elapsed 99% CPU -time.18.ptmalloc.65536:35.91 user 177.82 system 106.75 elapsed 200% CPU -time.18.tcmalloc.65536:11.54 user 0.06 system 11.74 elapsed 98% CPU -time.18.ptmalloc.131072:36.38 user 187.18 system 126.91 elapsed 176% CPU -time.18.tcmalloc.131072:16.34 user 0.05 system 16.43 elapsed 99% CPU -time.19.ptmalloc.64:22.90 user 13.23 system 11.82 elapsed 305% CPU -time.19.tcmalloc.64:7.81 user 0.02 system 2.01 elapsed 388% CPU -time.19.ptmalloc.128:30.13 user 18.58 system 14.77 elapsed 329% CPU -time.19.tcmalloc.128:7.74 user 0.02 system 2.01 elapsed 386% CPU -time.19.ptmalloc.256:35.33 user 21.41 system 16.35 elapsed 347% CPU -time.19.tcmalloc.256:7.79 user 0.04 system 2.04 elapsed 382% CPU -time.19.ptmalloc.512:39.30 user 26.22 system 17.84 elapsed 367% CPU -time.19.tcmalloc.512:7.80 user 0.06 system 2.05 elapsed 381% CPU -time.19.ptmalloc.1024:35.70 user 23.90 system 15.66 elapsed 380% CPU -time.19.tcmalloc.1024:8.08 user 0.06 system 2.16 elapsed 376% CPU -time.19.ptmalloc.2048:18.33 user 3.28 system 5.47 elapsed 394% CPU -time.19.tcmalloc.2048:8.71 user 0.05 system 2.40 elapsed 363% CPU -time.19.ptmalloc.4096:16.94 user 0.89 system 4.64 elapsed 383% CPU -time.19.tcmalloc.4096:8.21 user 0.07 system 2.85 elapsed 289% CPU -time.19.ptmalloc.8192:25.61 user 17.15 system 11.33 elapsed 377% CPU -time.19.tcmalloc.8192:8.79 user 0.30 system 4.58 elapsed 198% CPU -time.19.ptmalloc.16384:27.11 user 46.66 system 29.67 elapsed 248% CPU -time.19.tcmalloc.16384:8.64 user 0.05 system 8.58 elapsed 101% CPU -time.19.ptmalloc.32768:33.80 user 117.69 system 70.65 elapsed 214% CPU -time.19.tcmalloc.32768:11.88 user 0.07 system 12.04 elapsed 99% CPU -time.19.ptmalloc.65536:36.90 user 180.21 system 109.01 elapsed 199% CPU -time.19.tcmalloc.65536:12.17 user 0.07 system 12.40 elapsed 98% CPU -time.19.ptmalloc.131072:38.50 user 195.15 system 132.81 elapsed 175% CPU -time.19.tcmalloc.131072:17.44 user 0.10 system 17.65 elapsed 99% CPU -time.20.ptmalloc.64:23.37 user 13.74 system 11.86 elapsed 312% CPU -time.20.tcmalloc.64:8.18 user 0.02 system 2.10 elapsed 389% CPU -time.20.ptmalloc.128:31.29 user 19.97 system 15.53 elapsed 329% CPU -time.20.tcmalloc.128:8.03 user 0.02 system 2.12 elapsed 378% CPU -time.20.ptmalloc.256:38.40 user 25.65 system 18.25 elapsed 350% CPU -time.20.tcmalloc.256:8.05 user 0.05 system 2.12 elapsed 380% CPU -time.20.ptmalloc.512:40.60 user 27.70 system 18.46 elapsed 369% CPU -time.20.tcmalloc.512:8.22 user 0.08 system 2.20 elapsed 375% CPU -time.20.ptmalloc.1024:40.02 user 28.52 system 17.56 elapsed 390% CPU -time.20.tcmalloc.1024:8.50 user 0.07 system 2.19 elapsed 391% CPU -time.20.ptmalloc.2048:16.13 user 0.23 system 4.23 elapsed 386% CPU -time.20.tcmalloc.2048:8.98 user 0.03 system 2.45 elapsed 367% CPU -time.20.ptmalloc.4096:17.14 user 0.87 system 4.60 elapsed 391% CPU -time.20.tcmalloc.4096:8.93 user 0.20 system 2.97 elapsed 306% CPU -time.20.ptmalloc.8192:25.24 user 17.16 system 11.14 elapsed 380% CPU -time.20.tcmalloc.8192:9.78 user 0.30 system 5.14 elapsed 195% CPU -time.20.ptmalloc.16384:39.93 user 60.36 system 30.24 elapsed 331% CPU -time.20.tcmalloc.16384:9.57 user 0.09 system 9.43 elapsed 102% CPU -time.20.ptmalloc.32768:36.44 user 130.23 system 76.79 elapsed 217% CPU -time.20.tcmalloc.32768:12.71 user 0.09 system 12.97 elapsed 98% CPU -time.20.ptmalloc.65536:39.79 user 202.09 system 120.34 elapsed 200% CPU -time.20.tcmalloc.65536:12.93 user 0.06 system 13.15 elapsed 98% CPU -time.20.ptmalloc.131072:41.91 user 202.76 system 138.51 elapsed 176% CPU -time.20.tcmalloc.131072:18.23 user 0.07 system 18.42 elapsed 99% CPU http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.1024.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.1024.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.1024.bytes.png deleted file mode 100644 index 8c0ae6b..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.1024.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.128.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.128.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.128.bytes.png deleted file mode 100644 index 24b2a27..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.128.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.131072.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.131072.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.131072.bytes.png deleted file mode 100644 index 183a77b..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.131072.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.16384.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.16384.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.16384.bytes.png deleted file mode 100644 index db59d61..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.16384.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.2048.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.2048.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.2048.bytes.png deleted file mode 100644 index 169546f..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.2048.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.256.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.256.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.256.bytes.png deleted file mode 100644 index 6213021..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.256.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.32768.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.32768.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.32768.bytes.png deleted file mode 100644 index 18715e3..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.32768.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.4096.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.4096.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.4096.bytes.png deleted file mode 100644 index 642e245..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.4096.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.512.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.512.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.512.bytes.png deleted file mode 100644 index aea1d67..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.512.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.64.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.64.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.64.bytes.png deleted file mode 100644 index 3a080de..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.64.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.65536.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.65536.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.65536.bytes.png deleted file mode 100644 index 48ebdb6..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.65536.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.8192.bytes.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.8192.bytes.png b/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.8192.bytes.png deleted file mode 100644 index 3a99cbc..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspercpusec.vs.threads.8192.bytes.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.1.threads.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.1.threads.png b/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.1.threads.png deleted file mode 100644 index 37d406d..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.1.threads.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.12.threads.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.12.threads.png b/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.12.threads.png deleted file mode 100644 index d45458a..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.12.threads.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.16.threads.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.16.threads.png b/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.16.threads.png deleted file mode 100644 index e8a3c9f..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.16.threads.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.2.threads.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.2.threads.png b/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.2.threads.png deleted file mode 100644 index 52d7aee..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.2.threads.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.20.threads.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.20.threads.png b/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.20.threads.png deleted file mode 100644 index da0328a..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.20.threads.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.3.threads.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.3.threads.png b/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.3.threads.png deleted file mode 100644 index 1093e81..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.3.threads.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.4.threads.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.4.threads.png b/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.4.threads.png deleted file mode 100644 index d7c79ef..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.4.threads.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.5.threads.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.5.threads.png b/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.5.threads.png deleted file mode 100644 index 779eec6..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.5.threads.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.8.threads.png ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.8.threads.png b/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.8.threads.png deleted file mode 100644 index 76c125a..0000000 Binary files a/third_party/gperftools/doc/tcmalloc-opspersec.vs.size.8.threads.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/tcmalloc.html ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/tcmalloc.html b/third_party/gperftools/doc/tcmalloc.html deleted file mode 100644 index a0d5ed3..0000000 --- a/third_party/gperftools/doc/tcmalloc.html +++ /dev/null @@ -1,765 +0,0 @@ - - - - -TCMalloc : Thread-Caching Malloc - - - - - -

TCMalloc : Thread-Caching Malloc

- -
Sanjay Ghemawat
- -

Motivation

- -

TCMalloc is faster than the glibc 2.3 malloc (available as a -separate library called ptmalloc2) and other mallocs that I have -tested. ptmalloc2 takes approximately 300 nanoseconds to execute a -malloc/free pair on a 2.8 GHz P4 (for small objects). The TCMalloc -implementation takes approximately 50 nanoseconds for the same -operation pair. Speed is important for a malloc implementation -because if malloc is not fast enough, application writers are inclined -to write their own custom free lists on top of malloc. This can lead -to extra complexity, and more memory usage unless the application -writer is very careful to appropriately size the free lists and -scavenge idle objects out of the free list.

- -

TCMalloc also reduces lock contention for multi-threaded programs. -For small objects, there is virtually zero contention. For large -objects, TCMalloc tries to use fine grained and efficient spinlocks. -ptmalloc2 also reduces lock contention by using per-thread arenas but -there is a big problem with ptmalloc2's use of per-thread arenas. In -ptmalloc2 memory can never move from one arena to another. This can -lead to huge amounts of wasted space. For example, in one Google -application, the first phase would allocate approximately 300MB of -memory for its URL canonicalization data structures. When the first -phase finished, a second phase would be started in the same address -space. If this second phase was assigned a different arena than the -one used by the first phase, this phase would not reuse any of the -memory left after the first phase and would add another 300MB to the -address space. Similar memory blowup problems were also noticed in -other applications.

- -

Another benefit of TCMalloc is space-efficient representation of -small objects. For example, N 8-byte objects can be allocated while -using space approximately 8N * 1.01 bytes. I.e., a -one-percent space overhead. ptmalloc2 uses a four-byte header for -each object and (I think) rounds up the size to a multiple of 8 bytes -and ends up using 16N bytes.

- - -

Usage

- -

To use TCMalloc, just link TCMalloc into your application via the -"-ltcmalloc" linker flag.

- -

You can use TCMalloc in applications you didn't compile yourself, -by using LD_PRELOAD:

-
-   $ LD_PRELOAD="/usr/lib/libtcmalloc.so" 
-
-

LD_PRELOAD is tricky, and we don't necessarily recommend this mode -of usage.

- -

TCMalloc includes a heap checker -and heap profiler as well.

- -

If you'd rather link in a version of TCMalloc that does not include -the heap profiler and checker (perhaps to reduce binary size for a -static binary), you can link in libtcmalloc_minimal -instead.

- - -

Overview

- -

TCMalloc assigns each thread a thread-local cache. Small -allocations are satisfied from the thread-local cache. Objects are -moved from central data structures into a thread-local cache as -needed, and periodic garbage collections are used to migrate memory -back from a thread-local cache into the central data structures.

-
- -

TCMalloc treats objects with size <= 256K ("small" objects) -differently from larger objects. Large objects are allocated directly -from the central heap using a page-level allocator (a page is a 8K -aligned region of memory). I.e., a large object is always -page-aligned and occupies an integral number of pages.

- -

A run of pages can be carved up into a sequence of small objects, -each equally sized. For example a run of one page (4K) can be carved -up into 32 objects of size 128 bytes each.

- - -

Small Object Allocation

- -

Each small object size maps to one of approximately 88 allocatable -size-classes. For example, all allocations in the range 961 to 1024 -bytes are rounded up to 1024. The size-classes are spaced so that -small sizes are separated by 8 bytes, larger sizes by 16 bytes, even -larger sizes by 32 bytes, and so forth. The maximal spacing is -controlled so that not too much space is wasted when an allocation -request falls just past the end of a size class and has to be rounded -up to the next class.

- -

A thread cache contains a singly linked list of free objects per -size-class.

-
- -

When allocating a small object: (1) We map its size to the -corresponding size-class. (2) Look in the corresponding free list in -the thread cache for the current thread. (3) If the free list is not -empty, we remove the first object from the list and return it. When -following this fast path, TCMalloc acquires no locks at all. This -helps speed-up allocation significantly because a lock/unlock pair -takes approximately 100 nanoseconds on a 2.8 GHz Xeon.

- -

If the free list is empty: (1) We fetch a bunch of objects from a -central free list for this size-class (the central free list is shared -by all threads). (2) Place them in the thread-local free list. (3) -Return one of the newly fetched objects to the applications.

- -

If the central free list is also empty: (1) We allocate a run of -pages from the central page allocator. (2) Split the run into a set -of objects of this size-class. (3) Place the new objects on the -central free list. (4) As before, move some of these objects to the -thread-local free list.

- -

- Sizing Thread Cache Free Lists

- -

It is important to size the thread cache free lists correctly. If -the free list is too small, we'll need to go to the central free list -too often. If the free list is too big, we'll waste memory as objects -sit idle in the free list.

- -

Note that the thread caches are just as important for deallocation -as they are for allocation. Without a cache, each deallocation would -require moving the memory to the central free list. Also, some threads -have asymmetric alloc/free behavior (e.g. producer and consumer threads), -so sizing the free list correctly gets trickier.

- -

To size the free lists appropriately, we use a slow-start algorithm -to determine the maximum length of each individual free list. As the -free list is used more frequently, its maximum length grows. However, -if a free list is used more for deallocation than allocation, its -maximum length will grow only up to a point where the whole list can -be efficiently moved to the central free list at once.

- -

The psuedo-code below illustrates this slow-start algorithm. Note -that num_objects_to_move is specific to each size class. -By moving a list of objects with a well-known length, the central -cache can efficiently pass these lists between thread caches. If -a thread cache wants fewer than num_objects_to_move, -the operation on the central free list has linear time complexity. -The downside of always using num_objects_to_move as -the number of objects to transfer to and from the central cache is -that it wastes memory in threads that don't need all of those objects. - -

-Start each freelist max_length at 1.
-
-Allocation
-  if freelist empty {
-    fetch min(max_length, num_objects_to_move) from central list;
-    if max_length < num_objects_to_move {  // slow-start
-      max_length++;
-    } else {
-      max_length += num_objects_to_move;
-    }
-  }
-
-Deallocation
-  if length > max_length {
-    // Don't try to release num_objects_to_move if we don't have that many.
-    release min(max_length, num_objects_to_move) objects to central list
-    if max_length < num_objects_to_move {
-      // Slow-start up to num_objects_to_move.
-      max_length++;
-    } else if max_length > num_objects_to_move {
-      // If we consistently go over max_length, shrink max_length.
-      overages++;
-      if overages > kMaxOverages {
-        max_length -= num_objects_to_move;
-        overages = 0;
-      }
-    }
-  }
-
- -See also the section on Garbage Collection -to see how it affects the max_length. - -

Large Object Allocation

- -

A large object size (> 256K) is rounded up to a page size (8K) -and is handled by a central page heap. The central page heap is again -an array of free lists. For i < 128, the -kth entry is a free list of runs that consist of -k pages. The 128th entry is a free list of -runs that have length >= 128 pages:

-
- -

An allocation for k pages is satisfied by looking in -the kth free list. If that free list is empty, we look -in the next free list, and so forth. Eventually, we look in the last -free list if necessary. If that fails, we fetch memory from the -system (using sbrk, mmap, or by mapping in -portions of /dev/mem).

- -

If an allocation for k pages is satisfied by a run -of pages of length > k, the remainder of the -run is re-inserted back into the appropriate free list in the -page heap.

- - -

Spans

- -

The heap managed by TCMalloc consists of a set of pages. A run of -contiguous pages is represented by a Span object. A span -can either be allocated, or free. If free, the span -is one of the entries in a page heap linked-list. If allocated, it is -either a large object that has been handed off to the application, or -a run of pages that have been split up into a sequence of small -objects. If split into small objects, the size-class of the objects -is recorded in the span.

- -

A central array indexed by page number can be used to find the span to -which a page belongs. For example, span a below occupies 2 -pages, span b occupies 1 page, span c occupies 5 -pages and span d occupies 3 pages.

-
- -

In a 32-bit address space, the central array is represented by a a -2-level radix tree where the root contains 32 entries and each leaf -contains 2^14 entries (a 32-bit address space has 2^19 8K pages, and -the first level of tree divides the 2^19 pages by 2^5). This leads to -a starting memory usage of 64KB of space (2^14*4 bytes) for the -central array, which seems acceptable.

- -

On 64-bit machines, we use a 3-level radix tree.

- - -

Deallocation

- -

When an object is deallocated, we compute its page number and look -it up in the central array to find the corresponding span object. The -span tells us whether or not the object is small, and its size-class -if it is small. If the object is small, we insert it into the -appropriate free list in the current thread's thread cache. If the -thread cache now exceeds a predetermined size (2MB by default), we run -a garbage collector that moves unused objects from the thread cache -into central free lists.

- -

If the object is large, the span tells us the range of pages covered -by the object. Suppose this range is [p,q]. We also -lookup the spans for pages p-1 and q+1. If -either of these neighboring spans are free, we coalesce them with the -[p,q] span. The resulting span is inserted into the -appropriate free list in the page heap.

- - -

Central Free Lists for Small Objects

- -

As mentioned before, we keep a central free list for each -size-class. Each central free list is organized as a two-level data -structure: a set of spans, and a linked list of free objects per -span.

- -

An object is allocated from a central free list by removing the -first entry from the linked list of some span. (If all spans have -empty linked lists, a suitably sized span is first allocated from the -central page heap.)

- -

An object is returned to a central free list by adding it to the -linked list of its containing span. If the linked list length now -equals the total number of small objects in the span, this span is now -completely free and is returned to the page heap.

- - -

Garbage Collection of Thread Caches

- -

Garbage collecting objects from a thread cache keeps the size of -the cache under control and returns unused objects to the central free -lists. Some threads need large caches to perform well while others -can get by with little or no cache at all. When a thread cache goes -over its max_size, garbage collection kicks in and then the -thread competes with the other threads for a larger cache.

- -

Garbage collection is run only during a deallocation. We walk over -all free lists in the cache and move some number of objects from the -free list to the corresponding central list.

- -

The number of objects to be moved from a free list is determined -using a per-list low-water-mark L. L -records the minimum length of the list since the last garbage -collection. Note that we could have shortened the list by -L objects at the last garbage collection without -requiring any extra accesses to the central list. We use this past -history as a predictor of future accesses and move L/2 -objects from the thread cache free list to the corresponding central -free list. This algorithm has the nice property that if a thread -stops using a particular size, all objects of that size will quickly -move from the thread cache to the central free list where they can be -used by other threads.

- -

If a thread consistently deallocates more objects of a certain size -than it allocates, this L/2 behavior will cause at least -L/2 objects to always sit in the free list. To avoid -wasting memory this way, we shrink the maximum length of the freelist -to converge on num_objects_to_move (see also -Sizing Thread Cache Free Lists). - -

-Garbage Collection
-  if (L != 0 && max_length > num_objects_to_move) {
-    max_length = max(max_length - num_objects_to_move, num_objects_to_move)
-  }
-
- -

The fact that the thread cache went over its max_size is -an indication that the thread would benefit from a larger cache. Simply -increasing max_size would use an inordinate amount of memory -in programs that have lots of active threads. Developers can bound the -memory used with the flag --tcmalloc_max_total_thread_cache_bytes.

- -

Each thread cache starts with a small max_size -(e.g. 64KB) so that idle threads won't pre-allocate memory they don't -need. Each time the cache runs a garbage collection, it will also try -to grow its max_size. If the sum of the thread cache -sizes is less than --tcmalloc_max_total_thread_cache_bytes, -max_size grows easily. If not, thread cache 1 will try -to steal from thread cache 2 (picked round-robin) by decreasing thread -cache 2's max_size. In this way, threads that are more -active will steal memory from other threads more often than they are -have memory stolen from themselves. Mostly idle threads end up with -small caches and active threads end up with big caches. Note that -this stealing can cause the sum of the thread cache sizes to be -greater than --tcmalloc_max_total_thread_cache_bytes until thread -cache 2 deallocates some memory to trigger a garbage collection.

- -

Performance Notes

- -

PTMalloc2 unittest

- -

The PTMalloc2 package (now part of glibc) contains a unittest -program t-test1.c. This forks a number of threads and -performs a series of allocations and deallocations in each thread; the -threads do not communicate other than by synchronization in the memory -allocator.

- -

t-test1 (included in -tests/tcmalloc/, and compiled as -ptmalloc_unittest1) was run with a varying numbers of -threads (1-20) and maximum allocation sizes (64 bytes - -32Kbytes). These tests were run on a 2.4GHz dual Xeon system with -hyper-threading enabled, using Linux glibc-2.3.2 from RedHat 9, with -one million operations per thread in each test. In each case, the test -was run once normally, and once with -LD_PRELOAD=libtcmalloc.so. - -

The graphs below show the performance of TCMalloc vs PTMalloc2 for -several different metrics. Firstly, total operations (millions) per -elapsed second vs max allocation size, for varying numbers of -threads. The raw data used to generate these graphs (the output of the -time utility) is available in -t-test1.times.txt.

- - - - - - - - - - - - - - - - - -
- - -
    -
  • TCMalloc is much more consistently scalable than PTMalloc2 - for - all thread counts >1 it achieves ~7-9 million ops/sec for small - allocations, falling to ~2 million ops/sec for larger - allocations. The single-thread case is an obvious outlier, - since it is only able to keep a single processor busy and hence - can achieve fewer ops/sec. PTMalloc2 has a much higher variance - on operations/sec - peaking somewhere around 4 million ops/sec - for small allocations and falling to <1 million ops/sec for - larger allocations. - -
  • TCMalloc is faster than PTMalloc2 in the vast majority of - cases, and particularly for small allocations. Contention - between threads is less of a problem in TCMalloc. - -
  • TCMalloc's performance drops off as the allocation size - increases. This is because the per-thread cache is - garbage-collected when it hits a threshold (defaulting to - 2MB). With larger allocation sizes, fewer objects can be stored - in the cache before it is garbage-collected. - -
  • There is a noticeable drop in TCMalloc's performance at ~32K - maximum allocation size; at larger sizes performance drops less - quickly. This is due to the 32K maximum size of objects in the - per-thread caches; for objects larger than this TCMalloc - allocates from the central page heap. -
- -

Next, operations (millions) per second of CPU time vs number of -threads, for max allocation size 64 bytes - 128 Kbytes.

- - - - - - - - - - - - - - - - - -
- -

Here we see again that TCMalloc is both more consistent and more -efficient than PTMalloc2. For max allocation sizes <32K, TCMalloc -typically achieves ~2-2.5 million ops per second of CPU time with a -large number of threads, whereas PTMalloc achieves generally 0.5-1 -million ops per second of CPU time, with a lot of cases achieving much -less than this figure. Above 32K max allocation size, TCMalloc drops -to 1-1.5 million ops per second of CPU time, and PTMalloc drops almost -to zero for large numbers of threads (i.e. with PTMalloc, lots of CPU -time is being burned spinning waiting for locks in the heavily -multi-threaded case).

- - -

Modifying Runtime Behavior

- -

You can more finely control the behavior of the tcmalloc via -environment variables.

- -

Generally useful flags:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
TCMALLOC_SAMPLE_PARAMETERdefault: 0 - The approximate gap between sampling actions. That is, we - take one sample approximately once every - tcmalloc_sample_parmeter bytes of allocation. - This sampled heap information is available via - MallocExtension::GetHeapSample() or - MallocExtension::ReadStackTraces(). A reasonable - value is 524288. -
TCMALLOC_RELEASE_RATEdefault: 1.0 - Rate at which we release unused memory to the system, via - madvise(MADV_DONTNEED), on systems that support - it. Zero means we never release memory back to the system. - Increase this flag to return memory faster; decrease it - to return memory slower. Reasonable rates are in the - range [0,10]. -
TCMALLOC_LARGE_ALLOC_REPORT_THRESHOLDdefault: 1073741824 - Allocations larger than this value cause a stack trace to be - dumped to stderr. The threshold for dumping stack traces is - increased by a factor of 1.125 every time we print a message so - that the threshold automatically goes up by a factor of ~1000 - every 60 messages. This bounds the amount of extra logging - generated by this flag. Default value of this flag is very large - and therefore you should see no extra logging unless the flag is - overridden. -
TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTESdefault: 16777216 - Bound on the total amount of bytes allocated to thread caches. This - bound is not strict, so it is possible for the cache to go over this - bound in certain circumstances. This value defaults to 16MB. For - applications with many threads, this may not be a large enough cache, - which can affect performance. If you suspect your application is not - scaling to many threads due to lock contention in TCMalloc, you can - try increasing this value. This may improve performance, at a cost - of extra memory use by TCMalloc. See - Garbage Collection for more details. -
- -

Advanced "tweaking" flags, that control more precisely how tcmalloc -tries to allocate memory from the kernel.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TCMALLOC_SKIP_MMAPdefault: false - If true, do not try to use mmap to obtain memory - from the kernel. -
TCMALLOC_SKIP_SBRKdefault: false - If true, do not try to use sbrk to obtain memory - from the kernel. -
TCMALLOC_DEVMEM_STARTdefault: 0 - Physical memory starting location in MB for /dev/mem - allocation. Setting this to 0 disables /dev/mem - allocation. -
TCMALLOC_DEVMEM_LIMITdefault: 0 - Physical memory limit location in MB for /dev/mem - allocation. Setting this to 0 means no limit. -
TCMALLOC_DEVMEM_DEVICEdefault: /dev/mem - Device to use for allocating unmanaged memory. -
TCMALLOC_MEMFS_MALLOC_PATHdefault: "" - If set, specify a path where hugetlbfs or tmpfs is mounted. - This may allow for speedier allocations. -
TCMALLOC_MEMFS_LIMIT_MBdefault: 0 - Limit total memfs allocation size to specified number of MB. - 0 means "no limit". -
TCMALLOC_MEMFS_ABORT_ON_FAILdefault: false - If true, abort() whenever memfs_malloc fails to satisfy an allocation. -
TCMALLOC_MEMFS_IGNORE_MMAP_FAILdefault: false - If true, ignore failures from mmap. -
TCMALLOC_MEMFS_MAP_PRVIATEdefault: false - If true, use MAP_PRIVATE when mapping via memfs, not MAP_SHARED. -
- - -

Modifying Behavior In Code

- -

The MallocExtension class, in -malloc_extension.h, provides a few knobs that you can -tweak in your program, to affect tcmalloc's behavior.

- -

Releasing Memory Back to the System

- -

By default, tcmalloc will release no-longer-used memory back to the -kernel gradually, over time. The tcmalloc_release_rate flag controls how quickly -this happens. You can also force a release at a given point in the -progam execution like so:

-
-   MallocExtension::instance()->ReleaseFreeMemory();
-
- -

You can also call SetMemoryReleaseRate() to change the -tcmalloc_release_rate value at runtime, or -GetMemoryReleaseRate to see what the current release rate -is.

- -

Memory Introspection

- -

There are several routines for getting a human-readable form of the -current memory usage:

-
-   MallocExtension::instance()->GetStats(buffer, buffer_length);
-   MallocExtension::instance()->GetHeapSample(&string);
-   MallocExtension::instance()->GetHeapGrowthStacks(&string);
-
- -

The last two create files in the same format as the heap-profiler, -and can be passed as data files to pprof. The first is human-readable -and is meant for debugging.

- -

Generic Tcmalloc Status

- -

TCMalloc has support for setting and retrieving arbitrary -'properties':

-
-   MallocExtension::instance()->SetNumericProperty(property_name, value);
-   MallocExtension::instance()->GetNumericProperty(property_name, &value);
-
- -

It is possible for an application to set and get these properties, -but the most useful is when a library sets the properties so the -application can read them. Here are the properties TCMalloc defines; -you can access them with a call like -MallocExtension::instance()->GetNumericProperty("generic.heap_size", -&value);:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
generic.current_allocated_bytes - Number of bytes used by the application. This will not typically - match the memory use reported by the OS, because it does not - include TCMalloc overhead or memory fragmentation. -
generic.heap_size - Bytes of system memory reserved by TCMalloc. -
tcmalloc.pageheap_free_bytes - Number of bytes in free, mapped pages in page heap. These bytes - can be used to fulfill allocation requests. They always count - towards virtual memory usage, and unless the underlying memory is - swapped out by the OS, they also count towards physical memory - usage. -
tcmalloc.pageheap_unmapped_bytes - Number of bytes in free, unmapped pages in page heap. These are - bytes that have been released back to the OS, possibly by one of - the MallocExtension "Release" calls. They can be used to fulfill - allocation requests, but typically incur a page fault. They - always count towards virtual memory usage, and depending on the - OS, typically do not count towards physical memory usage. -
tcmalloc.slack_bytes - Sum of pageheap_free_bytes and pageheap_unmapped_bytes. Provided - for backwards compatibility only. Do not use. -
tcmalloc.max_total_thread_cache_bytes - A limit to how much memory TCMalloc dedicates for small objects. - Higher numbers trade off more memory use for -- in some situations - -- improved efficiency. -
tcmalloc.current_total_thread_cache_bytes - A measure of some of the memory TCMalloc is using (for - small objects). -
- -

Caveats

- -

For some systems, TCMalloc may not work correctly with -applications that aren't linked against libpthread.so (or -the equivalent on your OS). It should work on Linux using glibc 2.3, -but other OS/libc combinations have not been tested.

- -

TCMalloc may be somewhat more memory hungry than other mallocs, -(but tends not to have the huge blowups that can happen with other -mallocs). In particular, at startup TCMalloc allocates approximately -240KB of internal memory.

- -

Don't try to load TCMalloc into a running binary (e.g., using JNI -in Java programs). The binary will have allocated some objects using -the system malloc, and may try to pass them to TCMalloc for -deallocation. TCMalloc will not be able to handle such objects.

- -
- -
Sanjay Ghemawat, Paul Menage
- - -Last modified: Sat Feb 24 13:11:38 PST 2007 (csilvers) - -
- - - http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/threadheap.dot ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/threadheap.dot b/third_party/gperftools/doc/threadheap.dot deleted file mode 100644 index b2dba72..0000000 --- a/third_party/gperftools/doc/threadheap.dot +++ /dev/null @@ -1,21 +0,0 @@ -digraph ThreadHeap { -rankdir=LR -node [shape=box, width=0.3, height=0.3] -nodesep=.05 - -heap [shape=record, height=2, label="class 0|class 1|class 2|..."] -O0 [label=""] -O1 [label=""] -O2 [label=""] -O3 [label=""] -O4 [label=""] -O5 [label=""] -sep1 [shape=plaintext, label="..."] -sep2 [shape=plaintext, label="..."] -sep3 [shape=plaintext, label="..."] - -heap:f0 -> O0 -> O1 -> sep1 -heap:f1 -> O2 -> O3 -> sep2 -heap:f2 -> O4 -> O5 -> sep3 - -} http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/9661f956/third_party/gperftools/doc/threadheap.gif ---------------------------------------------------------------------- diff --git a/third_party/gperftools/doc/threadheap.gif b/third_party/gperftools/doc/threadheap.gif deleted file mode 100644 index c43d0a3..0000000 Binary files a/third_party/gperftools/doc/threadheap.gif and /dev/null differ