arvados-cli 0.1.20150323181012 → 0.1.20150408134718
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/crunch-job +30 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e449c9c026214121443a9ad97d7cc09ae6f2c3e6
|
4
|
+
data.tar.gz: 90798faa1b238688f89c8a7b663ef01ee2e88eca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5647d10464a059f48e80497b8c8ccdc43aa4285f832407712cb6edf1d5133425750433764765aad1537018bff850b2ee01287726cf495f175ab6282d089caef6
|
7
|
+
data.tar.gz: 1c166d1f37f97014e3183f63e3a818c8400b37fd6b8ef2f1f4758e9e69eefa6825edb5159910797bc0ed73e84d0c52bd6b217a3e962a703d996231c3fe75c81b
|
data/bin/crunch-job
CHANGED
@@ -376,7 +376,7 @@ if (!defined $no_clear_tmp) {
|
|
376
376
|
|
377
377
|
# If this job requires a Docker image, install that.
|
378
378
|
my $docker_bin = "/usr/bin/docker.io";
|
379
|
-
my ($docker_locator, $docker_stream, $docker_hash);
|
379
|
+
my ($docker_locator, $docker_stream, $docker_hash, $docker_limitmem);
|
380
380
|
if ($docker_locator = $Job->{docker_image_locator}) {
|
381
381
|
($docker_stream, $docker_hash) = find_docker_image($docker_locator);
|
382
382
|
if (!$docker_hash)
|
@@ -408,6 +408,12 @@ fi
|
|
408
408
|
.exit_status_s($?));
|
409
409
|
}
|
410
410
|
|
411
|
+
# Determine whether this version of Docker supports memory+swap limits.
|
412
|
+
srun(["srun", "--nodelist=" . $node[0]],
|
413
|
+
["/bin/sh", "-ec", "$docker_bin run --help | grep -qe --memory-swap="],
|
414
|
+
{fork => 1});
|
415
|
+
$docker_limitmem = ($? == 0);
|
416
|
+
|
411
417
|
if ($Job->{arvados_sdk_version}) {
|
412
418
|
# The job also specifies an Arvados SDK version. Add the SDKs to the
|
413
419
|
# tar file for the build script to install.
|
@@ -653,6 +659,10 @@ update_progress_stats();
|
|
653
659
|
|
654
660
|
|
655
661
|
THISROUND:
|
662
|
+
my $tasks_this_level = 0;
|
663
|
+
foreach my $id (@jobstep_todo) {
|
664
|
+
$tasks_this_level++ if ($jobstep[$id]->{level} == $level);
|
665
|
+
}
|
656
666
|
for (my $todo_ptr = 0; $todo_ptr <= $#jobstep_todo; $todo_ptr ++)
|
657
667
|
{
|
658
668
|
my $id = $jobstep_todo[$todo_ptr];
|
@@ -710,6 +720,11 @@ for (my $todo_ptr = 0; $todo_ptr <= $#jobstep_todo; $todo_ptr ++)
|
|
710
720
|
|
711
721
|
$ENV{"GZIP"} = "-n";
|
712
722
|
|
723
|
+
my $max_node_concurrent_tasks = $ENV{CRUNCH_NODE_SLOTS};
|
724
|
+
if ($tasks_this_level < $max_node_concurrent_tasks) {
|
725
|
+
$max_node_concurrent_tasks = $tasks_this_level;
|
726
|
+
}
|
727
|
+
|
713
728
|
my @srunargs = (
|
714
729
|
"srun",
|
715
730
|
"--nodelist=".$childnode->{name},
|
@@ -720,14 +735,25 @@ for (my $todo_ptr = 0; $todo_ptr <= $#jobstep_todo; $todo_ptr ++)
|
|
720
735
|
"if [ -e $ENV{TASK_WORK} ]; then rm -rf $ENV{TASK_WORK}; fi; "
|
721
736
|
."mkdir -p $ENV{CRUNCH_TMP} $ENV{JOB_WORK} $ENV{TASK_WORK} $ENV{TASK_KEEPMOUNT} "
|
722
737
|
."&& cd $ENV{CRUNCH_TMP} "
|
723
|
-
|
724
|
-
.
|
738
|
+
# These environment variables get used explicitly later in
|
739
|
+
# $command. No tool is expected to read these values directly.
|
740
|
+
.q{&& MEM=$(awk '($1 == "MemTotal:"){print $2}' </proc/meminfo) }
|
741
|
+
.q{&& SWAP=$(awk '($1 == "SwapTotal:"){print $2}' </proc/meminfo) }
|
742
|
+
."&& MEMLIMIT=\$(( (\$MEM * 95) / ($max_node_concurrent_tasks * 100) )) "
|
743
|
+
."&& let SWAPLIMIT=\$MEMLIMIT+\$SWAP ";
|
725
744
|
$command .= "&& exec arv-mount --by-id --allow-other $ENV{TASK_KEEPMOUNT} --exec ";
|
726
745
|
if ($docker_hash)
|
727
746
|
{
|
728
747
|
my $cidfile = "$ENV{CRUNCH_TMP}/$Jobstep->{arvados_task}->{uuid}-$Jobstep->{failures}.cid";
|
729
748
|
$command .= "crunchstat -cgroup-root=/sys/fs/cgroup -cgroup-parent=docker -cgroup-cid=$cidfile -poll=10000 ";
|
730
|
-
$command .= "$docker_bin run --rm=true --attach=stdout --attach=stderr --attach=stdin -i --user=crunch --cidfile=$cidfile --sig-proxy
|
749
|
+
$command .= "$docker_bin run --rm=true --attach=stdout --attach=stderr --attach=stdin -i --user=crunch --cidfile=$cidfile --sig-proxy ";
|
750
|
+
# We only set memory limits if Docker lets us limit both memory and swap.
|
751
|
+
# Memory limits alone have been supported longer, but subprocesses tend
|
752
|
+
# to get SIGKILL if they exceed that without any swap limit set.
|
753
|
+
# See #5642 for additional background.
|
754
|
+
if ($docker_limitmem) {
|
755
|
+
$command .= "--memory=\${MEMLIMIT}k --memory-swap=\${SWAPLIMIT}k ";
|
756
|
+
}
|
731
757
|
|
732
758
|
# Dynamically configure the container to use the host system as its
|
733
759
|
# DNS server. Get the host's global addresses from the ip command,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arvados-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.20150408134718
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arvados Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: arvados
|
@@ -178,7 +178,7 @@ dependencies:
|
|
178
178
|
- - "<"
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: 1.0.0
|
181
|
-
description: Arvados command line tools, git commit
|
181
|
+
description: Arvados command line tools, git commit e009f03d9f3a620f375cf187291bd12c2bf1d74c
|
182
182
|
email: gem-dev@curoverse.com
|
183
183
|
executables:
|
184
184
|
- arv
|