GF.Queuing: Difference between revisions

From OIAr
Jump to navigation Jump to search
No edit summary
(promoted to maturity 2 + small layout improvement)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Maturity|0}}
{{Maturity|2}}
{{Pageheaderbox4GF
{{Pageheaderbox4GF
|name=Queuing
|name=Queuing
|WorkingArea=Network
|WorkingArea=Network
|version=0.3
|version=0.4
|owner=Mischa Frenk
|owner=Mischa Frenk
|summary=Provides the ability to process traffic based various queuing policies.
|summary=Provides the ability to process traffic based various queuing policies.
}}
}}
Function to optimise traffic or resource usage based on various queuing policies. Examples of queuing policies can be:
This Function serves to optimise processing of traffic or resource usage, based on one or more queuing policies. A queuing policy formulates a decision on which job to perform next, where "job" can mean an action, processing task, data packet transfer et cetera. Queuing policies generally can occur in two different forms:
* non-pre-emptive: in this form a job being processed cannot be interrupted; the queuing function simply decides on the next job in line;
* First in first out<br>This policy states that data elements are processed one at a time and that the data elements that has been waiting the longest is served first.  
* pre-emptive: in this form an active job can be interrupted as soon as another non-active job takes precedence according to the queuing policy. The active job is deactivated (usually without losing the results of the processing thusfar), and the higher precedence job starts processing.
* Last in first out<br>This policy also serves data elements one at a time, however the data element with the shortest waiting time will be served first.  
To be able to prioritize jobs, Queuing must be paired with Caching, which then serves as the buffer for jobs that cannot be processed yet.
* Resource sharing<br>Service capacity is shared equally.
 
* Priority<br>Data elements with an assigned priority that is higher than that of another data element is served first. Priority queues can be of two types, non-pre-emptive (where a job in service cannot be interrupted) and pre-emptive (where a job in service can be interrupted by a higher priority job). No work is lost in either model.  
Examples of queuing policies are:
* Shortest job first<br>The next job to be served is the one with the smallest size
* First in first out:<br>This policy states that the job that has been waiting the longest is served first.
* Pre-emptive shortest job first<br>The next job to be served is the one with the original smallest size
* Last in first out:<br>This policy states that the job that was added most recently will be served first.
* Shortest remaining processing time<br>The next job to serve is the one with the smallest remaining processing requirement.
* Resource sharing:<br>Service capacity is shared equally over multiple jobs.
* Priority:<br>A job with an assigned priority that is higher than that of another job is served first. This ofcourse means a priority criterium must be available, e.g. based on metadata.
* Shortest job first:<br>The next job to be served is the one with the smallest size or shortest expected duration.
* Pre-emptive shortest job first:
The next job to be served is the one with the smallest size or shortest expected duration; if a new job comes in with smaller size or expected duration than the remaining size/duration of the currently running job, the running job is interrupted.
{{FunctionIcon
{{FunctionIcon
|image=Icon
|image=Icon GF Queuing.png
}}
}}
{{Text Footer GF}}
{{Text Footer GF}}

Latest revision as of 07:28, 6 January 2015


This is a Generic Function document GF Queuing Version: 0.4 OIAr logo
Document type: Generic Function Owner:

Mischa Frenk



Description

This Generic Function belongs to Working Area Network. This Function serves to optimise processing of traffic or resource usage, based on one or more queuing policies. A queuing policy formulates a decision on which job to perform next, where "job" can mean an action, processing task, data packet transfer et cetera. Queuing policies generally can occur in two different forms:

  • non-pre-emptive: in this form a job being processed cannot be interrupted; the queuing function simply decides on the next job in line;
  • pre-emptive: in this form an active job can be interrupted as soon as another non-active job takes precedence according to the queuing policy. The active job is deactivated (usually without losing the results of the processing thusfar), and the higher precedence job starts processing.

To be able to prioritize jobs, Queuing must be paired with Caching, which then serves as the buffer for jobs that cannot be processed yet.

Examples of queuing policies are:

  • First in first out:
    This policy states that the job that has been waiting the longest is served first.
  • Last in first out:
    This policy states that the job that was added most recently will be served first.
  • Resource sharing:
    Service capacity is shared equally over multiple jobs.
  • Priority:
    A job with an assigned priority that is higher than that of another job is served first. This ofcourse means a priority criterium must be available, e.g. based on metadata.
  • Shortest job first:
    The next job to be served is the one with the smallest size or shortest expected duration.
  • Pre-emptive shortest job first:

The next job to be served is the one with the smallest size or shortest expected duration; if a new job comes in with smaller size or expected duration than the remaining size/duration of the currently running job, the running job is interrupted.

Icon

The image "Icon GF Queuing.png" (shown below) can be used to represent this infrastructure function in graphical Pattern representations that it might be part of:

Icon for this function
Icon for this function

Generic Patterns using this Generic Function

The following Generic Patterns use this function:

Semantic query
Semantic query
Applied PatternOwnerMaturity
Access DistributionJ.A.H. Schoonderbeek3

Applied versions of this Generic Function

The following variants of this function have been defined:

Semantic query
Semantic query

No Applied Pattern based on this Generic Pattern (yet)