From 219c3aa996193dacd8e38f7aa4e3d0d32b84f403 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Tue, 10 Mar 2020 09:33:27 -0400 Subject: [PATCH] Container request priority flag. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- arvados.go | 7 ++++++- exportnumpy.go | 2 ++ filter.go | 2 ++ import.go | 2 ++ pca.go | 2 ++ plot.go | 2 ++ vcf2fasta.go | 2 ++ 7 files changed, 18 insertions(+), 1 deletion(-) diff --git a/arvados.go b/arvados.go index 6550a643af..55d96bde01 100644 --- a/arvados.go +++ b/arvados.go @@ -28,6 +28,7 @@ type arvadosContainerRunner struct { Prog string // if empty, run /proc/self/exe Args []string Mounts map[string]map[string]interface{} + Priority int } func (runner *arvadosContainerRunner) Run() (string, error) { @@ -60,6 +61,10 @@ func (runner *arvadosContainerRunner) Run() (string, error) { } command := append([]string{prog}, runner.Args...) + priority := runner.Priority + if priority < 1 { + priority = 500 + } rc := arvados.RuntimeConstraints{ VCPUs: runner.VCPUs, RAM: runner.RAM, @@ -76,7 +81,7 @@ func (runner *arvadosContainerRunner) Run() (string, error) { "use_existing": true, "output_path": "/mnt/output", "runtime_constraints": rc, - "priority": 1, + "priority": runner.Priority, "state": arvados.ContainerRequestStateCommitted, }, }) diff --git a/exportnumpy.go b/exportnumpy.go index bab360aaeb..cad58b0ccb 100644 --- a/exportnumpy.go +++ b/exportnumpy.go @@ -30,6 +30,7 @@ func (cmd *exportNumpy) RunCommand(prog string, args []string, stdin io.Reader, pprof := flags.String("pprof", "", "serve Go profile data at http://`[addr]:port`") runlocal := flags.Bool("local", false, "run on local host (default: run in an arvados container)") projectUUID := flags.String("project", "", "project `UUID` for output data") + priority := flags.Int("priority", 500, "container request priority") inputFilename := flags.String("i", "-", "input `file`") outputFilename := flags.String("o", "-", "output `file`") err = flags.Parse(args) @@ -57,6 +58,7 @@ func (cmd *exportNumpy) RunCommand(prog string, args []string, stdin io.Reader, ProjectUUID: *projectUUID, RAM: 64000000000, VCPUs: 2, + Priority: *priority, } err = runner.TranslatePaths(inputFilename) if err != nil { diff --git a/filter.go b/filter.go index d5aa0d1bfb..4560a281a5 100644 --- a/filter.go +++ b/filter.go @@ -32,6 +32,7 @@ func (cmd *filterer) RunCommand(prog string, args []string, stdin io.Reader, std pprof := flags.String("pprof", "", "serve Go profile data at http://`[addr]:port`") runlocal := flags.Bool("local", false, "run on local host (default: run in an arvados container)") projectUUID := flags.String("project", "", "project `UUID` for output data") + priority := flags.Int("priority", 500, "container request priority") inputFilename := flags.String("i", "-", "input `file`") outputFilename := flags.String("o", "-", "output `file`") maxvariants := flags.Int("max-variants", -1, "drop tiles with more than `N` variants") @@ -63,6 +64,7 @@ func (cmd *filterer) RunCommand(prog string, args []string, stdin io.Reader, std ProjectUUID: *projectUUID, RAM: 64000000000, VCPUs: 2, + Priority: *priority, } err = runner.TranslatePaths(inputFilename) if err != nil { diff --git a/import.go b/import.go index 433ed65bcc..e6b86afd81 100644 --- a/import.go +++ b/import.go @@ -48,6 +48,7 @@ func (cmd *importer) RunCommand(prog string, args []string, stdin io.Reader, std flags.StringVar(&cmd.outputFile, "o", "-", "output `file`") flags.StringVar(&cmd.projectUUID, "project", "", "project `UUID` for output data") flags.BoolVar(&cmd.runLocal, "local", false, "run on local host (default: run in an arvados container)") + priority := flags.Int("priority", 500, "container request priority") pprof := flags.String("pprof", "", "serve Go profile data at http://`[addr]:port`") err = flags.Parse(args) if err == flag.ErrHelp { @@ -76,6 +77,7 @@ func (cmd *importer) RunCommand(prog string, args []string, stdin io.Reader, std ProjectUUID: cmd.projectUUID, RAM: 30000000000, VCPUs: 16, + Priority: *priority, } err = runner.TranslatePaths(&cmd.tagLibraryFile, &cmd.refFile, &cmd.outputFile) if err != nil { diff --git a/pca.go b/pca.go index 68dfff11b1..34655d9753 100644 --- a/pca.go +++ b/pca.go @@ -22,6 +22,7 @@ func (cmd *pythonPCA) RunCommand(prog string, args []string, stdin io.Reader, st flags.SetOutput(stderr) projectUUID := flags.String("project", "", "project `UUID` for output data") inputFilename := flags.String("i", "-", "input `file`") + priority := flags.Int("priority", 500, "container request priority") err = flags.Parse(args) if err == flag.ErrHelp { err = nil @@ -36,6 +37,7 @@ func (cmd *pythonPCA) RunCommand(prog string, args []string, stdin io.Reader, st ProjectUUID: *projectUUID, RAM: 120000000000, VCPUs: 1, + Priority: *priority, } err = runner.TranslatePaths(inputFilename) if err != nil { diff --git a/plot.go b/plot.go index 9723c91c88..4941f6fe8b 100644 --- a/plot.go +++ b/plot.go @@ -24,6 +24,7 @@ func (cmd *pythonPlot) RunCommand(prog string, args []string, stdin io.Reader, s inputFilename := flags.String("i", "-", "input `file`") sampleCSVFilename := flags.String("labels-csv", "", "use first two columns of `labels.csv` as id->color mapping") sampleFastaDirname := flags.String("sample-fasta-dir", "", "`directory` containing fasta input files") + priority := flags.Int("priority", 500, "container request priority") err = flags.Parse(args) if err == flag.ErrHelp { err = nil @@ -38,6 +39,7 @@ func (cmd *pythonPlot) RunCommand(prog string, args []string, stdin io.Reader, s ProjectUUID: *projectUUID, RAM: 1 << 30, VCPUs: 1, + Priority: *priority, Mounts: map[string]map[string]interface{}{ "/plot.py": map[string]interface{}{ "kind": "text", diff --git a/vcf2fasta.go b/vcf2fasta.go index 9f6f085cd8..bc44424543 100644 --- a/vcf2fasta.go +++ b/vcf2fasta.go @@ -47,6 +47,7 @@ func (cmd *vcf2fasta) RunCommand(prog string, args []string, stdin io.Reader, st flags.StringVar(&cmd.outputDir, "output-dir", "", "output directory") flags.IntVar(&cmd.vcpus, "vcpus", 0, "number of VCPUs to request for arvados container (default: 2*number of input files, max 32)") flags.BoolVar(&cmd.runLocal, "local", false, "run on local host (default: run in an arvados container)") + priority := flags.Int("priority", 500, "container request priority") pprof := flags.String("pprof", "", "serve Go profile data at http://`[addr]:port`") err = flags.Parse(args) if err == flag.ErrHelp { @@ -89,6 +90,7 @@ func (cmd *vcf2fasta) RunCommand(prog string, args []string, stdin io.Reader, st ProjectUUID: cmd.projectUUID, RAM: 2<<30 + int64(cmd.vcpus)<<28, VCPUs: cmd.vcpus, + Priority: *priority, } err = runner.TranslatePaths(&cmd.refFile) if err != nil { -- 2.30.2