#!/usr/bin/perl use warnings; use strict; use File::Spec::Functions qw(splitpath); my %procs; my %cmds; my %stats; do "parse-data.pl"; &parse_data(\%procs, \%cmds); &accumulate_stats(\%procs, \%stats, 1); sub dump_initscripts { my $pid = shift; my $depth = shift; my $indent = shift; my $proc = $procs{$pid}; my $cmd = $proc->{cmd}->[$#{$proc->{cmd}}]; my $pad = 12 - length($indent); printf "%s %-4d %-30s %${pad}s", $indent, $pid, $cmd, ""; my $stats = $stats{$pid}; printf " read %3d write %3d\t", $stats->[4], $stats->[5], "\t"; if ($proc->{end}) { printf "run %2.2fs\n", (($proc->{end}-$proc->{start})/1000); } else { print "running...\n"; } foreach my $kid (sort {$a <=> $b } keys %{$proc->{kids}}) { &dump_initscripts($kid,$depth+1, "$indent "); } } &accumulate_stats(1); &dump_initscripts(1, 1, "");