It's All About Processes Communicating

Preview:

DESCRIPTION

JAX London 2012 presentation 2012-10-16 about using GPars, the actor mode, dataflow model, Communicating Sequential Processes(CSP).

Citation preview

Copyright © 2011–2012 Russel Winder 1

It's All AboutProcesses Communicating

Russel Winder

email: russel@winder.org.ukxmpp: russel@winder.org.uk

twitter: russel_winder

Copyright © 2011–2012 Russel Winder 2

Aims, Goals and Objects

● Show that shared memory multi-threading should return to being an operating systems development technique and not continue to be pushed as an applications programming technique.

● Show that…

Copyright © 2011–2012 Russel Winder 3

…people should tremble in fear

at the prospect of using

Shared-memorymultithreading.

Copyright © 2011–2012 Russel Winder 4

Structure

A beginning.

A middle.

An end.

Copyright © 2011–2012 Russel Winder 5

Protocol

● Questions or short comments during the session are entirely in order.

● Let me know you have an interjection by raising your hand, and when I come to an appropriate pause, I'll pass you the token.

Questions, answers, comments, etc. appearingto get too long as interjections may get stackedto be unstacked at a break.

Copyright © 2011–2012 Russel Winder 6

Interstitial Advertisement

Copyright © 2011–2012 Russel Winder 7

A Beginning

Copyright © 2011–2012 Russel Winder 8

It is no longer contentious thatThe Multicore Revolution

is well underway.

Copyright © 2011–2012 Russel Winder 9

Quad core laptops and phones.

Eight and twelve core workstations.

Servers with “zillions” of cores.

Copyright © 2011–2012 Russel Winder 10

Parallel hardware is the norm.

Copyright © 2011–2012 Russel Winder 11

Software technology is now lagginghardware technology by decades.

Copyright © 2011–2012 Russel Winder 12

Operating systems manage coreswith kernel threads.

Operating systems are fundamentally shared memory multi-threaded systems.

Operating systems rightly use all the lock, semaphore, monitor, etc. technologies.

Copyright © 2011–2012 Russel Winder 13

Computationally intensive systems orsubsystems definitely have to be parallel.

Other systems likely use concurrencybut not parallelism.

Copyright © 2011–2012 Russel Winder 14

Concurrency

Execution as co-routines:

Sequences of code give up the executionto pass it to another coroutine.

Copyright © 2011–2012 Russel Winder 15

More Concurrency

Concurrency is a technique founded in auniprocessor view of the world.

Time-division multiplexing.

Copyright © 2011–2012 Russel Winder 16

Parallelism

Having multiple executions activeat the same time.

Copyright © 2011–2012 Russel Winder 17

Concurrency is a tool for structuring execution where asingle processor is used by multiple computations.

Parallelism is about making a computation completefaster than using a single processor.

Copyright © 2011–2012 Russel Winder 18

Copyright © 2011–2012 Russel Winder 19

Copyright © 2011–2012 Russel Winder 20

Copyright © 2011–2012 Russel Winder 21

Copyright © 2011–2012 Russel Winder 22

Copyright © 2011–2012 Russel Winder 23

Copyright © 2011–2012 Russel Winder 24

Copyright © 2011–2012 Russel Winder 25

Squirrel behaviour emulatessynchronized software behaviour.

Copyright © 2011–2012 Russel Winder 26

Thanks to Paul King…

Who uses synchronized?

Copyright © 2011–2012 Russel Winder 27

Thanks to Paul King…

You did it wrong.

Copyright © 2011–2012 Russel Winder 28

Small addition by me…

Who uses lock objects?

Copyright © 2011–2012 Russel Winder 29

Small addition by me…

You definitely did it wrong.

Copyright © 2011–2012 Russel Winder 30

Locks deny parallelism.

Copyright © 2011–2012 Russel Winder 31

The whole purpose of a lock is toprevent parallelism.

Copyright © 2011–2012 Russel Winder 32

Parallelism is performance improvement.

Performance improvement requires parallelism.

Copyright © 2011–2012 Russel Winder 33

Locks deny performance improvement.

Copyright © 2011–2012 Russel Winder 34

Locks are needed only ifthere is mutable shared state.

Copyright © 2011–2012 Russel Winder 35

Avoid mutable shared state.

Copyright © 2011–2012 Russel Winder 36

Use processes and message passing.

Copyright © 2011–2012 Russel Winder 37

It's all easier if processesare single threaded.

Copyright © 2011–2012 Russel Winder 38

…but how…

Copyright © 2011–2012 Russel Winder 39

Use appropriate architectural models.

Copyright © 2011–2012 Russel Winder 40

A Middle

Copyright © 2011–2012 Russel Winder 41

It's all about controllingconcurrency and parallelism

with tools that programmers find usable.

Copyright © 2011–2012 Russel Winder 42

Shared memory multi-threading isan operating system technique.

Copyright © 2011–2012 Russel Winder 43

Applications and tools programmersneed computational models with

integrated synchronization.

Copyright © 2011–2012 Russel Winder 44

ActorsIndependent processes communicating via asynchronous exchange of messages

CSPSequential processes connected by channels using synchronous message exchange (rendezvous).

DataflowOperators connected by channels with activity triggered by arrival of data on the channels.

Copyright © 2011–2012 Russel Winder 45

ActorsIndependent processes communicating via asynchronous exchange of messages

Copyright © 2011–2012 Russel Winder 46

DataflowOperators connected by channels with activity triggered by arrival of data on the channels.

Copyright © 2011–2012 Russel Winder 47

CSPSequential processes connected by channels using synchronous message exchange (rendezvous).

Copyright © 2011–2012 Russel Winder 48

Need examples.

Copyright © 2011–2012 Russel Winder 49

Copyright © 2011–2012 Russel Winder 50

What is the Value of ?

Easy, it's known exactly.

It's .

Obviously.

Copyright © 2011–2012 Russel Winder 51

It's simples Александр Орлов 2009

Copyright © 2011–2012 Russel Winder 52

Approximating

● What is it's value represented as a floating point number?● We can only obtain an approximation.● A plethora of possible algorithms to choose from, a

popular one is to employ the following integral equation.

4=∫0

1 1

1x2dx

Copyright © 2011–2012 Russel Winder 53

One Possible Algorithm

● Use quadrature to estimate the value of the integral – which is the area under the curve.

=4n∑i=1

n 1

1i−0.5n

2

With n = 3 not much to do, but potentially lots of error. Use n = 107 or n = 109?

Embarrassingly parallel.

Copyright © 2011–2012 Russel Winder 54

Because addition is commutative andassociative, expression can be

decomposed into sums of partial sums.

Copyright © 2011–2012 Russel Winder 55

a + b + c + d + e + f

=

( a + b ) + ( c + d ) + ( e + f )

Copyright © 2011–2012 Russel Winder 56

Scatter – Gather

map reduce

Copyright © 2011–2012 Russel Winder 57

Code!

Copyright © 2011–2012 Russel Winder 58

If you want the code, clone the Git repository:

http://www.russel.org.uk/Git/Pi_Quadrature.git

Copyright © 2011–2012 Russel Winder 59

Or if you just want to browse:

http://www.russel.org.uk/gitweb

Copyright © 2011–2012 Russel Winder 60

Need another example.

Copyright © 2011–2012 Russel Winder 61

The Sleeping Barber Problem

Copyright © 2011–2012 Russel Winder 62

The Sleeping Barber Problem

● The barber's shop has a single cutting chair and a row of waiting seats.

● The barber sleeps in the cutting chair unless trimming a customer.

● Customers arrive at the shop at intervals.

● If the barber is asleep, the customer wakes the barber takes the cutting chair and gets a trim.

● If the barber is cutting, a new customer checks to see if there is a free waiting seat.

● If there is join the queue to be trimmed.

● If there isn't leave disgruntled.

Problem originally dueto Edsgar Dijkstra.

Copyright © 2011–2012 Russel Winder 63

A new customer enters the shop,check to see if they can go straightto the cutting chair, if not can theytake a waiting chair, if not leave.

The waiting chairs

The cutting chair.

The barber's shop.

Copyright © 2011–2012 Russel Winder 64

Wikipedia article presents the classic operating systems approach using locks and semaphores.

http://en.wikipedia.org/wiki/Sleeping_barber_problem

Copyright © 2011–2012 Russel Winder 65

More code!

Copyright © 2011–2012 Russel Winder 66

If you want the code, clone the Git repository:

http://www.russel.org.uk/Git/SleepingBarber.git

Copyright © 2011–2012 Russel Winder 67

Or if you just want to browse:

http://www.russel.org.uk/gitweb

Copyright © 2011–2012 Russel Winder 68

An End

Copyright © 2011–2012 Russel Winder 69

Multicore and multiprocessor are nowthe norm, not the exception.

Copyright © 2011–2012 Russel Winder 70

Parallelism only matters ifcomputational performance matters.

Copyright © 2011–2012 Russel Winder 71

Unstructured synchronizationof concurrent systems

is not a feasible approach.

Copyright © 2011–2012 Russel Winder 72

Actors, CSP and Datafloware the future of

applications structure.

Copyright © 2011–2012 Russel Winder 73

Passing messages betweenprocesses is the way forward.

Copyright © 2011–2012 Russel Winder 74

Shared memory concurrencyis a dead end for applications.

Copyright © 2011–2012 Russel Winder 75

Copyright © 2011–2012 Russel Winder 76

Copyright © 2011–2012 Russel Winder 77

Copyright © 2011–2012 Russel Winder 78

Copyright © 2011–2012 Russel Winder 79

Copyright © 2011–2012 Russel Winder 80

Copyright © 2011–2012 Russel Winder 81

Squirrels deny parallelism.

Copyright © 2011–2012 Russel Winder 82

Squirrels deny performance enhancement.

Copyright © 2011–2012 Russel Winder 83

Don't be a squirrel.

Copyright © 2011–2012 Russel Winder 84

Do not use explicit locking algorithms.

Copyright © 2011–2012 Russel Winder 85

Use computational architectures that promoteparallelism and hence performance

improvement:

ActorsDataflow

CSPData Parallelism

Copyright © 2011–2012 Russel Winder 86

Use

Go on, you know you want to…

Copyright © 2011–2012 Russel Winder 87

Surreptitious Advertisement

Copyright © 2011–2012 Russel Winder 88

The End

Copyright © 2011–2012 Russel Winder 89

It's All AboutProcesses Communicating

Russel Winder

email: russel@winder.org.ukxmpp: russel@winder.org.uk

twitter: russel_winder

Recommended