International Journal on Recent and Innovation Trends in Computing and Communication ISSN: 2321-8169 Volume: 2 Issue: 11 3360 - 3365 _______________________________________________________________________________________________ 3360 IJRITCC | November 2014, Available @ http://www.ijritcc.org _______________________________________________________________________________________ Analysis of Various Decentralized Load Balancing Techniques with Node Duplication Rajesh Tiwari Associate Prof. SSCET,Bhilai raj_tiwari_in@yahoo.com Dr. Manisha Sharma Professor BIT,Durg Dr. Kamal K. Mehta Associate Professor NIRMA Univ. Ahamadabad Abstract- Experience in parallel computing is an increasingly necessary skill for today‟s upcoming computer scientists as processors are hitting a serial execution performance barrier and turning to parallel execution for continued gains. The uniprocessor system has now reached its maximum speed limit and, there is very less scope to improve the speed of such type of system. To solve this problem multiprocessor system is used, which have more than one processor. Multiprocessor system improves the speed of the system but it again faces some problems like data dependency, control dependency, resource dependency and improper load balancing. So this paper presents a detailed analysis of various decentralized load balancing techniques with node duplication to reduce the proper execution time. __________________________________________________*****_________________________________________________ 1. Introduction Parallel computers can be classified according to the level at which the hardware supports parallelism, with multi- core and multi-processor computers having multiple processing elements within a single machine, while clusters, MPPs, and grids uses multiple computers to work on the same task. Specialized parallel computer architectures are sometimes used alongside traditional processors, for accelerating specific tasks. In addition to the trend of individual machines containing multiple processing units, there is a growing trend towards harnessing the power of multiple machines together to solve ever larger computational and data processing problems. Since the early to mid 1980‟s, many expensive computers containing multiple processors were built to solve the world‟s most challenging computational problems. Since the mid-1990‟s, people have built clusters of commodity PCs that are networked together and act as a single computer with multiple processors (which could be multicore themselves). This type of cluster of computers is often referred to as a beowulf cluster. Major Internet software companies such as Google, Yahoo, and Microsoft now employ massive data centers containing thousands of computers to handle very large data processing tasks and search requests from millions of users. Portions of these data centers can now be rented out at reasonable prices from Amazon Web Services, making it possible for those of us who can write parallel programs to harness the power of computers in „the cloud‟- out on the Internet away from our own physical location. Today, even the next generation of netbooks and mobile phones, along with our current laptops and desktop machines, have dual core processors, containing two „cores‟ capable of executing instructions on one CPU chip. High-end desktop workstations and servers now have chips with more cores (typicaly 4 or 8), which leads to the general term multicore to refer to these types of CPUs. This trend of increasing cores will continue for the foreseeable future - the era of single processors is gone. Major classes of parallel computing platforms are multicore with shared memory, clusters of computers that can be used together and large data centers in the cloud. Parallel computing is a form of computation in which many calculations are carried out simultaneously, [13] operating on the principle where large problems can often be divided into smaller ones, which are then solved concurrently. There are several different forms of parallel computing: bit-level, instruction level, data level, and task level parallelism. Parallelism has been employed for many years, mainly in high-performance computing, but interest in it has grown lately due to the physical constraints preventing frequency scaling [2]. As power consumption (and consequent heat generation) by computers has become a concern in recent years, parallel computing has become the dominant paradigm in computer architecture, mainly in the form of multi-core processors [18]. Parallel computer programs are more difficult to write than sequential ones [16], because concurrency introduces several new classes of potential software bugs, of which race conditions are the most common. Communication and synchronization between the different subtasks are some of the greatest obstacles to getting good parallel program performance. The maximum possible speed-up of a program is easily calculated by Amdahl's law. According to Amdahl's law the speedup factor is inversely proportional to the sequential portion of the program. As the sequential portion if the program increases the speedup factor will decreases and vice- versa. In addition, we consider multiprogramming operation, i.e. many independent parallel programs may run at the same time, sharing the machine in time and space. The programs may enter the system at any node and at any time. Each of these programs is assumed to consist of a dynamic set of parallel tasks that communicate with each other by interchanging messages. In such an environment, there exists the problem of how to (re)allocate the particular tasks to processors to achieve low response times.