From commits-return-15474-apmail-trafficserver-commits-archive=trafficserver.apache.org@trafficserver.apache.org Thu Mar 24 21:53:16 2016 Return-Path: X-Original-To: apmail-trafficserver-commits-archive@www.apache.org Delivered-To: apmail-trafficserver-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5162618B36 for ; Thu, 24 Mar 2016 21:53:16 +0000 (UTC) Received: (qmail 57719 invoked by uid 500); 24 Mar 2016 21:53:16 -0000 Delivered-To: apmail-trafficserver-commits-archive@trafficserver.apache.org Received: (qmail 57665 invoked by uid 500); 24 Mar 2016 21:53:16 -0000 Mailing-List: contact commits-help@trafficserver.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@trafficserver.apache.org Delivered-To: mailing list commits@trafficserver.apache.org Received: (qmail 57656 invoked by uid 99); 24 Mar 2016 21:53:16 -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; Thu, 24 Mar 2016 21:53:16 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id C5C41E97E6; Thu, 24 Mar 2016 21:53:15 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: zwoop@apache.org To: commits@trafficserver.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: trafficserver git commit: TS-4297 Adds a script to diff freelist memory dumps Date: Thu, 24 Mar 2016 21:53:15 +0000 (UTC) Repository: trafficserver Updated Branches: refs/heads/master 0dde77e35 -> 797651e89 TS-4297 Adds a script to diff freelist memory dumps This closes #538 Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/797651e8 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/797651e8 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/797651e8 Branch: refs/heads/master Commit: 797651e8919c9818b80c46fe2b447554f3882778 Parents: 0dde77e Author: Leif Hedstrom Authored: Thu Mar 24 13:50:51 2016 -0600 Committer: Leif Hedstrom Committed: Thu Mar 24 15:00:12 2016 -0600 ---------------------------------------------------------------------- tools/freelist_diff.pl | 69 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/797651e8/tools/freelist_diff.pl ---------------------------------------------------------------------- diff --git a/tools/freelist_diff.pl b/tools/freelist_diff.pl new file mode 100755 index 0000000..8f15a93 --- /dev/null +++ b/tools/freelist_diff.pl @@ -0,0 +1,69 @@ +#!/usr/bin/env perl + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +sub usage { + print "Usage: freelist_diff.pl dump1.txt dump2.txt\n"; +} + +sub int_meg { + my $bytes = shift; + return $bytes / (1024*1024); +} + +sub load_file { + my $file = shift; + my %data; + + open(DATA, $file) || return undef; + while() { + my @items = split; + chomp @items; + + if ($#items == 6) { + $data{$items[6]} = [int_meg($items[0]), int_meg($items[2]), int_meg($items[4])]; + } + } + close(DATA); + + return \%data; +} + +my $data1 = load_file($ARGV[0]) || die usage(); +my $data2 = load_file($ARGV[1]) || die usage(); +my %diff; + +while (my ($key, $value) = each(%{$data1})) { + # before alloc [0], after alloc [1], before in-use [2], after in-use [3] + $diff{$key} = [ $value->[0], $data2->{$key}->[0], $value->[1], $data2->{$key}->[1], + # diff alloc [4], diff in-use [5] + $data2->{$key}->[0] - $value->[0], $data2->{$key}->[1] - $value->[1], + # type size [6] + $value->[2] ]; +} + +print "Sorted by in-use growth\n"; +print "=======================\n"; +foreach (sort {$diff{$b}->[5] <=> $diff{$a}->[5]} keys %diff) { + printf("%s (%.3fM): %.1fM -> %.1fM == %.1fM\n", $_, $diff{$_}->[6], $diff{$_}->[2], $diff{$_}->[3], $diff{$_}->[5]); +} + +print "\n\nSorted by allocated growth\n"; +print "==========================\n"; +foreach (sort {$diff{$b}->[4] <=> $diff{$a}->[4]} keys %diff) { + printf("%s (%.3fM): %.1fM -> %.1fM == %.1fM\n", $_, $diff{$_}->[6], $diff{$_}->[0], $diff{$_}->[1], $diff{$_}->[4]); +}