M. Muztaba Fuad Masters in Computer Science Department of Computer Science Adelaide University Supervised By Dr. Michael J. Oudshoorn Associate Professor.

Slides:



Advertisements
Similar presentations
Multiple Processor Systems
Advertisements

Mobile Agents Mouse House Creative Technologies Mike OBrien.
Distributed Processing, Client/Server and Clusters
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Emery Berger University of Massachusetts Amherst Operating Systems CMPSCI 377 Lecture.
Distributed Systems 1 Topics  What is a Distributed System?  Why Distributed Systems?  Examples of Distributed Systems  Distributed System Requirements.
Remote Method Invocation
The road to reliable, autonomous distributed systems
Distributed components
Chapter 1: Introduction
Task Scheduling and Distribution System Saeed Mahameed, Hani Ayoub Electrical Engineering Department, Technion – Israel Institute of Technology
Remote Method Invocation Chin-Chih Chang. Java Remote Object Invocation In Java, the object is serialized before being passed as a parameter to an RMI.
City University London
DISTRIBUTED CONSISTENCY MANAGEMENT IN A SINGLE ADDRESS SPACE DISTRIBUTED OPERATING SYSTEM Sombrero.
Lesson 20 – OTHER WINDOWS 2000 SERVER SERVICES. DHCP server DNS RAS and RRAS Internet Information Server Cluster services Windows terminal services OVERVIEW.
AgentOS: The Agent-based Distributed Operating System for Mobile Networks Salimol Thomas Department of Computer Science Illinois Institute of Technology,
Chapter 6: An Introduction to System Software and Virtual Machines
16: Distributed Systems1 DISTRIBUTED SYSTEM STRUCTURES NETWORK OPERATING SYSTEMS The users are aware of the physical structure of the network. Each site.
Cross Cluster Migration Remote access support Adianto Wibisono supervised by : Dr. Dick van Albada Kamil Iskra, M. Sc.
PRASHANTHI NARAYAN NETTEM.
Globus Computing Infrustructure Software Globus Toolkit 11-2.
CSE 490dp Check-pointing and Migration Robert Grimm.
DISTRIBUTED PROCESS IMPLEMENTAION BHAVIN KANSARA.
Design and Implementation of a Single System Image Operating System for High Performance Computing on Clusters Christine MORIN PARIS project-team, IRISA/INRIA.
Distributed Process Implementation Hima Mandava. OUTLINE Logical Model Of Local And Remote Processes Application scenarios Remote Service Remote Execution.
Distributed Process Implementation
Advanced Topics: MapReduce ECE 454 Computer Systems Programming Topics: Reductions Implemented in Distributed Frameworks Distributed Key-Value Stores Hadoop.
Chapter 3 Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access.
UNIX SVR4 COSC513 Zhaohui Chen Jiefei Huang. UNIX SVR4 UNIX system V release 4 is a major new release of the UNIX operating system, developed by AT&T.
The Old World Meets the New: Utilizing Java Technology to Revitalize and Enhance NASA Scientific Legacy Code Michael D. Elder Furman University Hayden.
Introduction and Overview Questions answered in this lecture: What is an operating system? How have operating systems evolved? Why study operating systems?
 Introduction to Operating System Introduction to Operating System  Types Of An Operating System Types Of An Operating System  Single User Single User.
Cognos TM1 Satya Mobile:
CS 1308 Computer Literacy and the Internet. Introduction  Von Neumann computer  “Naked machine”  Hardware without any helpful user-oriented features.
Active Monitoring in GRID environments using Mobile Agent technology Orazio Tomarchio Andrea Calvagna Dipartimento di Ingegneria Informatica e delle Telecomunicazioni.
DNA REASSEMBLY Using Javaspace Sung-Ho Maeung Laura Neureuter.
Crossing The Line: Distributed Computing Across Network and Filesystem Boundaries.
Grid Computing I CONDOR.
SUMA: A Scientific Metacomputer Cardinale, Yudith Figueira, Carlos Hernández, Emilio Baquero, Eduardo Berbín, Luis Bouza, Roberto Gamess, Eric García,
Unit – I CLIENT / SERVER ARCHITECTURE. Unit Structure  Evolution of Client/Server Architecture  Client/Server Model  Characteristics of Client/Server.
G-JavaMPI: A Grid Middleware for Distributed Java Computing with MPI Binding and Process Migration Supports Lin Chen, Cho-Li Wang, Francis C. M. Lau and.
Chapter 5.4 DISTRIBUTED PROCESS IMPLEMENTAION Prepared by: Karthik V Puttaparthi
Copyright © George Coulouris, Jean Dollimore, Tim Kindberg This material is made available for private study and for direct.
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
OPERATING SYSTEM SUPPORT DISTRIBUTED SYSTEMS CHAPTER 6 Lawrence Heyman July 8, 2002.
Framework for MDO Studies Amitay Isaacs Center for Aerospace System Design and Engineering IIT Bombay.
CS533 - Concepts of Operating Systems 1 The Mach System Presented by Catherine Vilhauer.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
J ICOS’s Abstract Distributed Service Component Peter Cappello Computer Science Department UC Santa Barbara.
Department of Computer Science MapReduce for the Cell B. E. Architecture Marc de Kruijf University of Wisconsin−Madison Advised by Professor Sankaralingam.
CPSC 171 Introduction to Computer Science System Software and Virtual Machines.
AMH001 (acmse03.ppt - 03/7/03) REMOTE++: A Script for Automatic Remote Distribution of Programs on Windows Computers Ashley Hopkins Department of Computer.
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
Group Mission and Approach To enhance Performance and Productivity in programming complex parallel applications –Performance: scalable to thousands of.
ALCF Argonne Leadership Computing Facility GridFTP Roadmap Bill Allcock (on behalf of the GridFTP team) Argonne National Laboratory.
Institute for Visualization and Perception Research 1 © Copyright 1999 Haim Levkowitz Java-based mobile agents.
CSC 480 Software Engineering Lecture 17 Nov 4, 2002.
Remote Method Invocation A Client Server Approach.
Nguyen Thi Thanh Nha HMCL by Roelof Kemp, Nicholas Palmer, Thilo Kielmann, and Henri Bal MOBICASE 2010, LNICST 2012 Cuckoo: A Computation Offloading Framework.
Operating Systems Distributed-System Structures. Topics –Network-Operating Systems –Distributed-Operating Systems –Remote Services –Robustness –Design.
AMOEBA study of distributed system
Chapter 4: Threads Modified by Dr. Neerja Mhaskar for CS 3SH3.
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
OpenMosix, Open SSI, and LinuxPMI
CSC 480 Software Engineering
Mobile Agents M. L. Liu.
Multithreaded Programming
REMOTE++: A Tool for Automatic Remote
Process/Code Migration and Cloning
Operating System Overview
A Virtual Machine Monitor for Utilizing Non-dedicated Clusters
Presentation transcript:

M. Muztaba Fuad Masters in Computer Science Department of Computer Science Adelaide University Supervised By Dr. Michael J. Oudshoorn Associate Professor Department of Computer Science Dynamic Scheduling and Load Balancing in Distributed Java Applications

Overview Motivation. Other systems. Goals. Contribution. Program structure. System components. Evaluation. Conclusion.

Motivation Most of the world’s PCs are idle most of the time. By using this resource pool, an individual computation may be completed in a fraction of time. A multi-threaded program can be distributed over a number of machines.

Motivation A huge gap exists between a multi-threaded and a distributed Java application that forbids simple code transformation in order to build distributed applications from multi-threaded applications. Distributing a program over a number of machines proves to be a tedious and difficult job.

Other Systems New distributed programming environment –Java Party, Ajents. Attempts to improve the underlying communication mechanism –ARMI, RRMI, Manta. Only implement migration for load balancing –Mole, Aglets,D’Agents. Take a completely different approach –Java/DSM.

Other Systems

Project Goals Automatic distribution of user program. Less programmer involvement for distribution of application across a network. Identify situation of heavy load and migrate the application as necessary. User should create distributed objects as local objects and distributed objects should behave as a local object. 100% Java based system to support heterogeneous platforms.

Contribution AdJava provides a system that makes it easy for programmers to convert a multi-threaded parallel program into distributable one. The programmer does not need to worry about the distribution of the resulting program; AdJava deals with everything related to distribution on behalf of the programmer.

Contribution AdJava provides transparent migration of objects to balance the load of the system. AdJava provides support for remote input from files and output to console and files. All this is provided without modifying the Java Virtual Machine.

System Architecture

Program Structure & Pre-processor Using AdJava, programmers can easily turn a multi-threaded Java program in to a distributed program by identifying those objects that should be spread across the distributed environment. foo aObject = new foo (…);  class foo extends Thread  distribute foo aObject = new foo (…);

Program Structure & Pre-processor … // Create five forks Fork f1= new Fork(1); Fork f2= new Fork(2); Fork f3= new Fork(3); Fork f4= new Fork(4); Fork f5= new Fork(5); // Assign Philosophers in proper places distribute Philosopher ph1 = new Philosopher(1,f1,f2); distribute Philosopher ph2 = new Philosopher(2,f2,f3); distribute Philosopher ph3 = new Philosopher(3,f3,f4); distribute Philosopher ph4 = new Philosopher(4,f4,f5); distribute Philosopher ph5 = new Philosopher(5,f5,f1); // Let them go ph1.start(); ph2.start(); ph3.start(); ph4.start(); ph5.start(); … class Philosopher extends Thread {……} … class Fork {……} … // Create five forks Fork f1= new Fork(1); Fork f2= new Fork(2); Fork f3= new Fork(3); Fork f4= new Fork(4); Fork f5= new Fork(5); // Assign Philosophers in proper places distribute Philosopher ph1 = new Philosopher(1,f1,f2); distribute Philosopher ph2 = new Philosopher(2,f2,f3); distribute Philosopher ph3 = new Philosopher(3,f3,f4); distribute Philosopher ph4 = new Philosopher(4,f4,f5); distribute Philosopher ph5 = new Philosopher(5,f5,f1); // Let them go ph1.start(); ph2.start(); ph3.start(); ph4.start(); ph5.start(); … class Philosopher extends Thread {……} … class Fork {……} … Local Objects Remote method invocation Distributed Objects

Program Structure & Pre-processor … // Create five forks Fork f1= new Fork(1); Fork f2= new Fork(2); Fork f3= new Fork(3); Fork f4= new Fork(4); Fork f5= new Fork(5); // Assign Philosophers in proper places PhilosopherInterface ph1 = (PhilosopherInterface) Naming.lookup(host[0]); PhilosopherInterface ph2 = (PhilosopherInterface) Naming.lookup(host[1]); PhilosopherInterface ph3 = (PhilosopherInterface) Naming.lookup(host[2]); PhilosopherInterface ph4 = (PhilosopherInterface) Naming.lookup(host[3]); PhilosopherInterface ph5 = (PhilosopherInterface) Naming.lookup(host[4]); // Let them go ph1.init(1,f1,f2); ph1.init(2,f2,f3); ph1.init(3,f3,f4); ph1.init(4,f4,f5); ph1.init(5,f5,f1); … class Philosopher extends Thread implements PhilosopherInterface {… …} … class Fork implements ForkInterface {… …} … // Create five forks Fork f1= new Fork(1); Fork f2= new Fork(2); Fork f3= new Fork(3); Fork f4= new Fork(4); Fork f5= new Fork(5); // Assign Philosophers in proper places PhilosopherInterface ph1 = (PhilosopherInterface) Naming.lookup(host[0]); PhilosopherInterface ph2 = (PhilosopherInterface) Naming.lookup(host[1]); PhilosopherInterface ph3 = (PhilosopherInterface) Naming.lookup(host[2]); PhilosopherInterface ph4 = (PhilosopherInterface) Naming.lookup(host[3]); PhilosopherInterface ph5 = (PhilosopherInterface) Naming.lookup(host[4]); // Let them go ph1.init(1,f1,f2); ph1.init(2,f2,f3); ph1.init(3,f3,f4); ph1.init(4,f4,f5); ph1.init(5,f5,f1); … class Philosopher extends Thread implements PhilosopherInterface {… …} … class Fork implements ForkInterface {… …} …

Root Server The root server has a well- known fixed address. The root server executes the root daemon, which is responsible to setup and run the whole system. The root daemon has two major threads that perform all background work once the system starts running.

Object Distribution Distribution of objects depends on: –Number of objects. –Number of hosts. –Load in each host. Every host will have at least one object. Root Server Objec t 1 argon:6001/obj1 Objec t 2 radon:6002/obj2 Objec t 3 sage:6003/obj3 Objec t 4 argon:6004/obj4 Objec t 5 sage:6005/obj5 Current load = 30 % argon Current load = 90 % radon Current load = 20 % sage

Agents The agent is designed as a multi-threaded application where each of the threads has a specific job. The agent monitors: –System load. –Communication from other agents. –Remote I/O. –Reference updating. Agent Daemon RMI DaemonMigration Daemon Remote I/O Daemon Communication Daemon Migration port Remote Output port Communication port

Migration Java does not support access to the program stack and the program counter. AdJava resumes threads only within the run method and not within other methods. AdJava instruments its own program counter in the run method. Suspend Serialize Transfer Resume. Proxy objects are used for reference updating.

Remote I/O From the perspective of the user on the root server, the remote object produces output and requests input as if it were actually executing upon the root server. For file I/O, the target file is either copied to or copied from the remote host.

Graphical User Interface

Evaluation Matrix Multiplication (600 x 600) Dinning Philosophers (5 Philosophers)

Evaluation Time to migrate an object

Evaluation Code inflation due to pre-processing

Conclusion This project develops an agent-based distributed architecture to distribute and manage Java applications automatically across a wide area network. It has more features than other systems. It performs well compared to other systems. It is easy to use.

Future Work Security Fault Tolerance Performance Optimization Migration Improvement