summaryrefslogtreecommitdiffstats
path: root/chromium/tools/memory_watcher/scripts/memprof.pl
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/tools/memory_watcher/scripts/memprof.pl')
-rwxr-xr-xchromium/tools/memory_watcher/scripts/memprof.pl116
1 files changed, 0 insertions, 116 deletions
diff --git a/chromium/tools/memory_watcher/scripts/memprof.pl b/chromium/tools/memory_watcher/scripts/memprof.pl
deleted file mode 100755
index d902e5e4fac..00000000000
--- a/chromium/tools/memory_watcher/scripts/memprof.pl
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/usr/bin/perl
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-# Given a memwatcher logfile, group memory allocations by callstack.
-#
-# Usage:
-#
-# memprof.pl <logfile>
-#
-# logfile -- The memwatcher.logXXXX file to summarize.
-#
-#
-#
-# Sample output:
-#
-# 54,061,617 100.00% AllocationStack::AllocationStack
-# 41,975,368 77.64% malloc
-# 11,886,592 21.99% VirtualAlloc
-# 7,168,000 13.26% v8::internal::OS::Allocate
-# 7,168,000 13.26% v8::internal::MemoryAllocator::AllocateRawMemory
-# 5,976,184 11.05% WebCore::V8Bridge::evaluate
-# 5,767,168 10.67% v8::internal::MemoryAllocator::AllocatePages
-# 5,451,776 10.08% WebCore::V8Proxy::initContextIfNeeded
-# ....
-#
-#
-#
-# ********
-# Note: The output is currently sorted by decreasing size.
-# ********
-#
-
-sub process_raw($$) {
- my $file = shift;
- my $filter = shift;
-
- my %leaks = ();
- my %stackframes = ();
-
- my $blamed = 0;
- my $bytes = 0;
- my $hits = 0;
- open (LOGFILE, "$file") or die("could not open $file");
- while(<LOGFILE>) {
- my $line = $_;
-#print "$line";
- chomp($line);
- if ($line =~ m/([0-9]*) bytes, ([0-9]*) allocs/) {
-
- # If we didn't find any frames to account this to, log that.
- if ($blamed == 0) {
- $leaks{"UNACCOUNTED"} += $bytes;
- }
-
-#print "START\n";
- #print("stackframe " . $1 . ", " . $2 . "\n");
- $hits = $2;
- $bytes = $1;
- %stackframes = (); # we have a new frame, clear the list.
- $blamed = 0; # we haven't blamed anyone yet
- }
- elsif ($line =~ m/Total Bytes:[ ]*([0-9]*)/) {
- $total_bytes += $1;
- }
- elsif ($line =~ m/=============/) {
- next;
- }
- elsif ($line =~ m/[ ]*([\-a-zA-Z_\\0-9\.]*) \(([0-9]*)\):[ ]*([<>_a-zA-Z_0-9:]*)/) {
-# print("junk: " . $line . "\n");
-# print("file: $1\n");
-# print("line: $2\n");
-# print("function: $3\n");
-#
-
- # blame the function
- my $pig = $3;
-# my $pig = $1;
-
- # only add the memory if this function is not yet on our callstack
- if (!exists $stackframes{$pig}) {
- $leaks{$pig} += $bytes;
- }
-
- $stackframes{$pig}++;
- $blamed++;
- }
- }
-
- # now dump our hash table
- my $sum = 0;
- my @keys = sort { $leaks{$b} <=> $leaks{$a} }keys %leaks;
- for ($i=0; $i<@keys; $i++) {
- my $key = @keys[$i];
- printf "%11s\t%3.2f%%\t%s\n", comma_print($leaks{$key}), (100* $leaks{$key} / $total_bytes), $key;
- $sum += $leaks{$key};
- }
- printf("TOTAL: %s\n", comma_print($sum));
-}
-
-# Insert commas into an integer after each three digits for printing.
-sub comma_print {
- my $num = "$_[0]";
- $num =~ s/(\d{1,3}?)(?=(\d{3})+$)/$1,/g;
- return $num;
-}
-
-# ----- Main ------------------------------------------------
-
-# Get the command line argument
-my $filename = shift;
-my $filter = shift;
-
-# Process the file.
-process_raw($filename, $filter);