@@ -25,11 +25,44 @@ policy (table)
2525 A policy table as described in :man5: `flux-config-policy ` that overrides
2626 the general system policy for jobs submitted to this queue.
2727
28+ parent (string)
29+ Declares this queue to be a virtual queue, as described in RFC 33. The
30+ value names another queue in the ``[queues] `` table from which this
31+ queue inherits its resource subset and policy. A virtual queue MUST
32+ NOT set ``requires `` or ``policy.scheduler ``: it always shares its
33+ parent's resources, and thus its parent's scheduler configuration.
34+ The named parent must not itself be a virtual queue. A virtual queue
35+ may be configured as the default queue.
36+
2837A default queue name may be configured by setting
2938``policy.jobspec.defaults.system.queue `` as described in
3039:man5: `flux-config-policy `.
3140
3241
42+ VIRTUAL QUEUES
43+ ==============
44+
45+ A virtual queue is an alternate name under which jobs may be submitted to
46+ a parent queue's resources, with different policy applied at job
47+ ingest. A job submitted to a virtual queue keeps the virtual queue's name
48+ for listing, accounting, and per-queue policy purposes, but is scheduled
49+ as part of its parent queue: it competes for the parent's resources in the
50+ same priority order as jobs submitted directly to the parent.
51+
52+ A virtual queue inherits every policy key from its parent, and any key it
53+ sets itself overrides only that key. For example, a virtual queue that
54+ sets ``policy.limits.duration `` but not ``policy.limits.job-size `` still
55+ inherits the parent's job-size limits. Job defaults
56+ (``policy.jobspec.defaults.system ``) are inherited the same way.
57+
58+ A virtual queue may be enabled/disabled and started/stopped
59+ independently of its parent. However, because a virtual queue's jobs are
60+ scheduled as part of its parent, they are only eligible for scheduling
61+ when both the virtual queue and its parent are started. Starting a
62+ virtual queue whose parent is stopped does not release its jobs; they
63+ become eligible only once the parent is also started.
64+
65+
3366EXAMPLE
3467=======
3568
@@ -51,8 +84,13 @@ EXAMPLE
5184
5285 [queues.batch]
5386 policy.limits.duration = "8h"
87+ policy.limits.job-size.max.nnodes = 16
5488 requires = [ "batch" ]
5589
90+ [queues.expedite]
91+ parent = "batch"
92+ policy.limits.duration = "1h"
93+
5694 [policy.jobspec.defaults.system]
5795 queue = "batch"
5896
@@ -63,6 +101,11 @@ EXAMPLE
63101 match-policy = "lonodex"
64102 match-format = "rv1_nosched"
65103
104+ In this configuration, ``expedite `` is a virtual queue of ``batch ``: jobs
105+ submitted with ``--queue=expedite `` run on ``batch ``'s resources, subject
106+ to a shorter 1 hour duration limit, but still inherit ``batch ``'s
107+ 16 node job-size limit since ``expedite `` does not override it.
108+
66109
67110CAVEATS
68111=======
0 commit comments