that one,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

54
THANK YOU @BGMARX THAT ONE, FOR NOW @bgmarx

Upload: others

Post on 04-Aug-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

THANK YOU@BGMARX

THAT ONE, FOR NOW

@bgmarx

Page 2: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations
Page 3: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

PHOENIX REQUEST

Page 4: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

PROCESS

Page 5: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

SCHEDULERS

Page 6: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

SINGLE SCHEDULER

Page 7: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

MULTIPLE SCHEDULERS

(SMP)

Page 8: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

PHOENIX REQUEST

Page 9: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

THANK YOU@BGMARX

Page 10: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

conn

conn

endpointplugsrouter

controllerpipeline

viewtemplate

transformations

Page 11: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

PHOENIX REQUEST

Page 12: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

PROCESS

Page 13: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

LIGHTWEIGHT

Page 14: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

ISOLATED

HTTPS://ARMSTRONGONSOFTWARE.BLOGSPOT.COM/2006/09/WHY-I-DONT-LIKE-SHARED-MEMORY.HTML

In simple relativity theory the concept of simultaneity just does not exist. The point is that in reality objects do not share state, I believe its not a good idea to model what cannot exist in reality in software … Everything that can be achieved with sharing and locks can also be achieved with pure message passing and no locks. The [sic] is the Erlang way.

Page 15: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

EXECUTES CODE

Page 16: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

PCB

MAILBOX HEAP

STACK

FOUR BLOCKS OF MEMORY

Page 17: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

MAILBOX

Page 18: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

PROCESS CONTROL BOARD

Page 19: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

HTTPS://GITHUB.COM/ERLANG/OTP/BLOB/OTP-21.0/ERTS/EMULATOR/BEAM/ERL_PROCESS.H#L927

Uint32 rcount; /* suspend count */ int schedule_count; /* Times left to reschedule a low prio process */ Uint reds; /* No of reductions for this process */ Eterm group_leader; /* Pid in charge (can be boxed) */ Uint flags; /* Trap exit, etc (no trace flags anymore) */ Eterm fvalue; /* Exit & Throw value (failure reason) */ Uint freason; /* Reason for detected failure */ Eterm ftrace; /* Latest exception stack trace dump */

Page 20: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

RUNNABLE

FREE

EXITING

WAITING

SUSPENDED

RUNNING

GARBING

PROCESS STATES

Page 21: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations
Page 22: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

RUNNING

WAITING

RUNNABLE

“NORMAL” STATES

Page 23: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

iex(5)> :erlang.process_info self(), :status {:status, :running}

HTTP://ERLANG.ORG/DOC/MAN/ERLANG.HTML#PROCESS_INFO-1

Page 24: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

PROCESS

Page 25: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

SCHEDULERS

Page 26: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

SINGLE SCHEDULER

Page 27: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

iex(1)> :erlang.system_info:(smp_support) true iex(2)> :erlang.system_info :schedulers_online 4

HTTP://ERLANG.ORG/DOC/MAN/ERLANG.HTML#SYSTEM_INFO-1

Page 28: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

~> iex --erl "+S 1"Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]

Interactive Elixir (1.7.3) - press Ctrl+C to exit (type h() ENTER for help)iex(1)> :erlang.system_info :schedulers_online1

HTTP://ERLANG.ORG/DOC/MAN/ERL.HTML#EMULATOR-FLAGS

Page 29: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations
Page 30: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

iex(25)> Process.sleep(10_000)[info] GET /[debug] Processing with SimpleWeb.PageController.index/2 Parameters: %{} Pipelines: [:browser][info] Sent 200 in 150µs

Page 31: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

PREEMPTIVE*

Page 32: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

REDUCTIONS

Page 33: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

4000 REDUCTIONS

HTTPS://GITHUB.COM/ERLANG/OTP/BLOB/MASTER/ERTS/EMULATOR/BEAM/ERL_VM.H#L39

#DEFINE CONTEXT_REDS 4000 /* SWAP PROCESS OUT AFTER THIS NUMBER */

Page 34: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

RUN QUEUE

RUNNABLE

WAITING

RUNNING

Page 35: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

TASK 1

TASK 2

RUN QUEUE

TASK N

SCHEDULER

Page 36: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

iex(11)> :erlang.statistics(:run_queue)0

HTTP://ERLANG.ORG/DOC/MAN/ERLANG.HTML#STATISTICS-1

Page 37: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

TASK 1

TASK 2

RUN QUEUE

TASK N

SCHEDULER

Page 38: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

MULTIPLE SCHEDULERS

(SMP)

Page 39: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations
Page 40: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

RUN QUEUE

HIGH PRIORITY

NORMAL & LOW

MAX PRIORITY

SCHEDULER

Page 41: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

LOAD BALANCING

Page 42: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

TASK STEALING

Page 43: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

MIGRATION LOGIC

SCHEDULER 1 SCHEDULER 2

Page 44: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

RUN QUEUE 2SCHEDULER 2

RUN QUEUE NSCHEDULER N

RUN QUEUE 1SCHEDULER1

MIGRATION LOGIC

Page 45: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

FINELY TUNED

Page 46: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

SCHEDULER FLAGSelixir --erl "+sbt ns" #etc

HTTP://ERLANG.ORG/DOC/MAN/ERL.HTML#FLAGS

Page 47: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

MOCHI SCHEDULERS

Page 48: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

HOW HAS THIS HELPED?

Page 49: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations
Page 50: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

RUN QUEUE

LATENCY

Page 51: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

TRANSFORMATIONSADDED TO RUN QUEUE

REQUEST

RESPONSE

SCHEDULER ASSIGNED

Page 52: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

THANK YOU@BGMARX

IMAGE CREDITShttps://wallpaper-gallery.net/single/vaporwave-background-hd-14.html

http://www.desktopimages.org/preview/770453/1920/1080/

https://www.wallpapervortex.com/wallpaper-52083_1_miscellaneous_digital_art_vaporwave_image_glitch.html

https://www.deviantart.com/epix0r/art/R-o-a-d-W-a-y-1920-x-1080-HD-629299503

https://wallpaper-gallery.net/single/glitch-wallpaper-hd-11.html

Page 53: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

THANK YOU@BGMARX

RESOURCESThe BEAM Book - https://github.com/happi/theBeamBook

https://jlouisramblings.blogspot.com/2013/01/how-erlang-does-scheduling.html

http://www.erlang-factory.com/upload/presentations/105/KennethLundin-ErlangFactory2009London-AboutErlangOTPandMulti-coreperformanceinparticular.pdf

https://hamidreza-s.github.io/erlang/scheduling/real-time/preemptive/migration/2016/02/09/erlang-scheduler-details.html

Page 54: THAT ONE,€¦ · conn conn endpoint plugs router controller pipeline view template transformations

DZIĘKUJĘ@bgmarx