In a system with multiple CPUs, multiple processes can run concurrently. For the sake of illustration, say you have a four-CPU host, on which Adaptive Server is configured for eight engines (that is, the value max online engines is 8. Normally, this configuration provides suboptimal performance.
Figure 3-5 represents Adaptive Server engines as the nonshaded ovals waiting in the operating system run queue for processing time on one of four CPUs. It shows two Adaptive Server engines, proc 3 and proc 8, being processed simultaneously.
Figure 3-5: Processes queued in the OS run queue for multiple CPUs
The symmetric aspect of SMP is a lack of affinity between processes and CPUs—processes are not attached to a specific CPU. Without CPU affinity, the operating system schedules engines to CPUs in the same way as it schedules non-Adaptive Server processes to CPUs. Scheduling any process to a processor, including Adaptive Server engines, is done by the operating system, which can, at any time, preempt an Adaptive Server engine to run an arbitrary task. If an Adaptive Server engine does not find any runnable tasks, it can either relinquish the CPU to the operating system or continue to look for a task to run by looping for the number of times set in the runnable process search count configuration parameter.