Container request priority flag.
authorTom Clegg <tom@tomclegg.ca>
Tue, 10 Mar 2020 13:33:27 +0000 (09:33 -0400)
committerTom Clegg <tom@tomclegg.ca>
Tue, 10 Mar 2020 13:33:27 +0000 (09:33 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@tomclegg.ca>

arvados.go
exportnumpy.go
filter.go
import.go
pca.go
plot.go
vcf2fasta.go

index 6550a643af2b4a9d5b50beedb6aa1f4cc4d637ee..55d96bde0109500e43efc95f46c0af096912d55a 100644 (file)
@@ -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,
                },
        })
index bab360aaebb489613e91601974d16b44d200385d..cad58b0ccbbc8fe9183421523fb14e4a3547610c 100644 (file)
@@ -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 {
index d5aa0d1bfb6ac16601a47a289f57e8959863a87a..4560a281a5d43fe0380d784d63bfa1e62f59546d 100644 (file)
--- 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 {
index 433ed65bcc5793127ca5a5fa5a3e54fe1562805d..e6b86afd81ca22038c025c669e39a6fd3a0c3b88 100644 (file)
--- 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 68dfff11b1c03fdf3b089fd61c16551faeac315e..34655d975384bf1a170b6a4bc6c6aca1fc977af0 100644 (file)
--- 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 9723c91c88625ec99830f135aafea8ffdaae12a0..4941f6fe8b6d9e1bf7ac0db795af7da766de6804 100644 (file)
--- 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",
index 9f6f085cd854bed1ddd4e6db14a03918b31eff4f..bc44424543645bb0194f4e58dc82474d46851d84 100644 (file)
@@ -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 {