Changeset f21a9bbe574ee86efd04eca84e06053eb4525e91

Show
Ignore:
Timestamp:
04/25/10 21:27:07 (4 years ago)
Author:
Jason Dixon <jdixon@omniti.com>
git-committer:
Jason Dixon <jdixon@omniti.com> 1272230827 +0000
git-parent:

[2f1d5df84e5f5f86a5aa73c8c50310b72c1965c6]

git-author:
Jason Dixon <jdixon@omniti.com> 1272230827 +0000
Message:

solaris support

git-svn-id: https://labs.omniti.com/resmon/branches/resmon2@327 8c0face9-b7db-6ec6-c4b3-d5f7145c7d55

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • lib/Core/Memstat.pm

    r2f1d5df rf21a9bb  
    3939for anything functional. 
    4040 
     41=head1 METRICS 
     42 
     43=over 
     44 
    4145=item actv_mem 
    4246 
     
    4751Free real memory. 
    4852 
    49 =back 
     53=head1 KSTAT METRICS 
    5054 
    51 =head1 METRICS 
    52  
    53 =over 
    54  
    55 =item read_sec 
    56  
    57 Reads per second. 
    58  
    59 =item write_sec 
    60  
    61 Writes per second. 
     55Solaris provides an interface to numerous kernel statistics.  If the 
     56Perl Sun::Solaris::Kstat library is locally available, this module will 
     57prefer that method first, bypassing vmstat collection.  Otherwise, this 
     58module falls back on the standard vmstat collection method. 
    6259 
    6360=back 
     
    7269    my $osname = $^O; 
    7370 
    74     if ($osname eq 'openbsd') { 
     71    if ($osname eq 'solaris') { 
     72        my $usekstat = 0; 
     73        my $pagesize = run_command('pagesize'); 
     74        my $kstat; 
     75        eval "use Sun::Solaris::Kstat"; 
     76        unless ($@) { 
     77            $usekstat = 1; 
     78            $kstat = Sun::Solaris::Kstat->new(); 
     79        } 
     80        if ($usekstat && $pagesize) { 
     81            my %metrics; 
     82            my $syspages = $kstat->{'unix'}->{0}->{'system_pages'}; 
     83 
     84            foreach (keys %$syspages) { 
     85                $metrics{"kstat_${_}"} = [int($syspages->{$_} * $pagesize / 1024), 'i'] unless ($_ eq 'class'); 
     86            } 
     87            $metrics{'kstat_cache_mem'} = int($kstat->{'zfs'}->{0}->{'arcstats'}->{'size'} / 1024); 
     88            return \%metrics; 
     89        } else { 
     90            my $output = run_command("$vmstat_path"); 
     91            if ($output =~ /.*cs\s+us\s+sy\s+id\n\s+\d+\s+\d+\s+\d+\s+(\d+)\s+(\d+).*/) { 
     92                return { 
     93                    'actv_mem' => [$1, 'i'], 
     94                    'free_mem' => [$2, 'i'] 
     95                }; 
     96            } else { 
     97                die "Unable to extract statistics\n"; 
     98            } 
     99        } 
     100    } elsif ($osname eq 'openbsd') { 
    75101        my $output = run_command("$vmstat_path"); 
    76102        if ($output =~ /.*cs\s+us\s+sy\s+id\n\s+\d+\s+\d+\s+\d+\s+(\d+)\s+(\d+).*/) {