coren has submitted this change and it was merged.

Change subject: Add (parts of) qcronsub functionality into jsub:
......................................................................


Add (parts of) qcronsub functionality into jsub:

  - To ease transition from the toolserver, set h_vmem=1.1*virtual_free
    if h_vmem<virtual_free and virtual_free is given;
  - set -once if started as qcronsub

(merged)

Change-Id: I785f48e872b08962150484b7d6af358603e5feef
---
M packages/jobutils/usr/local/bin/jsub
A packages/jobutils/usr/local/bin/qcronsub
2 files changed, 29 insertions(+), 6 deletions(-)

Approvals:
  coren: Verified; Looks good to me, approved



diff --git a/packages/jobutils/usr/local/bin/jsub 
b/packages/jobutils/usr/local/bin/jsub
index d62c53e..f689052 100755
--- a/packages/jobutils/usr/local/bin/jsub
+++ b/packages/jobutils/usr/local/bin/jsub
@@ -6,6 +6,20 @@
 use IPC::Run qw(harness run);
 use String::ShellQuote;
 
+sub memparse_kb {
+  # parses an XXK, XXm, XXg to the # of kilobytes
+  $arg = $_[0];
+  if ($arg =~ m/^([1-9][0-9]*)([mgk])$/i) {
+    $amount = $1;
+    $unit = $2;
+    if($unit =~ m/[mg]/i) {$amount *= 1024};
+    if($unit =~ m/[g]/i) {$amount *= 1024};
+  } else {
+    die "$script: memory value must be an integer followed by 'k', 'm' or 'g': 
$_[0]\n";
+  }
+  return $amount;
+}
+
 my %qsubargs = (
        '-a' => 1, '-b' => 1, '-cwd' => 0, '-e' => 1, '-hard' => 0, '-i' => 1, 
'-j' => 1,
        '-l' => 1, '-now' => 1, '-N' => 1, '-o' => 1, '-p' => 1, '-q' => 1, 
'-soft' => 0,
@@ -14,7 +28,7 @@
 );
 my %qsargs;
 my @args;
-my $memory = '256m';
+my $memory = memparse_kb('256M');
 my $once = 0;
 my $stderr = 0;
 my $continuous = 0;
@@ -24,6 +38,7 @@
 $script = $1 if $script =~ m{/([^/]+)$};
 
 $continuous = $once = 1 if ($script eq 'jstart');
+$once = 1 if $script eq 'qcronsub';
 
 my @options;
 while($#ARGV > 0) {
@@ -50,7 +65,7 @@
                    (number prefixed by 'k', 'm' or 'g')
  -once             Only start one job with that name, fail if
                    another is already started or queued (default
-                   if invoked as 'jstart').
+                   if invoked as 'jstart' or 'qcronsub').
  -continuous       Start a self-restarting job on the continuous
                    queue (default if invoked as 'jstart')
  -quiet            If successful, don't output anything
@@ -106,8 +121,7 @@
 foreach my $option (@options) {
   my($opt, $optval) = @$option;
   if($opt eq '-mem') {
-    $memory = $optval;
-    die "$script: memory value must be an integer followed by 'k', 'm' or 
'g'\n" unless $memory =~ m/^([1-9][0-9]*[mMgGkK])$/;
+    $memory = memparse_kb($optval);
   } elsif($opt eq '-once') {
     $once = 1;
   } elsif($opt eq '-stderr') {
@@ -119,7 +133,15 @@
     $quiet = 1;
   } else {
     if($opt eq '-l') {
-      $memory = $1  if $optval =~ s/h_vmem=([0-9]+[mMgGkK]),?//;
+      $memory = memparse_kb($1) if $optval =~ s/h_vmem=([0-9]+[mMgGkK]),?//;
+      if ($optval =~ s/virtual_free=([0-9]+[mMgGkK]),?//) {
+        $vfmem = memparse_kb($1);
+        if ($vfmem > $memory) {
+            $new_mem = $vfmem * 1.1;
+            print "WARNING: virtual_free=${vfmem}k is larger than 
h_vmem=${memory}k. Setting h_vmem=${new_mem}k\n";
+            $memory = $new_mem;
+        }
+      }
       next if $optval =~ m/^,?$/;
     }
     $qsargs{$opt} = $optval;
@@ -155,7 +177,7 @@
 
 push @args, '-e', $err unless defined $qsargs{'-e'};
 push @args, '-o', $out unless defined $qsargs{'-o'};
-push @args, '-N', $jobname, '-hard', '-l', "h_vmem=$memory";
+push @args, '-N', $jobname, '-hard', '-l', "h_vmem=${memory}k";
 
 my ($qsubinput, $qsuboutput, $qsuberror);
 
diff --git a/packages/jobutils/usr/local/bin/qcronsub 
b/packages/jobutils/usr/local/bin/qcronsub
new file mode 120000
index 0000000..bf2d4bf
--- /dev/null
+++ b/packages/jobutils/usr/local/bin/qcronsub
@@ -0,0 +1 @@
+jsub
\ No newline at end of file

-- 
To view, visit https://gerrit.wikimedia.org/r/64586
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I785f48e872b08962150484b7d6af358603e5feef
Gerrit-PatchSet: 2
Gerrit-Project: labs/toollabs
Gerrit-Branch: master
Gerrit-Owner: Merlijn van Deen <[email protected]>
Gerrit-Reviewer: coren <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to