1*62c56f98SSadaf Ebrahimi#!/usr/bin/env perl 2*62c56f98SSadaf Ebrahimi 3*62c56f98SSadaf Ebrahimi# Parse a massif.out.xxx file and output peak total memory usage 4*62c56f98SSadaf Ebrahimi# 5*62c56f98SSadaf Ebrahimi# Copyright The Mbed TLS Contributors 6*62c56f98SSadaf Ebrahimi# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 7*62c56f98SSadaf Ebrahimi 8*62c56f98SSadaf Ebrahimiuse warnings; 9*62c56f98SSadaf Ebrahimiuse strict; 10*62c56f98SSadaf Ebrahimi 11*62c56f98SSadaf Ebrahimiuse utf8; 12*62c56f98SSadaf Ebrahimiuse open qw(:std utf8); 13*62c56f98SSadaf Ebrahimi 14*62c56f98SSadaf Ebrahimidie unless @ARGV == 1; 15*62c56f98SSadaf Ebrahimi 16*62c56f98SSadaf Ebrahimimy @snaps; 17*62c56f98SSadaf Ebrahimiopen my $fh, '<', $ARGV[0] or die; 18*62c56f98SSadaf Ebrahimi{ local $/ = 'snapshot='; @snaps = <$fh>; } 19*62c56f98SSadaf Ebrahimiclose $fh or die; 20*62c56f98SSadaf Ebrahimi 21*62c56f98SSadaf Ebrahimimy ($max, $max_heap, $max_he, $max_stack) = (0, 0, 0, 0); 22*62c56f98SSadaf Ebrahimifor (@snaps) 23*62c56f98SSadaf Ebrahimi{ 24*62c56f98SSadaf Ebrahimi my ($heap, $heap_extra, $stack) = m{ 25*62c56f98SSadaf Ebrahimi mem_heap_B=(\d+)\n 26*62c56f98SSadaf Ebrahimi mem_heap_extra_B=(\d+)\n 27*62c56f98SSadaf Ebrahimi mem_stacks_B=(\d+) 28*62c56f98SSadaf Ebrahimi }xm; 29*62c56f98SSadaf Ebrahimi next unless defined $heap; 30*62c56f98SSadaf Ebrahimi my $total = $heap + $heap_extra + $stack; 31*62c56f98SSadaf Ebrahimi if( $total > $max ) { 32*62c56f98SSadaf Ebrahimi ($max, $max_heap, $max_he, $max_stack) = ($total, $heap, $heap_extra, $stack); 33*62c56f98SSadaf Ebrahimi } 34*62c56f98SSadaf Ebrahimi} 35*62c56f98SSadaf Ebrahimi 36*62c56f98SSadaf Ebrahimiprintf "$max (heap $max_heap+$max_he, stack $max_stack)\n"; 37