Network Checks

Reports information about blocking and non-blocking network I/O checks, the total number of I/O checks for the interval, and the average number of network I/Os per network check.

Adaptive Server has two ways to check for network I/O: blocking and non-blocking modes.

Network Checks
Non-Blocking                 166371.5        4098.3    99822899      99.8 %
Blocking                        279.0           6.9      167388       0.2 %
-------------------------   ---------      --------   ---------
Total Network I/O Checks     166650.5        4105.2    99990287 
Avg Net I/Os per Check             n/a           n/a      0.00476        n/a

Non-Blocking

Number of times Adaptive Server performed non-blocking network checks. With non-blocking network I/O checks, an engine checks the network for I/O and continues processing, whether or not it found I/O waiting (this is how an engine typically checks for network I/O.)


Blocking

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).


Total Network I/O Checks

Number of times an engine polls for incoming and outgoing packets. This category is helpful when you use it with “CPU Yields by Engine.”

When an engine is idle, it loops while checking for network packets. If “Network Checks” is low and “CPU Yields by Engine” is high, the engine could be yielding too often and not checking the network frequently enough. If the system can afford the overhead, it might be acceptable to yield less often.

An engine loops the number of times you have defined with runnable process search count times before yielding (unless the engine has at least one pending disk I/O). Consequently, an engine that yields too often may indicate that performance is suffering because runnable process search count is set too low.


Average Network I/Os per Check

Average number of network I/Os (sends and receives) per check for all Adaptive Server engine checks that took place during the sample interval.

The sp_configure parameter i/o polling process count specifies the maximum number of processes that Adaptive Server runs before the scheduler checks for disk and network I/O completions. Tuning i/o polling process count affects both the response time and throughput of Adaptive Server.

For more information about configuration parameters, see Chapter 5, “Setting Configuration Parameters,” in the System Administration Guide, Volume 1.

If Adaptive Server engines check frequently, but retrieve network I/O infrequently, you can try reducing the frequency for network I/O checking.