Blocking

“Blocking” reports the number of times Adaptive Server performed blocking network checks. This is how an engine yields CPU to the operating system, and should be equal to the number of yields (it may differ because of timing issues).

After an engine completes all runnable tasks in the queue, the engine loops for a short time, polling the network and checking for the next client request. If after a certain number of loops (determined by the sp_configure parameter, runnable process search count) the engine finds no runnable tasks, and there is no pending asynchronous disk I/O, the engine performs a blocking network I/O poll, yielding its CPU to the operating system. At this point, the engine is said to be sleeping.

A sleeping engine wakes up once per clock tick to perform routine housekeeping tasks and check for runnable tasks. If there are no runnable tasks, the engine performs another blocking network check and goes back to sleep.

Adaptive Server may wake a sleeping engine before the next clock tick if a different engine completes some network I/O. Once awake, the engine performs post-processing I/O work, typically resulting in a task becoming runnable (this task is unlikely to yield again until the I/O work has been processed).