Slide 1

Slide 1 text

Threads and Processes Ariel Caplan

Slide 2

Slide 2 text

Concurrency <= Parallelism

Slide 3

Slide 3 text

Threads && Processes Both provide concurrent execution of code! Neither guarantee execution order! Both add overhead to your code!

Slide 4

Slide 4 text

Threads vs. Processes Process Process Memory Memory Thread Thread Memory

Slide 5

Slide 5 text

Threads vs. Processes @var @var @var = 1 @var = 1 @var @var @var = 1

Slide 6

Slide 6 text

Threads vs. Processes @var @var @var = 1 @var = 1 @var @var @var = 2

Slide 7

Slide 7 text

Threads vs. Processes @var @var @var = 1 @var @var @var = 2 @var = 2

Slide 8

Slide 8 text

Threads vs. Processes @var @var @var = 1 @var @var @var = 2 @var = 2 WARNING:
 OVERSIMPLIFICATION

Slide 9

Slide 9 text

Threads vs. Processes Threads share memory and state! Processes share nothing

Slide 10

Slide 10 text

Threads vs. Processes in MRI Threads share memory and state! Processes share nothing! Threads are concurrent, not parallel, due to the GIL 
 (Global Interpreter Lock)! Processes operate in true parallel

Slide 11

Slide 11 text

Parallelism Concurrency Processes Multi-Core System Single-Core System Threads JRuby, Rubinius, Nonblocking IO Standard Calculations in MRI The Bottom Line

Slide 12

Slide 12 text

Implication: Sidekiq Concurrency For a server running only Sidekiq on MRI:! 1 Sidekiq process per core! Concurrency (number of threads) = 1 / CPU Time! Example: 8-core machine with 75% IO, 25% CPU:! 8 Sidekiq processes! Sidekiq concurrency of 1/(25%) = 4

Slide 13

Slide 13 text

Thank You For Listening! amcaplan.ninja! @amcaplan! ↑! Questions