SlideShare a Scribd company logo
Erlang and
              Scalability
         Percona Performance 2009



Jan Henry Nystrom
henry@erlang-consulting.com
Introduction
•     Scalability Killers
•     Design Decisions – Language and Yours
•     Thinking Scalable/Parallel
•     Code for the correct case
•     Rules of Thumb
•     Scalability in the small: SMP




Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   2
Scalability Killers
• Synchronization
• Resource contention
  Synchronization




Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   3
Design Decisions
                                               No sharing

• Processes
• Encapsulation
• No implicit synchronization




Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   4
Design Decisions
                         No implicit synchronization

•     Spawn always succeed
•     Sending always succeed
•     Random access message buffer
•     Fire and forget unless you need the synchronization




Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   5
Design Decisions
              Concurrency oriented programming

•     Concurrency support an integral part of the language
•     Distribution support
•     Sets the focus firmly on the concurrent tasks
•     Code for the correct case
•     Clear Code


                                      Clarity is King!
        I rather try to get clear code correct than correct code clear


Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   6
Thinking Scalable/Parallel
                         List length: Obviously Linear

      4
      3
      2
      1
      0:




                         But not when you have n processors?


Erlang and Scalability    Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   7
Thinking Scalable/Parallel
 List length: O(logN) with sufficient processors

          4


           2                                                        2


           1                           1                             1                             1




Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   8
Thinking Scalable/Parallel
                                 In the Erlang setting

•     Do not introduce unneeded synchronization
•     Remember processes are cheap
•     Do not introduce unneeded synchronization
•     A terminated process is all garbage
•     Do not introduce unneeded synchronization




Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   9
Code for the Correct Case


                                     request
        set timer
                                          set timer                      request
                                                                                                        request
                                                                            set timer
                                                                                                            r
                                                                                                   answe

                                                                    release timer
                                                                            check
                                                                a n sw er

                                release timer
                                  w er  check
                             a ns

release timer
        check
 Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting             10
Code for the Correct Case


                                    request
       set timer
                                                                        request
                                                                                                       request



                                            r
                                 answe
release timer
        check




Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting             11
Rules of Thumb
• Rule 1 - All independent tasks should be processes
• Rule 2 - Do not invent concurrency that is not there!



                            f()



                            g()
                                                                    h(g(f()))
                                                                       h(g(f()))
                                                                           h(g(f()))
                                                                              h(g(f()))
                            h()




Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   12
Scalability in the small: SMP
                                   Erlang SMP ”Credo”


 SMP should be transparent to the programmer in
    much the same way as Erlang Distribution

• You shouldn’t have to think about it
   ...but sometimes you must
• Use SMP mainly for stuff that you’d make concurrent anyway
• Erlang uses concurrency as a structuring principle
  • Model for the natural concurrency in your problem




Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   13
Scalability in the small: SMP
                                                                        ”Big bang” benchmark on Sunfire T2000
• Erlang on multicore

                                                                                            1 scheduler
• SMP prototype ‘97,
  First OTP release May ‘06.
• Mid -06 benchmark mimicking
  call handling (axdmark) on the
  (experimental) SMP emulator.
  Observed speedup/core: 0.95
• First Ericsson product (TGC)
  released on SMP Erlang
  in Q207.
                                                                                                          16 schedulers
                                                                                 Simultaneous processes



Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting             14
Scalability in the small: SMP
   Case Study: Telephony Gateway Controller

                                                                             AXE                       TGC

• Mediates between legacy telephony and multimedia
  networks.
• Hugely complex state machines
• + massive concurrency.                        GW GW                                                    GW
• Developed in Erlang.
• Multicore version shipped to customer Q207.
• Porting from 1-core PPC to 2-core Intel took < 1 man-year
  (including testing).

Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting     15
Scalability in the small: SMP
   Case Study: Telephony Gateway Controller
       Traffic            IS/GCP                 IS/GEP                   IS/GEP                AXD          AXD
      scenario
                          1slot/board          Dual core                 Dual core              CPB5         CPB6
                                               One core                  Two cores
                                                running                   running
                                              2slots/board              2slots/board


    POTS-POTS             X call/sec         2.3X call/sec           4.3X call/sec               0.4X      2.1X call/sec
      /AGW
                                                                        OTP R11_3               call/sec
                                             One core used
                                                                      beta+patches

  ISUP-ISUP /Inter       3.6X call/sec 7.7X call/sec                  13X call/sec               1.55X     7.6X call/sec
      MGW
                                                                        OTP R11_3               call/sec
                                             One core used
                                                                      beta+patches

  ISUP-ISUP /Intra       5.5X call/sec                                  26X call/sec             3.17X     14X call/sec
      MGW
                                                                                                call/sec


Erlang and Scalability    Percona Performance Conference © 2009 -2009, Erlang Training and Consulting               16
Scalability in the small: SMP
                                               Speedup on 4 Hyper Threaded Pentium4

                                         4.5
                                          4                                                                                3.96
                                                                                                                    3.79
                                         3.5                                                             3.63

                               Speddup    3                                                   3.11
                                                                                   2.73
                                         2.5
                                          2                  1.92       2.05

                                         1.5
                                          1          1
                                         0.5
                                          0
                                                 1       2          3          4          5          6          7          8

• Chatty                                                                  # Schedulers


• 1000 processes created
• Each process randomly sends req/recieves ack from all other
  processes
Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting                           17
Scalability in the small: SMP
                                                    Erlang VM
non-SMP VM
                                                                                                run queue



                                               Scheduler




Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting        18
Scalability in the small: SMP
                                                       Erlang VM
Current SMP VM
                                                                                                   run queue
 OTP R11/R12                                      Scheduler #1



                                                Scheduler #2




                                            Scheduler #N



 Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting          19
Scalability in the small: SMP
                                             Erlang VM
New SMP VM
  OTP R13                                  Scheduler #1 run queue

    Released
    21th April                                                                                         migration
                                       Scheduler #2                         run queue                    logic




                                      Scheduler #N                          run queue



Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting               20
Scalability in the small: SMP
                                          Multiple
                                         run queues



                                                          Speedup: Ca 0.43 * N @ 32 cores
                                                                               Memory allocation locks
                                                                                   dominate...


                                                    Single
                                                  run queue




• Speedup of ”Big Bang” on a Tilera Tile64 chip (R13A)
  • 1000 processes, all talking to each other
 Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting    21
Scalability in the small: SMP
                                  Shift in Bottlenecks

• All scalable Erlang systems were stress tested
    for CPU usage
    for network usage
• With SMP hardware we must stress test for memory usage
• In the typical SMP system, the bottleneck has shifted from
  the CPU to the memory




Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   22
Scalability in the small: SMP
                          Death by a thousand cuts

• Many requests that generate short spikes in memory usage
• Limit or serialize those requests
• More on this in coming paper from CTO Ulf Wiger

loop(State) ->
  receive
   {request, typeA, Data} ->
       Data1 = allocate_lots_of_memory(Data),
        a_server ! {request, typeA, self()},
      receive
          {answer, …

Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   23
Questions




                                                   ???


Erlang and Scalability   Percona Performance Conference © 2009 -2009, Erlang Training and Consulting   24

More Related Content

PDF
Simulating inventory management ate the GATE LNG import terminal
PDF
High Performance Erlang
PDF
In-country Review: Underlying Mines and Added Value
PDF
BGP Error Handling (NANOG 51)
PDF
Обзор продуктов IBM Rational
KEY
Agile Evolution with Kanban
PDF
Re usable continuous-time analog sva assertions
PDF
Barcamp 12 mei 2011 - Pearl chain
Simulating inventory management ate the GATE LNG import terminal
High Performance Erlang
In-country Review: Underlying Mines and Added Value
BGP Error Handling (NANOG 51)
Обзор продуктов IBM Rational
Agile Evolution with Kanban
Re usable continuous-time analog sva assertions
Barcamp 12 mei 2011 - Pearl chain

What's hot (8)

PDF
Integrating Proof and Testing in Verification Strategies for Safety Critical ...
PDF
Large customers want postgresql too !!
PDF
Khan and morrison_dq207
PDF
Re usable continuous-time analog sva assertions - slides
PDF
Advancing OpenFabrics Interfaces
PDF
New integrations for synergy and change - Sean Innes
PDF
Multi stage filtering process diagram 11 stages proto typing power point temp...
PDF
Integrating Proof and Testing in Verification Strategies for Safety Critical ...
Large customers want postgresql too !!
Khan and morrison_dq207
Re usable continuous-time analog sva assertions - slides
Advancing OpenFabrics Interfaces
New integrations for synergy and change - Sean Innes
Multi stage filtering process diagram 11 stages proto typing power point temp...
Ad

Similar to Erlang and Scalability (20)

PDF
Thinking in a Highly Concurrent, Mostly-functional Language - Cesarini
PDF
The design and implementation of a scalable concurrent virtual machine (Rober...
PDF
The design and implementation of a scalable concurrent virtual machine (Rober...
ODP
An introduction to erlang
PDF
So I used Erlang... is my system as scalable as they say it'd be?
PPT
Erlang OTP
PDF
Erlang in 10 minutes
PDF
Erlang: Software for a Concurrent world
PDF
NDC London 2014: Erlang Patterns Matching Business Needs
PDF
Keynote joearmstrong
PPT
Erlang For Five Nines
PPT
Productivity Gains in Erlang
ODP
erlang at hover.in , Devcamp Blr 09
PPTX
Providing fault tolerance in extreme scale parallel applications
PDF
Sly and the RoarVM: Exploring the Manycore Future of Programming
PDF
Scalable Networking
PDF
Erlang, the big switch in social games
PDF
Erlang factory SF 2011 "Erlang and the big switch in social games"
KEY
Erjang - A journey into Erlang-land
PDF
2003 scalable networking - unknown
Thinking in a Highly Concurrent, Mostly-functional Language - Cesarini
The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...
An introduction to erlang
So I used Erlang... is my system as scalable as they say it'd be?
Erlang OTP
Erlang in 10 minutes
Erlang: Software for a Concurrent world
NDC London 2014: Erlang Patterns Matching Business Needs
Keynote joearmstrong
Erlang For Five Nines
Productivity Gains in Erlang
erlang at hover.in , Devcamp Blr 09
Providing fault tolerance in extreme scale parallel applications
Sly and the RoarVM: Exploring the Manycore Future of Programming
Scalable Networking
Erlang, the big switch in social games
Erlang factory SF 2011 "Erlang and the big switch in social games"
Erjang - A journey into Erlang-land
2003 scalable networking - unknown
Ad

Recently uploaded (20)

PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Approach and Philosophy of On baking technology
PDF
Empathic Computing: Creating Shared Understanding
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Getting Started with Data Integration: FME Form 101
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Machine Learning_overview_presentation.pptx
PPT
Teaching material agriculture food technology
PDF
Mushroom cultivation and it's methods.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Network Security Unit 5.pdf for BCA BBA.
Diabetes mellitus diagnosis method based random forest with bat algorithm
NewMind AI Weekly Chronicles - August'25-Week II
Programs and apps: productivity, graphics, security and other tools
Approach and Philosophy of On baking technology
Empathic Computing: Creating Shared Understanding
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Advanced methodologies resolving dimensionality complications for autism neur...
SOPHOS-XG Firewall Administrator PPT.pptx
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Getting Started with Data Integration: FME Form 101
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Machine Learning_overview_presentation.pptx
Teaching material agriculture food technology
Mushroom cultivation and it's methods.pdf
Unlocking AI with Model Context Protocol (MCP)
Encapsulation_ Review paper, used for researhc scholars
Group 1 Presentation -Planning and Decision Making .pptx

Erlang and Scalability

  • 1. Erlang and Scalability Percona Performance 2009 Jan Henry Nystrom henry@erlang-consulting.com
  • 2. Introduction • Scalability Killers • Design Decisions – Language and Yours • Thinking Scalable/Parallel • Code for the correct case • Rules of Thumb • Scalability in the small: SMP Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 2
  • 3. Scalability Killers • Synchronization • Resource contention Synchronization Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 3
  • 4. Design Decisions No sharing • Processes • Encapsulation • No implicit synchronization Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 4
  • 5. Design Decisions No implicit synchronization • Spawn always succeed • Sending always succeed • Random access message buffer • Fire and forget unless you need the synchronization Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 5
  • 6. Design Decisions Concurrency oriented programming • Concurrency support an integral part of the language • Distribution support • Sets the focus firmly on the concurrent tasks • Code for the correct case • Clear Code Clarity is King! I rather try to get clear code correct than correct code clear Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 6
  • 7. Thinking Scalable/Parallel List length: Obviously Linear 4 3 2 1 0: But not when you have n processors? Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 7
  • 8. Thinking Scalable/Parallel List length: O(logN) with sufficient processors 4 2 2 1 1 1 1 Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 8
  • 9. Thinking Scalable/Parallel In the Erlang setting • Do not introduce unneeded synchronization • Remember processes are cheap • Do not introduce unneeded synchronization • A terminated process is all garbage • Do not introduce unneeded synchronization Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 9
  • 10. Code for the Correct Case request set timer set timer request request set timer r answe release timer check a n sw er release timer w er check a ns release timer check Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 10
  • 11. Code for the Correct Case request set timer request request r answe release timer check Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 11
  • 12. Rules of Thumb • Rule 1 - All independent tasks should be processes • Rule 2 - Do not invent concurrency that is not there! f() g() h(g(f())) h(g(f())) h(g(f())) h(g(f())) h() Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 12
  • 13. Scalability in the small: SMP Erlang SMP ”Credo” SMP should be transparent to the programmer in much the same way as Erlang Distribution • You shouldn’t have to think about it ...but sometimes you must • Use SMP mainly for stuff that you’d make concurrent anyway • Erlang uses concurrency as a structuring principle • Model for the natural concurrency in your problem Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 13
  • 14. Scalability in the small: SMP ”Big bang” benchmark on Sunfire T2000 • Erlang on multicore 1 scheduler • SMP prototype ‘97, First OTP release May ‘06. • Mid -06 benchmark mimicking call handling (axdmark) on the (experimental) SMP emulator. Observed speedup/core: 0.95 • First Ericsson product (TGC) released on SMP Erlang in Q207. 16 schedulers Simultaneous processes Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 14
  • 15. Scalability in the small: SMP Case Study: Telephony Gateway Controller AXE TGC • Mediates between legacy telephony and multimedia networks. • Hugely complex state machines • + massive concurrency. GW GW GW • Developed in Erlang. • Multicore version shipped to customer Q207. • Porting from 1-core PPC to 2-core Intel took < 1 man-year (including testing). Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 15
  • 16. Scalability in the small: SMP Case Study: Telephony Gateway Controller Traffic IS/GCP IS/GEP IS/GEP AXD AXD scenario 1slot/board Dual core Dual core CPB5 CPB6 One core Two cores running running 2slots/board 2slots/board POTS-POTS X call/sec 2.3X call/sec 4.3X call/sec 0.4X 2.1X call/sec /AGW OTP R11_3 call/sec One core used beta+patches ISUP-ISUP /Inter 3.6X call/sec 7.7X call/sec 13X call/sec 1.55X 7.6X call/sec MGW OTP R11_3 call/sec One core used beta+patches ISUP-ISUP /Intra 5.5X call/sec 26X call/sec 3.17X 14X call/sec MGW call/sec Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 16
  • 17. Scalability in the small: SMP Speedup on 4 Hyper Threaded Pentium4 4.5 4 3.96 3.79 3.5 3.63 Speddup 3 3.11 2.73 2.5 2 1.92 2.05 1.5 1 1 0.5 0 1 2 3 4 5 6 7 8 • Chatty # Schedulers • 1000 processes created • Each process randomly sends req/recieves ack from all other processes Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 17
  • 18. Scalability in the small: SMP Erlang VM non-SMP VM run queue Scheduler Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 18
  • 19. Scalability in the small: SMP Erlang VM Current SMP VM run queue OTP R11/R12 Scheduler #1 Scheduler #2 Scheduler #N Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 19
  • 20. Scalability in the small: SMP Erlang VM New SMP VM OTP R13 Scheduler #1 run queue Released 21th April migration Scheduler #2 run queue logic Scheduler #N run queue Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 20
  • 21. Scalability in the small: SMP Multiple run queues Speedup: Ca 0.43 * N @ 32 cores Memory allocation locks dominate... Single run queue • Speedup of ”Big Bang” on a Tilera Tile64 chip (R13A) • 1000 processes, all talking to each other Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 21
  • 22. Scalability in the small: SMP Shift in Bottlenecks • All scalable Erlang systems were stress tested  for CPU usage  for network usage • With SMP hardware we must stress test for memory usage • In the typical SMP system, the bottleneck has shifted from the CPU to the memory Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 22
  • 23. Scalability in the small: SMP Death by a thousand cuts • Many requests that generate short spikes in memory usage • Limit or serialize those requests • More on this in coming paper from CTO Ulf Wiger loop(State) -> receive {request, typeA, Data} -> Data1 = allocate_lots_of_memory(Data), a_server ! {request, typeA, self()}, receive {answer, … Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 23
  • 24. Questions ??? Erlang and Scalability Percona Performance Conference © 2009 -2009, Erlang Training and Consulting 24