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