Changeset 92 for trunk/oarutils


Ignore:
Timestamp:
Jan 24, 2013, 2:53:43 PM (11 years ago)
Author:
g7moreau
Message:
  • Just format as usual (no tab, 3 space...)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/oarutils/oar-dispatch

    r33 r92  
    1010use Coro::Signal;
    1111use Coro::Semaphore;
     12#use Coro::Timer qw(sleep);
    1213
    1314my $task = 0;
     
    1819
    1920Getopt::Long::GetOptions(
    20         'task=i'                => \$task,
    21         'overload=f'    => \$overload,
    22         'file=s'                => \$file,
    23         'verbose'       => \$verbose,
    24         'help'          => \$help,
    25         ) || pod2usage(-verbose => 0);
     21   'task=i'       => \$task,
     22   'overload=f'   => \$overload,
     23   'file=s'       => \$file,
     24   'verbose'      => \$verbose,
     25   'help'         => \$help,
     26   ) || pod2usage(-verbose => 0);
    2627pod2usage(-verbose => 2) if $help;
    2728
    2829if ($task == 0) {
    29         open(NODE_FILE, '<', "$ENV{OAR_NODE_FILE}") or die "can't open ENV{OAR_NODE_FILE}: $!";
    30         $task++ while <NODE_FILE>;
    31         close NODE_FILE;
    32 }
     30   open(NODE_FILE, '<', "$ENV{OAR_NODE_FILE}") or die "can't open ENV{OAR_NODE_FILE}: $!";
     31   $task++ while <NODE_FILE>;
     32   close NODE_FILE;
     33   }
    3334
     35# job to run
    3436my @job = ();
    3537open (JOB_LIST, '<', "$file") or die "can't open $file: $!";
    3638while (<JOB_LIST>) {
    37         chomp;
    38         next if m/^#/;
    39         push @job, $_ if m/^\s*oarsub/;
    40 }
     39   chomp;
     40   next if m/^#/;
     41   push @job, $_ if m/^\s*oarsub/;
     42   }
    4143close JOB_LIST;
    4244
     
    4648# interactive job
    4749if (not $container_id > 1) {
    48         $insert_oar_option = '';
    49         $overload = 1;
    50 }
     50   $insert_oar_option = '';
     51   $overload = 1;
     52   }
    5153
    5254
     
    5860my %scheduled = ();
    5961
     62# asynchrone start job block
    6063async {
    61         for my $job (@job) {
    62                 while ($job_active->count >= $task*$overload) {
    63                         cede;
    64                 }
    65                 $job =~ s/^\s*oarsub//;
    66                 print "oarsub $insert_oar_option $job" if $verbose;
    67                 my $job_id = `oarsub $insert_oar_option $job|grep ^OAR_JOB_ID|cut -f 2 -d '='`;
    68                 chomp $job_id;
    69                 if ($job_id > 1) {
    70                         $scheduled{$job_id}++;
    71                         $job_active->up;
    72                 }
    73                 cede;
    74         }
    75 }
     64   JOB:
     65   for my $job (@job) {
     66      while ($job_active->count >= $task*$overload) {
     67         cede;
     68         }
     69      $job =~ s/^\s*oarsub//;
     70      print "oarsub $insert_oar_option $job" if $verbose;
     71      my $job_id = `oarsub $insert_oar_option $job|grep ^OAR_JOB_ID|cut -f 2 -d '='`;
     72      chomp $job_id;
     73      if ($job_id > 1) {
     74         $scheduled{$job_id}++;
     75         $job_active->up;
     76         }
     77      cede;
     78      }
     79   }
    7680
    7781async {
    78         while () {
    79                 for my $job_id (keys %scheduled) {
    80                         my $is_finish = `oarstat -s -j $job_id`;
    81                         chomp $is_finish;
    82                         if ($is_finish =~ m/Terminated/) {
    83                                 delete $scheduled{$job_id};
    84                                 $job_active->down;
    85                                 $job_todo->down;
    86                         }
    87                         cede;
    88                 }
     82   while () {
     83      for my $job_id (keys %scheduled) {
     84         my $is_finish = `oarstat -s -j $job_id`;
     85         chomp $is_finish;
     86         if ($is_finish =~ m/Terminated/) {
     87            delete $scheduled{$job_id};
     88            $job_active->down;
     89            $job_todo->down;
     90            }
     91         cede;
     92         }
    8993
    90                 $finished->send if $job_todo->count == 0;
    91                 cede;
    92         }
    93 }
     94      $finished->send if $job_todo->count == 0;
     95      cede;
     96      }
     97   }
    9498
    9599cede;
    96100   
     101# all job have been done
    97102$finished->wait;
    98103
Note: See TracChangeset for help on using the changeset viewer.