X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fleak_finder.pl;h=a7c7abb3b1e23d7225d7781cbd25aa32c3064739;hb=c28933602a6971739cb5ec3a1e920409ff19b01e;hp=45d221161bf18ac6f59863095477a28ff1b37eb5;hpb=4a80a10a9ed8038669b524d20e20fd2a87448b82;p=fs%2Flustre-release.git diff --git a/lustre/tests/leak_finder.pl b/lustre/tests/leak_finder.pl index 45d2211..a7c7abb 100644 --- a/lustre/tests/leak_finder.pl +++ b/lustre/tests/leak_finder.pl @@ -11,10 +11,48 @@ my $debug_line = 0; my $total = 0; my $max = 0; -while ($line = <>) { +my @parsed; +my %cpu; +my $start_time = 0; + +if (!defined($ARGV[0])) { + print "No log file specified\n"; + exit +} + +open(INFILE, $ARGV[0]); +while ($line = ) { + if ($line =~ m/^(.*)\((.*):(\d+):(.*)\(\)\)/) { + @parsed = split(":", $1); + if (substr ($parsed[2], -1, 1) eq "F") { + chop $parsed[2]; + $cpu{$parsed[2]} = 0; + } else { + if (!defined($cpu{$parsed[2]})) { + $cpu{$parsed[2]} = $parsed[3]; + } + } + } +} + +foreach $time (values %cpu) { + if ($start_time < $time) { + $start_time = $time; + } +} + +print "Starting analysis since $start_time\n"; + +seek(INFILE, 0, 0); +while ($line = ) { $debug_line++; my ($file, $func, $lno, $name, $size, $addr, $type); - if ($line =~ m/^.*(\.).*\((.*):(\d+):(.*)\(\)\) (k|v|slab-)(.*) '(.*)': (\d+) at ([\da-f]+)/){ + if ($line =~ m/^(.*)\((.*):(\d+):(.*)\(\)\) (k|v|slab-)(.*) '(.*)': (\d+) at ([\da-f]+)/){ + @parsed = split(":", $1); + if ($parsed[3] <= $start_time) { + next; + } + $file = $2; $lno = $3; $func = $4; @@ -69,6 +107,7 @@ while ($line = <>) { $total -= $size; } } +close(INFILE); # Sort leak output by allocation time my @sorted = sort {