JAVA Multi-thread Programming on CMP System
Download
Report
Transcript JAVA Multi-thread Programming on CMP System
Pree Thiengburanathum
Nopparat Suwannarat
1
Agenda
Background
Motivation
Contribution
Working environment
Program design and Implementations
Measurements
Workloads
Benchmark
Analysis
Conclusion
Question
2
Background – quick overview
Multi-programming
Multi-processing
Multi-threading
Thread
Homogenous CMP system
3
Background
JAVA API Thread
start()
run()
wait()
join()
sleep()
getName()
isAlive()
Thread.isSleep()
4
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.
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.
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.
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.
8
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.
9
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-programmingmultiprocessors/
10
Working Environments
Google code project.
11
Benchmark
Three input(workloads), large problems which can be
divided into small sub problems.
Trapezoid’s rule
Sorting array
Fibonacci number
12
Workloads Trapezoid's Rule
To compute the area under the function or Integrate
the function by compute the summation of the small
rectangular.
13
Workloads Trapezoid's Rule (cont.)
Trapezoid's Rule – An example of the complicate
function, a = 0, b = 10
14
Workloads Trapezoid's Rule(cont.)
Trapezoid's Rule – two threads and how they are
assigned.
15
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
Thread 1
101
-2367
Thread 2
4050
2766
2
Thread 3
16
Workloads Sorting Arrays (cont.)
Sorting Random Integer Arrays.
The Array after sort
-3467
-2367
2
101
2766
4050
8949
17
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
Fibonacci number (cont.)
F0
0
F1
1
F2
1
F3
2
F4
3
F5
5
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
Fibonacci number (cont.)
Fibonacci number (cont.)
Program Design – UML
22
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.
23
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.
24
Benchmark – 1 Vista
JAVA Thread(s) run for each workload
Time in seconds
25
Benchmark – 2 Vista
Time in seconds
26
Benchmark – 1 Ubuntu
JAVA Thread(s) run for each workload
Time in seconds
27
Benchmark – 2 Ubuntu
Time in seconds
28
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.
29
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.
30
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()
31
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.
32
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.
33
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
34
Question
35