Beginning in
SAS 9, multiple threads are used to scale up and make use of multiple
processors in SMP hardware. Multithreading has been incorporated
into SAS 9 (and later), including many SAS servers, several performance-critical
SAS procedures, and many SAS engines. Multithreading is used for
both computing-intensive parts as well as I/O-intensive parts in order
to process data quickly and reduce the total execution time.
Multiple SAS
processes (MP CONNECT) are used to both scale up and scale out.
By running multiple processes on an SMP computer, the operating environment
can schedule the processes on different processors to use all the
hardware resources on the computer. In addition, by running multiple
SAS processes across the computers that are available on a network,
you can use idle processors and put multiple, slow, inexpensive computers
to work in parallel on a job and turn them into a valuable, powerful,
inexpensive computing resource.
Multithreading and multiple
SAS processes (MP CONNECT) are not mutually exclusive. For some applications,
the greatest gains in performance result from applying a solution
that incorporates multiple threads and multiple processes. Provided
you have the hardware resources to support it, you can use MP CONNECT
to run multiple SAS processes and each process can use multithreading.
When running multiple processes by using multiple threads on an
SMP computer, it might be necessary to set SAS system options in each
of the SAS processes to tune the amount of threading that is performed
by each process. Tuning threading behavior avoids the sum of the processes
and threads from overloading your system. When using multiple remote
computers with each SAS process running on a physically separate computer,
it might be better to let the threading within the process fully use
the individual computers.
Successfully scaled
performance is not obtained by installing more and faster processors
or more and faster I/O devices. Scalability involves making choices
about investing in SMP hardware, upgrading I/O configurations, using
networked computers, reorganizing your data, and modifying your application.
True scalability results from choosing scalable hardware and the
appropriate software that is specifically designed to leverage it.
The extent of the original problem that can be processed in parallel
determines the amount of scalability that is achievable from the software
solution.