1 / 35

JAVA Multi-thread Programming on multiprocessors.

JAVA Multi-thread Programming on multiprocessors. Pree Thiengburanathum Nopparat Suwannarat. Agenda. Background Motivation Contribution Working environment Program design and Implementations Measurements Workloads Benchmark Analysis Conclusion Question. Background – quick overview.

anastasia
Télécharger la présentation

JAVA Multi-thread Programming on multiprocessors.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JAVA Multi-thread Programming on multiprocessors. Pree Thiengburanathum Nopparat Suwannarat

  2. Agenda • Background • Motivation • Contribution • Working environment • Program design and Implementations • Measurements • Workloads • Benchmark • Analysis • Conclusion • Question

  3. Background – quick overview • Multi-programming • Multi-processing • Multi-threading • Thread • Homogenous CMP system

  4. Background • JAVA API Thread • start() • run() • wait() • join() • sleep() • getName() • isAlive() • Thread.isSleep()

  5. JAVA Thread API • Wait : public final void wait(long timeout, int nanos) • Causes the current thread to wait until another thread invokes the method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed • Start : public void start() • Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.

  6. JAVA Thread API • Run : public void run() • If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns. Subclasses of Thread should override this method • Stop : public final void stop() • An application should not normally try to catch ThreadDeath unless it must do some extraordinary cleanup operation . If a catch clause catches a ThreadDeath object, it is important to rethrow the object so that the thread actually dies.

  7. JAVA Thread API • Sleep : public static void sleep(long millis) • Causes the currently executing thread to sleep for the specified number of milliseconds, subject to the precision and accuracy of system timers and schedulers. The thread does not lose ownership of any monitors. • Join : public final void join() • Waits for this thread to die.

  8. Motivation • Multithreading with JAVA on large problems. • For large computation problems, we would like to know how much performance will be improved if we use thread-based programming instead of execute by one process. • How multi processors affects when programming with JAVA thread. • Advantages and disadvantages of multithread programming with real applications. • Gain experiences with JAVA Thread, multi-thread programming, CMP system, and various tools.

  9. Contributions • Software : A JAVA program benchmark. • Why JAVA? • Portability, can easily test on different operating systems. • Synchronization • Three Workloads (input) modules. • Want to see the performance when having multiple processors compute the workloads in multiprogramming environment.

  10. Working Environments • Operating Systems • Microsoft Window Vista • Ubuntu, Linux-based operating system. • VMWare virtual machine. • Tools and language • Eclipse IDE with JAVA JRE 1.6.03, JRE 1.5.0_13 • Project hosting at (Google code) Subversion repository • URL: http://code.google.com/p/thread-programming-multiprocessors/

  11. Working Environments • Google code project.

  12. Benchmark • Three input(workloads), large problems which can be divided into small sub problems. • Trapezoid’s rule • Sorting array • Fibonacci number

  13. Workloads Trapezoid's Rule • To compute the area under the function or Integrate the function by compute the summation of the small rectangular.

  14. Workloads Trapezoid's Rule (cont.) • Trapezoid's Rule – An example of the complicate function, a = 0, b = 10

  15. Workloads Trapezoid's Rule(cont.) • Trapezoid's Rule – two threads and how they are assigned.

  16. Workloads Sorting Arrays • Sorting Random Integer Arrays. Array before sort 8949 -3467 101 -2367 4050 2766 2 Assign a chuck of array to each thread. 8949 -3467 101 -2367 4050 2766 2 Thread 1 Thread 2 Thread 3

  17. Workloads Sorting Arrays (cont.) • Sorting Random Integer Arrays. The Array after sort -3467 -2367 2 101 2766 4050 8949

  18. Workloads Fibonacci number • the Fibonacci numbers are a sequence of numbers named after Leonardo of Pisa, known as Fibonacci. • The first number of the sequence is 0 • the second number is 1 • each subsequent number is equal to the sum of the previous two numbers of the sequence itself

  19. Fibonacci number (cont.) The family trees of cows and bees, the Fibonacci series, the Fibonacci Spiral and sea shell shapes, branching plants, flower petal and seeds, leaves and petal arrangements, on pineapples and in apples, pine cones and leaf arrangements. All involve the Fibonacci

  20. Fibonacci number (cont.)

  21. Fibonacci number (cont.)

  22. Program Design – UML

  23. Program Implementation Examples of program input rapry@Morphine:~/csc5573/ThreadSim/ java ThreadSim 1 Run workloads with 1 thread(s). Start trapaziod workload... Thread-1 is running trapazoid workload. Start sorting workload... execution time is: 3879000 nanoseconds. Running fibo workload... Done finding fibonacci number. execution time is: 12,192,912,000 nanoseconds. Finished all the workloads. Total execution time is: 12.19874 seconds.

  24. Measurements • Number of thread and performance of large problems. • Performance in multiple processors environment. • Performance in various operating systems Window/Linux and so on. • Measurements on: • Intel Core 2 Duo, 3.0Ghz, 2G RAM, Vista, Ubuntu • Intel Centrino Duo, 1.44Ghz, 2G RAM, Vista • Run 3 times and find the average of the total execution time.

  25. Benchmark – 1 Vista JAVA Thread(s) run for each workload Time in seconds

  26. Benchmark – 2 Vista Time in seconds

  27. Benchmark – 1 Ubuntu JAVA Thread(s) run for each workload Time in seconds

  28. Benchmark – 2 Ubuntu Time in seconds

  29. Results Analysis • Benchmark 1 (divide large problem into sub problems) • If we assign right number of thread to compute the problems, better execution time. • The more thread assign to the problem, the worse performance we get. • Benchmark 2 (a pack of workloads) • The more thread we assign to compute those problems, the worse execution time we will have.

  30. Results Analysis • For a better results we will need • CPU Intensive application • Need very large problem to compute in order to see an improvement. • I/O Intensive application • See significantly improvement of execution time. • Example.

  31. Conclusion • JAVA Threads • Advantages • Better interaction with user. • Exploitation of multiple processors. • Do other things while waiting for Slow I/O operations. • Simplify object modeling • Synchronized, lock objects and classes • Inter-thread communication support • wait(), notify()

  32. Conclusion(cont.) • JAVA Threads • Disadvantages • Memory resources • Two stacks assigned by JavaVM • One is used to keep track of java method calls and vars. • The other stack is used to keep track of native code calls • Processor resources • Overhead, context switch • Thread operations (start, stop, destroy). • When adding additional threads to the design of a system, these costs should be considered.

  33. Conclusion(cont.) • JAVA Multi-thread programming • Less effective in single processor? • Need to assign right number of thread, more thread doesn’t mean good. • No synchronization need. No critical section in the program. • Effective when the problem require intensive I/O operation. • Programmer has to know the problem well in order to use thread-based programming to archive the maximum. utilization of system resources. • Easy to start, tough to master. • Auto-garbage collection • Tasks such as getting lock, releasing lock are simplified.

  34. References • [1] JAVA Standard Edition 6 API, Sun Microsystems, http://java.sun.com/javase/6/docs/api/, 2006 • [2] Eclipse IDE, www.eclipse.org, 2008[3] Paul, H., Java Thread Programming, 1999 • [4] Scott O., Henry W., Java Threads 2nd edition, 2001 • [4] Operating System Concepts, by Silberschatz. Galvin, and Gangne, 7th Edition , Wiley 2005. • Fibonacci, http://britton.disted.camosun.bc.ca/fibslide/jbfibslide.htmhttp://en.wikipedia.org/wiki/Fibonacci_number

  35. Question

More Related