-
-
Notifications
You must be signed in to change notification settings - Fork 22
Wall time #4
Comments
In my experience, this, unfortunately, is very implementation-specific. In short, wallclock runtime is almost always required (and very important to the scheduling algorithm as you correctly note), but DRMAAv1 doesn't have a truly universal way to request it. This is usually true for memory as well. Each DRMAA-compliant scheduler likely has a different way to request it, although always through the "template.nativeSpecification" option. After I initialize the distributed client with the DRMAACluster, if I use this parameter to request memory and wallclock time, it does the right thing, for Grid Engine values of "the right thing":
Then a qstat shows the correct number of jobs running, each requesting 1 hour of time and 1G of memory. The resource names (h_rt and h_vmem) above can vary from site to site, and can even be configured though multiple resources (in my case, we use "estmem" and "h_vmem" both to request memory for irritating, but required reasons.) |
Out of curiousity what happens when you schedule something without providing a wall time? Does SGE impose a default limit? Are you scheduled with "infinity" time? |
All the GE-derivatives I know of either a) refuse to schedule the job, and/or b) impose a default limit. My primary scheduler, for instance refuses to schedule the job:
If I add it, it schedules fine:
Incidentally, should start_workers() be returning job ids? From the README I gather it should, but I've spent absolutely no time verifying I haven't done something stupid. If the answer is obvious, ignore me. :) |
That said, I think you're allowed to set a default wallclock time of "0:0:0", which I think would be infinite, but it's still an explicitly set default time, if that phrase makes any sense at all. |
Think it should be possible to address this more generally as noted in issue ( #66 ). We can check the scheduler implementation through DRMAA and thus figure out what flags are appropriate to pass to |
My understanding is that job schedulers tend to schedule jobs based on their advertised wall times. Allocations of small short-running jobs can squeeze in to the cluster sooner than many long-running jobs.
Dask workers can be fairly flexible here. We can add and remove many single-node jobs frequently, handing data off from about-to-expire workers to workers with a long time to live. It's unclear to me how much value there is here or if this is something we should focus on.
The default setting for drmaa-python seems to be to totally ignore walltime settings. Is this common? Perhaps DRMAA-style clusters are often underutilized so this is not a big issue?
The text was updated successfully, but these errors were encountered: