Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Finding Usable Nodes in our Cluster

by Andrew_Levenson (Hermit)
on Apr 10, 2008 at 19:07 UTC ( [id://679557]=CUFP: print w/replies, xml ) Need Help??

This may be very, very simple compared to most goings on here, but it was cool for me since I still consider myself a newbie yet I was able to hack together a working, useful script in 5 minutes.

This script reads in the output of another script (which tells what nodes in our cluster have how many processors being used), and weeds out which nodes in our cluster are usable (i.e. have zero or one processors being used).

#!/usr/bin/perl #Andrew Levenson #2:13PM EST #Thursday, April 10th, 2008 #Displays nodes on ganglia with 0 or 1 used processors use strict; use warnings; my @open=(); my $ganglia=`ganglia proc_run`; my @results=split(/\n/, $ganglia); foreach(@results) { push @open, $_ if $_=~m/\s{1,}1\s{1,}$/; unshift @open, $_ if $_=~m/\s{1,}0\s{1,}$/; } print "$_\n" foreach(@open);

This greatly reduces to amount of time I spend scanning my terminal looking for whether or not I can submit a molecule to optimize.
C(qw/74 97 104 112/);sub C{while(@_){$c**=$C;print (map{chr($C!=$c?shift:pop)}$_),$C+=@_%2!=1?1:0}}

Replies are listed 'Best First'.
Re: Finding Usable Nodes in our Cluster
by jwkrahn (Abbot) on Apr 11, 2008 at 02:37 UTC
    my $ganglia=`ganglia proc_run`; my @results=split(/\n/, $ganglia); foreach(@results) { push @open, $_ if $_=~m/\s{1,}1\s{1,}$/; unshift @open, $_ if $_=~m/\s{1,}0\s{1,}$/; }

    That could be simplified to:

    foreach ( `ganglia proc_run` ) { push @open, $_ if /\s1\s+$/; unshift @open, $_ if /\s0\s+$/; }
      Awesome, it works great! I updated it to include some formatting of the output to make everything pretty.
      #!/usr/bin/perl #Andrew Levenson #2:13PM EST #Thursday, April 10th, 2008 #Displays nodes on Deli with 0 or 1 used processors use strict; use warnings; print "\n"; my @open=("\n", "One Active Processor:\n\n"); foreach ( `ganglia proc_run` ) { unshift @open, $_ if /\s0\s+$/; push @open, $_ if /\s1\s+$/; } print "Zero Active Processors:\n\n"; print $_ foreach(@open); print "\n";
      C(qw/74 97 104 112/);sub C{while(@_){$c**=$C;print (map{chr($C!=$c?shift:pop)}$_),$C+=@_%2!=1?1:0}}
        print $_ foreach(@open);

        You don't really need the loop there:

        print @open;

        And it might be better if you used strings instead of arrays:

        use strict; use warnings; my $zero = "\nZero Active Processors:\n\n"; my $one = "\nOne Active Processor:\n\n"; foreach ( `ganglia proc_run` ) { $zero .= $_ if /\s0\s+$/; $one .= $_ if /\s1\s+$/; } print "$zero$one\n";
      Ah, thank you! I'll give it a shot when I get back to the lab.
      C(qw/74 97 104 112/);sub C{while(@_){$c**=$C;print (map{chr($C!=$c?shift:pop)}$_),$C+=@_%2!=1?1:0}}

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: CUFP [id://679557]
Approved by GrandFather
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (7)
As of 2024-04-18 17:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found