Information
Unsupported content This version of the documentation is no longer supported. However, the documentation is available for your convenience. You will not be able to leave comments.

Scheduling a PSL process


The following figure shows the flow for scheduling a PSL process.

Scheduling a PSL process

Scheduling a PSL process.gif

When a PSL process is scheduled from the main run-queue and executed, it is placed on the PSL run-queue. The agent runs multiple PSL processes through its interpreter, one at a time.

The run-queue scheduler is responsible for moving the processes from the RUNQ (the waiting list) on the rtlist that is the list of running processes. Each executing PSL process is allotted a time slice with a xed set of low-level compiled instructions (quads).

The PSL interpreter runs the PSL process until its timeslice expires, or it is blocked e.g., system(), execute(), popen() and some forms of read() and write(). Built-in variable /pslTimeslice can be set to control the number of quad instructions per timeslice.

When a PSL process is blocked it will not appear on either the main run-queue or the PSL run-queue. PSL processes that are blocked on functions such as locking or shared channels, will not stop the agent from executing other PSL processes.

In PATROL you can see these processes by executing %DUMP RUNQ and %DUMP RTLIST from the system output window.

If the process that is about to be scheduled is a PSL process, it will be passed on the PSL process scheduler. This includes compiling the PSL process if wasn't compiled before.

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*

BMC PATROL Agent 9.5