DUAL CPUS AND MULTITHREADING HELP SERVER DEPLOYMENTS
For years, hosting firms have offered dual CPU capacity in some of their higher-end offerings with the promise of better performance. Many end-users note that dual CPU systems trump single computer processors that can only handle one instruction from one application at any given point in time.
Let Rackspace make the difference with reliable managed hosting solutions backed by Fanatical Support.™ 100% Network Uptime Money-Back Guar., 1-hour hardware replacement, 24/7 LIVE, MS and LNX certified technical support.
Each instruction sent to a processor is called a thread. Though a computer appears to multitask or run more then one program at a time, it is really not. A single CPU divides its time and power evenly between all the programs by switching back and forth creates a sense of multitasking.
In contrast, dual CPU systems can work on two independent threads concurrently. Each processor however is still limited to working on one thread. In effect, the dual CPU allows two applications to independently work at once. This is advantageous to a server, since it allows applications to continue working even if one fails.
Multi-CPU systems are designed to utilize different applications concurrently. Applications however must be specifically designed to accommodate multithreading. Thankfully, many applications can juggle multiple chores at once within a multithread environment.
Server applications handle concurrent clients. Interactive applications often deal with user input while processing background computations. And computationally intensive applications harness the power of multiple processors. The use of multiple threads for control allows for more effective implementation when dealing with these concurrent activities. Coordinating the execution of such threads involves synchronizing access to shared data structures, ensuring that programs are well behaved and deterministic regardless of the relative speeds of execution of their component threads.
Multithreaded programs, like single-threaded programs, must deal with exceptions and interaction with the outside world. Though there may be many concurrent activities in such a program, the program as a whole should cleanly respond to such outside input. There are a number of ways in which threads have been implemented, involving user-level libraries, the OS kernel, and various combinations. Most Linux implementations currently treat each thread as a separate process created using the clone system call (though each shares its address space with its cohorts). Some newer implementations of multithreaded software on Linux use different approaches, but the ultimate result is that applications like database servers can operate and dedicate specific resources to a single CPU, while other ongoing operations use the alternate CPU.
The assignment of specific database applications to a specific CPU is important more in terms of redundancy in most instances than speed. As many analysts indicate, any given program will not run faster with a dual processor, except to the extent that it does not have to handle other tasks. While many multithreaded applications are optimized to actually increase the speed of program performance, the greater advantage they provide is operational security.
If an application on one CPU causes a spike in server load, it will not incapacitate all server activity. In turn, if one CPU unit actually fails, the second CPU can take over other mission-critical activities until the alternate CPU is replaced. This, in certain situations, can assist with achieving greater uptime and responsiveness of server applications running within a Web hosting environment.