This is done using a script file plug-in written in Perl. The qb.conf setting for this is as follows:
supervisor_queue_binding = Perl
supervisor_queue_library = plugin_path
This document isn't meant to be a tutorial on the Perl scripting language so we will assume developers modifying this module in the following documentation already have a functional knowledge of Perl's syntax. Good online resources for learning Perl can be found at {+}http://www.perl.com+ there also many good published books such as Learning Perl published by O'Reilly which can get a beginning developer started with Perl scripting.
To create a new queuing algorithm, the developer must create a Perl module with the following Perl functions:
- qb_init()
- qb_starthost_init()
- qb_jobcmp($joba, $jobb, $host)
- qb_starthost_deinit()
- qb_startjob_init()
- qb_hostcmp($hosta, $hostb, $job)
- qb_startjob_deinit()
- qb_rejectjob($job, $host)
- qb_preemptjob_init()
- qb_preemptcmp($runningjob, $candidatejob, $host)
- qb_preemptjob_deinit()
A function if not defined will automatically be overridden with the "Priority Queuing Algorithm" defaults.
Example scripts can be found the following locations:
- Linux: /usr/local/pfx/qube/examples/supervisor
- Windows: C:\Program Files\pfx\qube\examples\supervisor
- OS X: /Applications/pfx/qube/examples/supervisor
The functions defined are all used to control the queuing algorithm's properties.