To effectively use an SMP, take the following into account when you are attempting to enhance performance:
The primary performance issue that is unique to SMP systems is workload concurrency, which can be expressed as, "Now that we have n processors, how do we keep them all usefully employed"? If only one processor in a four-way multiprocessor system is doing useful work at any given time, it is no better than a uniprocessor. It could possibly be worse, because of the extra code to avoid interprocessor interference.
Workload concurrency is the complement of serialization. To the extent that the system software or the application workload (or the interaction of the two) require serialization, workload concurrency suffers.
Workload concurrency may also be decreased, more desirably, by increased processor affinity. The improved cache efficiency gained from processor affinity may result in quicker completion of the program. Workload concurrency is reduced (unless there are more dispatchable threads available), but response time is improved.
A component of workload concurrency, process concurrency, is the degree to which a multithreaded process has multiple dispatchable threads at all times.
The throughput of an SMP system is mainly dependent on:
The response time of a particular program in an SMP system is dependent on: