![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: We are thinking about buying an Alphaserver 4100 with two CPUs. The question is: How does OpenVMS 6.2 use more than one CPU? Is there a way to direct certain work to a certain CPU and all the other work to the remainding CPU, or does OpenVMS balance all work among the available CPUs with no user control allowed? The only commands I see related to CPUs are the "SHOW CPU", "STOP CPU" and "START CPU". No mention in the doc is made or how to control them. The Answer is : OpenVMS uses multiple CPUs quote nicely -- the first multiprocessor systems shipped many years ago, and symmetric multiprocessing (SMP) support has been available and in full operation at many customer sites since V5.0 -- OpenVMS engineering and OpenVMS users have roughly ten releases of experience with SMP. OpenVMS will automatically detect an SMP system, and will default to configuring and operating with all CPUs enabled. Within OpenVMS, the basic unit of scheduling is the process (or the thread) -- each process (or thread) is scheduled based on its current state (ready, waiting for I/O, hibernating, etc), and based on its current process priority setting. With the standard OpenVMS process scheduler, OpenVMS will use the process attributes to schedule computable system and user process on available CPUs. This makes OpenVMS SMP systems excellent choices for typical timesharing activities, and for any system loads that will regularly have more than one process active at a time. In those few cases where applications require that processes be targeted to specific CPUs -- this is a relatively rare situation, and something that most sites do not need, nor want -- then per-CPU processor affinity support (SET PROCESS/AFFINITY, etc), and support for an application- or site-specific class scheduler are present in the OpenVMS operating system. An example class scheduler is shipped. Most sites will find the standard scheduling and process priority scheme will be entirely appropriate for their needs, and will not require the use of processor affinity nor class scheduling. (Care must be used when targeting processes to CPUs, as it is possible to deliberately or accidently create a number of degenerate scheduling situation cases; cases where the throughput of the OpenVMS system is actually lower than what is desired and expected.) Further, with recent (circa V7.1) OpenVMS Alpha releases and DECthreads (POSIX threads), a single process can be "threaded", and the threads can execute entirely in parallel on as many CPUs as are available. And with the OpenVMS Galaxy support, you can run fully seperate instances of OpenVMS on each processor. (OpenVMS Galaxy is currently targeted at folks with AlphaServer 8000-class SMP systems.) OpenVMS Galaxy is a feature that is available in the Software Developer's Kit for V7.2 -- this is the OpenVMS release currently in field test. CPUs can be moved from one instance to another entirely dynamically, allowing a large number of different sorts of scheduling policies to be easily implemented.
|