SlideShare a Scribd company logo
1 of 39
Download to read offline
Thinking in a Highly Concurrent,
Mostly-functional Language
Code Motion
Rome, April 11th 2014
Francesco Cesarini
Founder & Technical Director
@francescoC
francesco@erlang-solutions.com
Thinking in a Highly Concurrent,
Mostly-functional Language
QCON London, March 12th, 2009
Erlang Training and Consulting Ltd
Francesco Cesarini
francesco@erlang-consulting.com
© 2014 – Erlang Solutions Ltd
counter_loop(Count) ->
receive
increment ->
counter_loop(Count + 1);
{count, To} ->
To ! {count, Count},
counter_loop(Count)
end.
Erlang
© 2014 – Erlang Solutions Ltd
Tim Bray, Director of Web Technologies – Sun Microsystems
© 2014 – Erlang Solutions Ltd
Tim Bray, Director of Web Technologies – Sun Microsystems
© 2014 – Erlang Solutions Ltd
Syntax
© 2014 – Erlang Solutions Ltd
Concurrency
© 2014 – Erlang Solutions Ltd
activity(Joe,75,1024)
Erlang Highlights: Concurrency
Creating a new process using spawn
-module(ex3).
-export([activity/3]).
activity(Name,Pos,Size) ->
…………
Pid = spawn(ex3,activity,[Joe,75,1024])
© 2014 – Erlang Solutions Ltd
Erlang Highlights: Concurrency
Processes communicate by asynchronous
message passing
Pid ! {data,12,13}
receive
{start} -> ………
{stop} -> ………
{data,X,Y} -> ………
end
receive
{start} -> ………
{stop} -> ………
{data,X,Y} -> ………
end
© 2014 – Erlang Solutions Ltd
Products: AXD301 Switch - 1996
A Telephony-Class, scalable (10 –
160 GBps) ATM switch
Designed from scratch in less than
3 years
AXD 301 Success factors:
!  Competent organisation and people
!  Efficient process
!  Excellent technology (e.g. Erlang/OTP)
© 2014 – Erlang Solutions Ltd
Products: AXD301 Switch - 1996
Erlang: ca 1.5 million lines of code
!  Nearly all the complex control logic
!  Operation & Maintenance
!  Web server and runtime HTML/
JavaScript generation
C/C++: ca 500k lines of code
!  Third party software
!  Low-level protocol drivers
!  Device drivers
Java: ca 13k lines of code
!  Operator GUI applets
© 2014 – Erlang Solutions Ltd
Concurrency Modeling
Model for the natural
concurrency in your problem
In the old days, processes were
a critical resource
!  Rationing processes led to complex and
unmanageable code
Nowadays, processes are very
cheap: if you need a process –
create one!
Example: AXD301 process model
1st prototype:
6 processes/call
2 processes/call
1 process/all calls
2 processes/
call transaction
4-5 processes/
call transaction
© 2014 – Erlang Solutions Ltd
1+1 Redundancy – Good ol’ Telecoms
Data path
Control signalling
Device board
Control plane
User plane
Active Standby
Stable-state
replication
~ 35 000 calls
per processor pair
No ongoing sessions
lost at “failover”
© 2014 – Erlang Solutions Ltd
First IM Proxy Prototype - 2000
multiplexing
multiplexingde-multiplexing
de-multiplexing
state/error handling
users
sockets listener
sockets
© 2014 – Erlang Solutions Ltd
First IM Proxy Prototype - 2000
multiplexing
multiplexingde-multiplexing
state/error handling
users
sockets listener
sockets supervisor
simple 1-1
© 2014 – Erlang Solutions Ltd
Products: EjabberD IM Server - 2002
A distributed XMPP server
Started as an Open Source
Project by Alexey Shchepin
Commercially Supported by
Process-One (Paris)
!  40% of the XMPP IM market
!  Used as a transport layer
!  Manages 30,000 users / node
© 2014 – Erlang Solutions Ltd
Products: EjabberD IM Server - 2002
A distributed XMPP server
Started as an Open Source
Project by Alexey Shchepin
Commercially Supported by
Process-One (Paris)
!  40% of the XMPP IM market
!  Used as a transport layer
!  Manages 30,000 users / node
MongooseIM is a fork (2014)
!  Open Source, supported by Erlang Solutions
!  Used for Messaging and Device Management
!  1 million users / node
© 2014 – Erlang Solutions Ltd
Fully Replicated Cluster – Ejabberd 2002
s2s
muc
c2s
sm
s2s
muc
c2s
sm
s2s
muc
c2s
sm
Fully replicated
Mnesia database
Client must re-connect
if one of its session
handlers dies
Loadbalancer
© 2014 – Erlang Solutions Ltd
Share-nothing Architecture – Messaging Gateway
© 2014 – Erlang Solutions Ltd
Share-nothing Architecture – Messaging Gateway
DBMS
POP
IMAP
SMTP
...
Router/FE Router/FE Router/FE Router/FE
POP
IMAP
SMTP
...
POP
IMAP
SMTP
...
tunnel tunnel
HTTP
HTTP
© 2014 – Erlang Solutions Ltd
Erlang Concurrency Under Stress – Pre-SMPThroughput/Second
Simultaneous Requests
100% CPU
Line 1 Balanced Erlang System
Line 2 Erlang System with bottle necks
© 2014 – Erlang Solutions Ltd
Erlang Concurrency Under Stress – Pre-SMP
YAWS Throughput
(KBytes/second)
Simultaneous Requests
© 2014 – Erlang Solutions Ltd
Erlang Concurrency Under Stress – Post-SMP
© 2014 – Erlang Solutions Ltd
Stress Tests With SMP
I/O Starvation
TCP/IP Congestion
Memory Spikes
Timeout Fine-tuning
OS Limitations
ERTS Configuration Flags
Shut down Audit Logs
© 2014 – Erlang Solutions Ltd
SMP bottlenecks – pre 2008
© 2014 – Erlang Solutions Ltd
SMP bottlenecks – post 2008
Erlang VM
Scheduler #1
Scheduler #2
run queue
Scheduler #2
Scheduler #N
run queue
run queue
migration
logic
migration
logic
© 2014 – Erlang Solutions Ltd
Big Bang Benchmark – post 2008
" 
© 2014 – Erlang Solutions Ltd
Mandelbrot- 2013
" 
© 2014 – Erlang Solutions Ltd
Now for the Bottlenecks
" 
© 2014 – Erlang Solutions Ltd
Now for the Bottlenecks
" 
© 2014 – Erlang Solutions Ltd
Now for the Bottlenecks
© 2014 – Erlang Solutions Ltd
Now for the Bottlenecks www.concurix.com
© 2014 – Erlang Solutions Ltd
Now for the Bottlenecks
© 2014 – Erlang Solutions Ltd
Clusters and SD Erlang
© 2014 – Erlang Solutions Ltd
Riak and other scalable architectures
© 2014 – Erlang Solutions Ltd
“To scale the radical concurrency-oriented
programming paradigm to build reliable
general-purpose software, such as server-
based systems, on massively parallel
machines (10^5 cores).”
! ! ! ! ! !"
Release Statement of Aims
© 2014 – Erlang Solutions Ltd
“Limitations exist on all levels. You would not
want an Erlang VM to run with 10^5
schedulers.”
! ! ! ! ! !"
Release
© 2014 – Erlang Solutions Ltd
Release
Push the responsibility for scalability from the programmer to
the VM
Analyze performance and scalability
Identify bottlenecks and prioritize changes and extensions
Tackle well-known scalability issues
Ets tables (shared global data structure)
Message passing, copying and frequently communicating
processes
© 2014 – Erlang Solutions Ltd

More Related Content

Similar to Thinking in a Highly Concurrent, Mostly-functional Language - Cesarini

10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
Mullaiselvan Mohan
 
Introduction To Erlang Final
Introduction To Erlang   FinalIntroduction To Erlang   Final
Introduction To Erlang Final
SinarShebl
 
The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...
Ontico
 
The Verification Methodology Landscape
The Verification Methodology LandscapeThe Verification Methodology Landscape
The Verification Methodology Landscape
DVClub
 
Erlang及其应用
Erlang及其应用Erlang及其应用
Erlang及其应用
Feng Yu
 
The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...
Ontico
 

Similar to Thinking in a Highly Concurrent, Mostly-functional Language - Cesarini (20)

NDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business NeedsNDC London 2014: Erlang Patterns Matching Business Needs
NDC London 2014: Erlang Patterns Matching Business Needs
 
Erlang latest version & opensource projects
Erlang latest version & opensource projectsErlang latest version & opensource projects
Erlang latest version & opensource projects
 
DhevendranResume
DhevendranResumeDhevendranResume
DhevendranResume
 
Erlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco CesariniErlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco Cesarini
 
EMC Atmos for service providers
EMC Atmos for service providersEMC Atmos for service providers
EMC Atmos for service providers
 
Machine Learning With Spark
Machine Learning With SparkMachine Learning With Spark
Machine Learning With Spark
 
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
 
NTTs Journey with Openstack-final
NTTs Journey with Openstack-finalNTTs Journey with Openstack-final
NTTs Journey with Openstack-final
 
Introduction To Erlang Final
Introduction To Erlang   FinalIntroduction To Erlang   Final
Introduction To Erlang Final
 
The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...
 
The Verification Methodology Landscape
The Verification Methodology LandscapeThe Verification Methodology Landscape
The Verification Methodology Landscape
 
Manufacturing Webinar AMS
Manufacturing Webinar AMSManufacturing Webinar AMS
Manufacturing Webinar AMS
 
Cloudtestr Webinar - 5 Ways to Maximize Test Automation Success
Cloudtestr Webinar - 5 Ways to Maximize Test Automation Success Cloudtestr Webinar - 5 Ways to Maximize Test Automation Success
Cloudtestr Webinar - 5 Ways to Maximize Test Automation Success
 
Erlang及其应用
Erlang及其应用Erlang及其应用
Erlang及其应用
 
The design and implementation of a scalable concurrent virtual machine (Rober...
The design and implementation of a scalable concurrent virtual machine (Rober...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
An introduction to erlangAn introduction to erlang
An introduction to erlang
 
T01520010220104023 t0152 pert 10
T01520010220104023 t0152 pert 10T01520010220104023 t0152 pert 10
T01520010220104023 t0152 pert 10
 
Mool - Automated Log Analysis using Data Science and ML
Mool - Automated Log Analysis using Data Science and MLMool - Automated Log Analysis using Data Science and ML
Mool - Automated Log Analysis using Data Science and ML
 
Vishal_Resume
Vishal_ResumeVishal_Resume
Vishal_Resume
 
CV (eng) Thomas Lindström
CV (eng) Thomas LindströmCV (eng) Thomas Lindström
CV (eng) Thomas Lindström
 

More from Codemotion

More from Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 

Thinking in a Highly Concurrent, Mostly-functional Language - Cesarini

  • 1. Thinking in a Highly Concurrent, Mostly-functional Language Code Motion Rome, April 11th 2014 Francesco Cesarini Founder & Technical Director @francescoC francesco@erlang-solutions.com
  • 2. Thinking in a Highly Concurrent, Mostly-functional Language QCON London, March 12th, 2009 Erlang Training and Consulting Ltd Francesco Cesarini francesco@erlang-consulting.com
  • 3. © 2014 – Erlang Solutions Ltd counter_loop(Count) -> receive increment -> counter_loop(Count + 1); {count, To} -> To ! {count, Count}, counter_loop(Count) end. Erlang
  • 4. © 2014 – Erlang Solutions Ltd Tim Bray, Director of Web Technologies – Sun Microsystems
  • 5. © 2014 – Erlang Solutions Ltd Tim Bray, Director of Web Technologies – Sun Microsystems
  • 6. © 2014 – Erlang Solutions Ltd Syntax
  • 7. © 2014 – Erlang Solutions Ltd Concurrency
  • 8. © 2014 – Erlang Solutions Ltd activity(Joe,75,1024) Erlang Highlights: Concurrency Creating a new process using spawn -module(ex3). -export([activity/3]). activity(Name,Pos,Size) -> ………… Pid = spawn(ex3,activity,[Joe,75,1024])
  • 9. © 2014 – Erlang Solutions Ltd Erlang Highlights: Concurrency Processes communicate by asynchronous message passing Pid ! {data,12,13} receive {start} -> ……… {stop} -> ……… {data,X,Y} -> ……… end receive {start} -> ……… {stop} -> ……… {data,X,Y} -> ……… end
  • 10. © 2014 – Erlang Solutions Ltd Products: AXD301 Switch - 1996 A Telephony-Class, scalable (10 – 160 GBps) ATM switch Designed from scratch in less than 3 years AXD 301 Success factors: !  Competent organisation and people !  Efficient process !  Excellent technology (e.g. Erlang/OTP)
  • 11. © 2014 – Erlang Solutions Ltd Products: AXD301 Switch - 1996 Erlang: ca 1.5 million lines of code !  Nearly all the complex control logic !  Operation & Maintenance !  Web server and runtime HTML/ JavaScript generation C/C++: ca 500k lines of code !  Third party software !  Low-level protocol drivers !  Device drivers Java: ca 13k lines of code !  Operator GUI applets
  • 12. © 2014 – Erlang Solutions Ltd Concurrency Modeling Model for the natural concurrency in your problem In the old days, processes were a critical resource !  Rationing processes led to complex and unmanageable code Nowadays, processes are very cheap: if you need a process – create one! Example: AXD301 process model 1st prototype: 6 processes/call 2 processes/call 1 process/all calls 2 processes/ call transaction 4-5 processes/ call transaction
  • 13. © 2014 – Erlang Solutions Ltd 1+1 Redundancy – Good ol’ Telecoms Data path Control signalling Device board Control plane User plane Active Standby Stable-state replication ~ 35 000 calls per processor pair No ongoing sessions lost at “failover”
  • 14. © 2014 – Erlang Solutions Ltd First IM Proxy Prototype - 2000 multiplexing multiplexingde-multiplexing de-multiplexing state/error handling users sockets listener sockets
  • 15. © 2014 – Erlang Solutions Ltd First IM Proxy Prototype - 2000 multiplexing multiplexingde-multiplexing state/error handling users sockets listener sockets supervisor simple 1-1
  • 16. © 2014 – Erlang Solutions Ltd Products: EjabberD IM Server - 2002 A distributed XMPP server Started as an Open Source Project by Alexey Shchepin Commercially Supported by Process-One (Paris) !  40% of the XMPP IM market !  Used as a transport layer !  Manages 30,000 users / node
  • 17. © 2014 – Erlang Solutions Ltd Products: EjabberD IM Server - 2002 A distributed XMPP server Started as an Open Source Project by Alexey Shchepin Commercially Supported by Process-One (Paris) !  40% of the XMPP IM market !  Used as a transport layer !  Manages 30,000 users / node MongooseIM is a fork (2014) !  Open Source, supported by Erlang Solutions !  Used for Messaging and Device Management !  1 million users / node
  • 18. © 2014 – Erlang Solutions Ltd Fully Replicated Cluster – Ejabberd 2002 s2s muc c2s sm s2s muc c2s sm s2s muc c2s sm Fully replicated Mnesia database Client must re-connect if one of its session handlers dies Loadbalancer
  • 19. © 2014 – Erlang Solutions Ltd Share-nothing Architecture – Messaging Gateway
  • 20. © 2014 – Erlang Solutions Ltd Share-nothing Architecture – Messaging Gateway DBMS POP IMAP SMTP ... Router/FE Router/FE Router/FE Router/FE POP IMAP SMTP ... POP IMAP SMTP ... tunnel tunnel HTTP HTTP
  • 21. © 2014 – Erlang Solutions Ltd Erlang Concurrency Under Stress – Pre-SMPThroughput/Second Simultaneous Requests 100% CPU Line 1 Balanced Erlang System Line 2 Erlang System with bottle necks
  • 22. © 2014 – Erlang Solutions Ltd Erlang Concurrency Under Stress – Pre-SMP YAWS Throughput (KBytes/second) Simultaneous Requests
  • 23. © 2014 – Erlang Solutions Ltd Erlang Concurrency Under Stress – Post-SMP
  • 24. © 2014 – Erlang Solutions Ltd Stress Tests With SMP I/O Starvation TCP/IP Congestion Memory Spikes Timeout Fine-tuning OS Limitations ERTS Configuration Flags Shut down Audit Logs
  • 25. © 2014 – Erlang Solutions Ltd SMP bottlenecks – pre 2008
  • 26. © 2014 – Erlang Solutions Ltd SMP bottlenecks – post 2008 Erlang VM Scheduler #1 Scheduler #2 run queue Scheduler #2 Scheduler #N run queue run queue migration logic migration logic
  • 27. © 2014 – Erlang Solutions Ltd Big Bang Benchmark – post 2008 " 
  • 28. © 2014 – Erlang Solutions Ltd Mandelbrot- 2013 " 
  • 29. © 2014 – Erlang Solutions Ltd Now for the Bottlenecks " 
  • 30. © 2014 – Erlang Solutions Ltd Now for the Bottlenecks " 
  • 31. © 2014 – Erlang Solutions Ltd Now for the Bottlenecks
  • 32. © 2014 – Erlang Solutions Ltd Now for the Bottlenecks www.concurix.com
  • 33. © 2014 – Erlang Solutions Ltd Now for the Bottlenecks
  • 34. © 2014 – Erlang Solutions Ltd Clusters and SD Erlang
  • 35. © 2014 – Erlang Solutions Ltd Riak and other scalable architectures
  • 36. © 2014 – Erlang Solutions Ltd “To scale the radical concurrency-oriented programming paradigm to build reliable general-purpose software, such as server- based systems, on massively parallel machines (10^5 cores).” ! ! ! ! ! !" Release Statement of Aims
  • 37. © 2014 – Erlang Solutions Ltd “Limitations exist on all levels. You would not want an Erlang VM to run with 10^5 schedulers.” ! ! ! ! ! !" Release
  • 38. © 2014 – Erlang Solutions Ltd Release Push the responsibility for scalability from the programmer to the VM Analyze performance and scalability Identify bottlenecks and prioritize changes and extensions Tackle well-known scalability issues Ets tables (shared global data structure) Message passing, copying and frequently communicating processes
  • 39. © 2014 – Erlang Solutions Ltd