[Beowulf] scheduler policy design
Chris Dagdigian
dag at sonsorol.org
Wed Apr 25 08:15:49 PDT 2007
All of the very large sites that I've been at (SGE users for the most
part) who really need reservation and backfill capabilities had all
pretty much invested effort in writing local job submission wrappers
and front ends that programatically wrote the job scripts and handled
job submission. Since the front end system was writing the job
script and handling the "qsub" arguments it was easy to make all of
the specific resource reservation and attribute requests that were
necessary.
Mind you, they did not invest all this effort into wrapping SGE just
to "hide complexity" from the users or even just to get backfill
working efficiently. By rigidly controlling the syntax of the job
submission commands they were able to squeeze a lot of value out of
their workflows -- simple things like having a consistent and 100%
uniform job naming scheme made processing the accounting logs,
debugging and troubleshooting far more efficient.
The only site doing what I mentioned above that I know I can talk
about is described a but more fully here:
http://gridengine.info/pages/profile-DNA-Productions
For sites where wrapping applications and workflows is out of the
question here are some Grid Engine (SGE) specific bits that would be
involved in a system where users were expected to request IO, memory
or runtime resources ...
Option A
-----------
Create and define a user-requestable, consumable resource that is
appropriate to what you want to meter or make scheduling decisions on
Then associate that resource to a specific queue or the global
execution host context
Then, edit the SGE complex to make your custom attribute be of type
"FORCED"
The "FORCED" type is the key in this scheme. Users who do not request
this resource are not allowed to run a job either globally, per-host
or per-queue (depends where you stick the attribute value). So if
your users do not characterize their IO needs or runtime needs or
whatever under this scheme they will either not be allowed to submit
a job at all or (in much more common cases) they will only be allowed
to submit to some default queue and won't be allowed access to the
higher priority queues that may be offering reservation and backfill.
Option B
-----------
Create the same user requestable resource as mentioned above
Then, create a default value for that resource that is very "high" or
"expensive"
The idea here in option B is that you have a metered value and you
are applying a really "expensive" default value that applies to any
user or job who does not bother to actually request the specific
resource via the job script or the command line. The end result is
that users who do not characterize their needs end up getting
penalized in the backfill/reservation/whatever scheduling scheme
because they get socked with the high default value. They can
override the default value by making the appropriately sized request
at job submission time.
Implementing this stuff tends to be site specific or workflow
specific. There is no easy one size fits all solution. Depends on
your apps, your execution host OS and your scheduling system (and may
other factors).
People have all sorts of pie in the sky impressions as to how this
stuff "should" work but their ideas tend to smash against the hard
reality that very few applications can currently be seamlessly
checkpointed, suspended, restarted and migrated without error. If
you can't easily freeze an application and transparently move it to
another node then all the fancy academic ideas about advanced
reservation, backfill etc. all get real inefficient real fast in
production computing environments.
My $.02 of course!
Regards,
Chris
On Apr 25, 2007, at 3:42 AM, Toon Knapen wrote:
>
>
> Interesting. However this approach requires that the IO profile of
> the application is known. Additionally it requires the users of the
> application (which are generally not IT guys) to know and
> understand this info and pass it on to the scheduler when they
> launch their app.
> In your experience, do you manage to convince real-life users to
> provide this info?
More information about the Beowulf
mailing list