pragma
(pragmatic information) A standardised form of comment which has
meaning to a compiler. It may use a special syntax or a specific form
within the normal comment syntax. A pragma usually conveys
non-essential information, often intended to help the compiler to
optimise the program.
gang scheduling
gang scheduling refers to giving more than one processor to an
application at once, and making sure that the processes of the
application run on the group of processors at approximately the same
time. Gang scheduling may be preemptive or non-preemptive.
or ...
Gang scheduling is a special scheduling technique that
coordinates the scheduling of related processes running on
separate processors. Gang scheduling is typically used only in
the compute partition, or is not used at all (this is determined
by your system administrator). In a partition that uses gang
scheduling, the nodes are scheduled so that all the processes in
an application are active at the same time. If there are
multiple processes per node in the active application, standard
scheduling is used to schedule these processes against each other
while the application is active.
Partitions that use gang scheduling may contain subpartitions,
and may overlap other partitions of any type.
In a partition that uses gang scheduling, not only does each
process have a priority, but there is a separate priority for the
application as a whole. An application's priority is a number
from 0 (low priority) to 10 (high priority). A gang-scheduled
partition also has a priority of its own, as well as two other
quantities called the effective priority limit and the rollin
quantum:
# A partition's priority is the lower of the
following:
@ The priority of the highest-priority
application or subpartition in the partition.
@ The partition's effective priority limit.
A partition's effective priority limit is a number
from 0 to 10 that places an upper limit on the
partition's priority. It does not affect the
priorities of applications or partitions within the
partition.
A partition's rollin quantum is the amount of time
each application in the partition is allowed to be
active before the system considers running another
application instead. The term "rollin quantum"
comes from the application being "rolled in" when
it is made active, and "rolled out" when it is made
inactive.
A gang-scheduled partition's effective priority
limit and rollin quantum are set when the partition
is created, and do not vary unless you change them
with the chpart command. A gang-scheduled
partition's priority may vary over time, depending
on the priorities of the applications and
subpartitions in the partition.
A partition that uses standard scheduling does not
have an effective priority limit or rollin quantum.
It also does not have a numeric priority; instead,
its priority is "infinite" (that is, higher than
the priority of any gang-scheduled partition or
application).
Gang scheduling is performed recursively, partition
by partition. For each gang-scheduled partition in
the system, starting with the root partition, the
operating system examines all the entities
(applications and partitions) within the partition:
@ 1. Entities that do not overlap other entities
(that is, they have no nodes in common with
any other entity in the partition) are simply
scheduled to run for the partition's rollin
quantum.
@ 2. Where two or more entities overlap, the
priorities of the overlapping entities are
compared, and the highest-priority entity is
scheduled to run for the partition's rollin
quantum.
@ 3. If two or more entities overlap and are
tied for highest priority, they are scheduled
in a round-robin fashion (each takes turns
running for one full rollin quantum).
@ 4. If an entity that is scheduled to run is a
partition, the operating system examines and
schedules the entities in the partition as
described above. This process continues
recursively as necessary.
At the end of each partition's rollin quantum, the
operating system examines and schedules the
entities in the partition again.
Note that rules 2 and 3 mean that, when
applications or partitions overlap, the one with
the highest priority gets one rollin quantum after
another until it completes. Entities with lower
priorities get no processor time at all until the
higher-priority entity has completed. If there is a
tie for highest priority, the tied high-priority
entities take turns running, but entities with
lower priority get no processor time until all the
high-priority entities complete. Partitions that
use standard scheduling always have the highest
priority, so if a standard-scheduled partition
overlaps a gang-scheduled partition or an
application, the standard-scheduled partition
always wins.