Statistical profiling fixes:

- PM: get rid of umap warning
- sprofalyze.pl: update with recently added servers and drivers
- sprofalyze.pl: properly truncate process names for sample matching
This commit is contained in:
David van Moolenbroek 2010-02-03 12:27:52 +00:00
parent cca24d06d8
commit c7f1b547cb
2 changed files with 30 additions and 10 deletions

View file

@ -20,32 +20,46 @@ $nm = "/usr/bin/nm -dn";
);
# Location of system executables within src. Add new servers/drivers here.
# This should be replaced with something less maintenance-prone some day.
@exes = qw(
kernel/kernel
servers/ds/ds
servers/vfs/vfs
servers/mfs/mfs
servers/hgfs/hgfs
servers/inet/inet
servers/ipc/ipc
servers/is/is
servers/iso9660fs/isofs
servers/mfs/mfs
servers/pfs/pfs
servers/pm/pm
servers/rs/rs
servers/vfs/vfs
servers/vm/vm
servers/rs/service
drivers/amddev/amddev
drivers/at_wini/at_wini
drivers/atl2/atl2
drivers/audio/es1370/es1370
drivers/audio/es1371/es1371
drivers/bios_wini/bios_wini
drivers/dec21140A/dec21140A
drivers/dp8390/dp8390
drivers/dpeth/dpeth
drivers/e1000/e1000
drivers/filter/filter
drivers/floppy/floppy
drivers/fxp/fxp
drivers/lance/lance
drivers/log/log
drivers/memory/memory
drivers/orinoco/orinoco
drivers/pci/pci
drivers/printer/printer
drivers/random/random
drivers/rtl8139/rtl8139
drivers/rtl8169/rtl8169
drivers/sb16/sb16_dsp
drivers/sb16/sb16_mixer
drivers/ti1225/ti1225
@ -91,8 +105,16 @@ foreach $file (@files) {
if (process_datafile($file)) { exit 1; }
}
exit 0;
exit 0;
sub short_name
{
my $shortname = shift;
$shortname =~ s/^.*\///;
return substr($shortname, 0, 7);
}
sub read_symbols
{
@ -104,6 +126,7 @@ sub read_symbols
$shortname =~ s/^.*\///;
print " " if $i <= $#exes;
print $shortname;
$shortname = short_name($exe);
$fullname = $src_root . $exe;
@ -198,9 +221,6 @@ sub process_datafile
read(FILE, $buf, $SAMPLE_SIZE) == $SAMPLE_SIZE or die ("Short read.");
($exe, $pc) = unpack("Z8i", $buf);
# p_name "mem" refers to executable "memory".
$exe =~ s/^mem/memory/;
# We can access the hash by pc because they are all in there.
if (!defined(${$exe."_hash"}{$pc})) {
print "ERROR: Undefined in symbol table indexes: ";
@ -214,7 +234,7 @@ sub process_datafile
# We only need to continue with executables that had any hits.
my @actives = ();
foreach my $exe (@exes) {
$exe =~ s/^.*\///;
$exe = short_name($exe);
next if (!exists($res{$exe}));
push(@actives, $exe);
}

View file

@ -96,13 +96,13 @@ int info_size;
phys_bytes p;
/* Check if supplied pointers point into user process. */
if ((r = sys_umap(who_e, D, (vir_bytes) m_in.PROF_CTL_PTR,
if ((r = sys_umap(who_e, VM_D, (vir_bytes) m_in.PROF_CTL_PTR,
1, &p)) != OK) {
printf("PM: PROFILE: umap failed for process %d\n", who_e);
return r;
}
if ((r =sys_umap(who_e, D, (vir_bytes) m_in.PROF_MEM_PTR,
if ((r =sys_umap(who_e, VM_D, (vir_bytes) m_in.PROF_MEM_PTR,
1, &p)) != OK) {
printf("PM: PROFILE: umap failed for process %d\n", who_e);
return r;