Tag: ARRAY

Throttling execution of array job tasks

Posted by – December 2, 2009

I’ve long found that SGE users are perfectly willing to do the right thing when it comes to sharing a computing infrastructure among multiple competing workgroups. What has often been lacking have been SGE features accessible to non-admin users that empower users to have more control over how their jobs run and are prioritized.

A very common example of this is a situation where a user will say:

“I need to submit 100,000 jobs but I don’t want to totally take over the cluster and upset my coworkers – can I limit how many of my jobs run at any given time so that resources are left free for others?”

As a Grid Engine consultant, training and administrator I’ve personally felt that working with people wanting to be “good citizens” has sometimes been a challenge. Most of the common SGE methods for limiting or controlling job execution and policies are available only to users with SGE Administrator privileges. As nice as it is to handle one-off cluster resource allocation situations these sorts of requests can consume lots of admin time and can occasionally cause problems if people make SGE quota or scheduler changes without tight coordination and planning.

Well, it was undocumented in the initial release but ever since SGE version 6.2u4 people have had the ability to limit concurrent execution of tasks within array jobs that they submit. The syntax looks like:

$ qsub -t 1-20 -tc 5 test.sh
… where the “-tc” argument is new. The example above shows a 20-task array job being submitted with a request to run no more than 5 at any one time.

This feature is now documented as of SGE 6.2u5:


-tc max_running_tasks


allow users to limit concurrent array job task execution.

Parameter max_running_tasks specifies maximum number of simultaneously

running tasks. For example we have running SGE with 10 free slots. We

call qsub -t 1-100 -tc 2 jobscript. Then only 2 tasks will be

scheduled to run even when 8 slots are free.

This is a very welcome new feature addition to Grid Engine, I suspect it will be popular and well received by the user community.

Preview release: powerful new array task interdependency features

Posted by – September 11, 2007

Today the Grid Engine team announced the availability of new developer preview snapshot binaries showcasing major new functionality.

Full announcement: “Rising Sun Pictures Adds Array Job Interdependencies to GE

This is a success on many levels – a major feature gain for Grid Engine that comes from users of the open source Grid Engine product. The architects and drivers of this new functionality all work for Rising Sun Pictures, a visual effects house based in Australia.

Simply put, Rising Sun’s rendering workflow involves serious use of Array Jobs and the complexity of their effects work required a more powerful implementation of how job dependencies are handled. What RSP has done is bring job dependency behavior down to the level of individual sub-tasks within Array jobs.

The best explanation of the requirements and the implementation can be found here (a very interesting read): http://open.rsp.com.au/?page_id=11.

Extending job dependency scheduling to array job sub-tasks

Posted by – August 1, 2007

More Rising Sun news …

Rising Sun Pictures, an Australian visual effects house (previous mention) has released a specification document entitled “Grid Engine Array Task Dependency Specification

The spec is well written and backwards compatibility is assured. The use cases come from digital film and frame rendering. The main goal is to extend the ability of the SGE scheduler to handle array job tasks that themselves may be dependent on the successful completion of other array jobs or even sub-tasks of other jobs.

The full specification is here and well worth a read:

http://open.rsp.com.au/?page_id=11