################################################## sub _ganglia_info { ################################################## my ($self,%arg) = @_; my ($total_load,$total_proc) = (0,0); my (%gngl_info,%free_slots); foreach (@{$arg{ginfo}}){ chomp(my $who = `whoami`); chomp(my $host = `hostname -s`); my $pstmt = ($_ eq $host) ? ("cat /proc/cpuinfo | grep processor.*: | wc -l") : ("ssh $who\@"."$_ cat /proc/cpuinfo | grep processor.*: | wc -l"); my $lstmt = ($_ eq $host) ? ("ps -eo pcpu r") : ("ssh $who\@"."$_ ps -eo pcpu r"); my $usrs = ($_ eq $host) ? ("ps -eo user r") : ("ssh $who\@"."$_ ps -eo user r"); my $rnprc = ($_ eq $host) ? ("ps -eo cmd r") : ("ssh $who\@"."$_ ps -eo cmd r"); chomp(my $proc = qx($pstmt)); chomp(my $tmp_load = qx($lstmt)); chomp(my $rhsts = qx($usrs)); chomp(my $rjob = qx($rnprc)); my @hsts = split("\n",$rhsts); my @job = split("\n",$rjob); my %tmp_hsh; @tmp_hsh{@hsts} = @job; $gngl_info{$_} = \%tmp_hsh; my @array = split("\n",$tmp_load); my $tmp_load_s = 0; foreach (@array){ $tmp_load_s += $_ if ($_ =~/\d+\.\d+/g); } $total_proc += $proc; $free_slots{$_} = int($proc - ($tmp_load_s / 100 )); $total_load += (100 - ($tmp_load_s / $proc )); } $total_load = $total_load / @{$arg{ginfo}}; return [$total_proc,$total_load,\%free_slots,\%gngl_info]; }