Pree Thiengburanathum Nopparat Suwannarat

cavalcadejewelΛογισμικό & κατασκευή λογ/κού

18 Νοε 2013 (πριν από 3 χρόνια και 7 μήνες)

96 εμφανίσεις

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
-
programming
-
multiprocessors/

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.

16

8949

-
3467

-
2367

101

4050

2766

2

8949

-
3467

-
2367

101

4050

2766

2

Thread 1

Thread 2

Thread 3

Array before sort

Assign a chuck of array to each thread.

Workloads Sorting Arrays (cont.)


Sorting Random Integer Arrays.


17

-
3467

-
2367

101

2

2766

4050

8949

The Array after sort

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.)

F
0
F
1
F
2
F
3
F
4
F
5
0
1
1
2
3
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

25

JAVA Thread(s) run for each workload

Time in seconds

Benchmark


2 Vista

26

Time in seconds


Benchmark


1 Ubuntu

27

JAVA Thread(s) run for each workload

Time in seconds

Benchmark


2 Ubuntu

28

Time in seconds


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 2
nd

edition, 2001


[4] Operating System Concepts, by Silberschatz.
Galvin, and Gangne, 7th Edition , Wiley 2005.


Fibonacci,
http://britton.disted.camosun.bc.ca/fibslide/jbfibslide
.htm
http://en.wikipedia.org/wiki/Fibonacci_number



34

Question

35