xref: /aosp_15_r20/external/mbedtls/scripts/massif_max.pl (revision 62c56f9862f102b96d72393aff6076c951fb8148)
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