Configuring a pre-emptive high-priority queue
The pre-emptive high-priority queue feature allows a task in an executing high-priority Unit of Work (UOW) to pre-empt an executing task that holds the device lock on the same device.
Behavior
The pre-emptive task interrupts the executing task being pre-empted and requests that it discontinue its operations and release the device lock. Once released, the pre-emptive task acquires the device lock and executes its operations. A pre-emptive task cannot itself be pre-empted.
A task in a UOW will pre-empt
another task if and only if all of the following are true:
- The pre-emptive task's UOW priority is set to High.
- Both the pre-emptive task and the task to be pre-empted are modifying the same device.
- Both the pre-emptive task and the task to be pre-empted execute on the same Worker server.
- The task to be pre-empted is in an Executing work state.
- The task to be pre-empted is executing either an Import or a Synchronize Device to ITNCM operation.
- The high-priority queue feature is configured.
- The pre-emptive high-priority feature is configured, as described below.
Note: The task to be pre-empted's device driver must support
pre-emption in order for this feature to function correctly. If the
underlying driver does not support pre-emption, the pre-empted task,
although interrupted, will not discontinue its operations and release
the device lock in the manner described above, causing the interrupting
pre-emptive task to fail.
Configuration
The pre-emptive high-priority queue feature is configured on a per Worker server basis via a
number of properties in the following file:
<NCM_Install_Directory>/config/properties/rseries.properties
Example
| Property name | Default value | Details |
|---|---|---|
WorkerAdminManager/preEmptiveHighPriorityQueueActive |
false | This property enables (true) or disables (false) the pre-emptive high-priority queue feature on the Worker server. |
WorkerAdminManager/preEmptiveHighPriorityQueueTimeout |
600000 | The maximum time in milliseconds (ms) that a pre-emptive task will wait to acquire a lock form a pre-empted task after it has been interrupted. If the pre-emptive task does not acquire it within this time, it will fail. The default value is ten minutes. |
WorkerAdminManager/preEmptiveHighPriorityQueueDeviceSleep |
60000 | The time in milliseconds (ms) that a pre-emptive task will sleep following acquisition of the device lock from the pre-empted task in order to allow the device to reset. The default value is one minute. |
WorkerAdminManager/preEmptiveHighPriorityQueueDeviceVendor1WorkerAdminManager/preEmptiveHighPriorityQueueDeviceType1 |
AlcatelPON | This property pair defines a Vendor/Type class of devices whose drivers support pre-emption. Additional Vendor/Type device classes whose drivers support pre-emption can be inserted as a new property pair of the same name with an incremented index, as in the code example below this table: |
WorkerAdminManager/preEmptiveHighPriorityQueueDeviceVendor2=SomeVendor
WorkerAdminManager/preEmptiveHighPriorityQueueDeviceType2=SomeTypeNote: After
modifying rseries.properties, the Worker server needs to be restarted for the
changes to take effect.