Changeset 21d3542 for memlog_analyze


Ignore:
Timestamp:
06/02/15 16:50:48 (9 years ago)
Author:
Hal Finkel <hfinkel@…>
Branches:
master
Children:
6444e03
Parents:
192a260
git-author:
Hal Finkel <hfinkel@…> (06/02/15 16:50:48)
git-committer:
Hal Finkel <hfinkel@…> (06/02/15 16:50:48)
Message:

collect and report on mmap totals

File:
1 edited

Legend:

Unmodified
Added
Removed
  • memlog_analyze

    rc83befc r21d3542  
    6464      my $state = shift(@parts); 
    6565 
    66       my ($time, $then_max_rss, $tid) = split(/\s+/, $state); 
     66      my ($time, $then_max_rss, $tid, $then_arena, $then_mmap) = 
     67        split(/\s+/, $state); 
    6768      if ($pot_max_rss < $then_max_rss) { 
    6869        $pot_max_rss = $then_max_rss; 
     
    9495# The first step is to determine the high-water mark. 
    9596my $max_rss = 0; 
     97my $arena = 0; 
     98my $mmap = 0; 
    9699foreach my $line (<MEMLOG>) { 
    97100  chomp($line); 
     
    101104  my $state = shift(@parts); 
    102105 
    103   my ($time, $then_max_rss, $tid) = split(/\s+/, $state); 
     106  my ($time, $then_max_rss, $tid, $then_arena, $then_mmap) = 
     107    split(/\s+/, $state); 
    104108  if ($max_rss < $then_max_rss) { 
    105109    $max_rss = $then_max_rss; 
     110    $arena = $then_arena; 
     111    $mmap = $then_mmap; 
    106112  } 
    107113} 
     
    131137  } 
    132138 
    133   my ($time, $then_max_rss, $tid) = split(/\s+/, $state); 
     139  my ($time, $then_max_rss, $tid, $then_arena, $then_mmap) = 
     140    split(/\s+/, $state); 
    134141  $active_alloc_time = $time; 
    135142 
     
    146153# Convert maxrss, currently in KB, to bytes. 
    147154$max_rss *= 1024; 
     155if (defined $arena) { 
     156  $arena *= 1024; 
     157} 
     158if (defined $mmap) { 
     159  $mmap *= 1024; 
     160} 
    148161 
    149162my $total_size = 0; 
     
    162175 
    163176  my ($size, $ptr) = ($op =~ /^M: (\d+) 0x(\w+)/); 
    164   my ($time, $then_max_rss, $tid) = split(/\s+/, $state); 
     177  my ($time, $then_max_rss, $tid, $then_arena, $then_mmap) = 
     178    split(/\s+/, $state); 
    165179 
    166180  $total_size += $size; 
     
    249263} 
    250264 
     265sub format_bytes_or_unk($) { 
     266  my $b = $_[0]; 
     267  return defined($b) ? format_bytes($b) : "(unknown)"; 
     268} 
     269 
    251270print DOT ("digraph \"memlog\" {\n"); 
    252271print DOT ("size=\"8,11\";\n"); 
     
    254273 
    255274my $find_type = $find_leaks ? " (leaks)" : ""; 
    256 printf DOT ("Legend [shape=box, fontsize=100, shape=oval," . 
    257             "label=\"Total: %s active$find_type at maxrss = %s after %s s\"];\n", 
     275print DOT "subgraph cluster_key {\n"; 
     276print DOT "\trank=min;\n"; 
     277print DOT "\tlabel=\"memlog\";\n"; 
     278print DOT "\tfontsize=100;\n"; 
     279print DOT "\trankdir=UR;\n"; 
     280printf DOT ("Legend [shape=box, fontsize=100, shape=plaintext," . 
     281            "label=\"Total: %s active$find_type at maxrss = %s after %s s\\narena: %s\\nmmap: %s\"];\n", 
    258282            format_bytes($total_size), format_bytes($max_rss), 
    259             $active_alloc_time); 
    260  
    261 printf TXT ("memlog: Total: %s active$find_type at maxrss = %s after %s s\n\n", 
     283            $active_alloc_time, format_bytes_or_unk($arena), 
     284            format_bytes_or_unk($mmap)); 
     285print DOT "}\n"; 
     286 
     287printf TXT ("memlog: Total: %s active$find_type at maxrss = %s after %s s\n\tarena: %s\tmmap: %s\n\n", 
    262288            format_bytes($total_size), format_bytes($max_rss), 
    263             $active_alloc_time); 
     289            $active_alloc_time, format_bytes_or_unk($arena), 
     290            format_bytes_or_unk($mmap)); 
    264291 
    265292my %cached_names; 
Note: See TracChangeset for help on using the changeset viewer.