"git.curoverse.com/arvados.git/sdk/go/arvadosclient"
"io/ioutil"
"log"
+ "math"
"os"
"os/exec"
"os/signal"
// Container data
type Container struct {
- UUID string `json:"uuid"`
- State string `json:"state"`
- Priority int `json:"priority"`
- RuntimeConstraints map[string]int `json:"runtime_constraints"`
+ UUID string `json:"uuid"`
+ State string `json:"state"`
+ Priority int `json:"priority"`
+ RuntimeConstraints map[string]int64 `json:"runtime_constraints"`
}
// ContainerList is a list of the containers from api
// sbatchCmd
func sbatchFunc(container Container) *exec.Cmd {
+ memPerCPU := math.Ceil(float64(container.RuntimeConstraints["ram"]) / float64(container.RuntimeConstraints["vcpus"]*1048576))
return exec.Command("sbatch", "--share", "--parsable",
"--job-name="+container.UUID,
- "--mem="+strconv.Itoa(container.RuntimeConstraints["ram"]),
- "--cpus-per-task="+strconv.Itoa(container.RuntimeConstraints["vcpus"]))
+ "--mem-per-cpu="+strconv.Itoa(int(memPerCPU)),
+ "--cpus-per-task="+strconv.Itoa(int(container.RuntimeConstraints["vcpus"])))
}
var sbatchCmd = sbatchFunc