Pharo VM Performance

Pharo
PharoMaître de conférences à Pharo
Pharo VM
performance
Clement Bera
Myself
• Clément Béra
• 2011-2013: Engineer on the Pharo VM
• 2013-2017: PhD student
• Optimisations of the Pharo VM JIT compiler
0	
2	
4	
6	
8	
10	
12	
14	
16	
Interpreter	
2005	
Stack							
2009	
Cog	V1					
2010	
Cog	V2						
2011	
Spur								
2014	
Sista							
future	
Binary tree benchmark
0	
2	
4	
6	
8	
10	
12	
14	
16	
Interpreter	
2005	
Stack							
2009	
Cog	V1					
2010	
Cog	V2						
2011	
Spur								
2014	
Sista							
future	
Binary tree benchmark
Pharo 5
2016
Plan
• Pharo 5 (stable)
• First time we out benched most competitors
• Pharo 6 (released next week ???)
• Pharo 7
Code execution GC
GC
• Pharo 5
• New memory manager Spur
• Pharo 6
• New compactor
• Pharo 7
• Incremental GC ???
Pharo 5: Spur
• Efficient scavenges
• In most applications, most GC time is now in
scavenges
Code execution GC
Pharo 6: New compactor
Loading a 200 Mb Moose Model in 250 Mb image
February April
Total time 2 min
1 min
2 sec
Time in
Full GC
1 min 2 sec
Full GC
avg pause
15 sec 0.5 sec
Time in
scavenge
15 sec 15 sec
Pharo 6: New compactor
Loading a 200 Mb Moose Model in 250 Mb image
February April
Total time 2 min
1 min
2 sec
Time in
Full GC
1 min 2 sec
Full GC
avg pause
15 sec 0.5 sec
Time in
scavenge
15 sec 15 sec
<- GC tuning gets
it down to 5 sec
Pharo 7: Incremental GC ??
• Full GC pauses: ~500 ms at ~500Mb
• Java default GC at 200ms soft real time
• Solution
• Incremental marking
• Incremental compaction
Code execution
• Pharo 5:
• Spur got 1.8x
• Pharo 6:
• Polishing and micro-optimisations
• Pharo 7:
• Sista gets 1.5x-5x
Pharo 5: Spur 1.8x
• Class table speeds-up look-up caches
• New immediate objects
• 22 bits hash
Pharo 6
• Register allocation improvements
• Two path compilation
• Frameless code for setter-like methods
Sista: Pharo 7 ?
• Program introspection
• Speculate on types based on previous runs
• Optimize frequently used code
• Deoptimize and reoptimize code incorrectly
speculated
Goals
• Program readability
• Performance
Program readability
1 to: array size do: [ :i | (array at: i) yourself ].
array do: [ :elem | elem yourself ].
array do: #yourself.
Program readability
1 to: array size do: [ :i | (array at: i) yourself ].
array do: [ :elem | elem yourself ].
array do: #yourself.
0 2 5 20
87M/
sec
28M/
sec
13M/
sec
3.7M
/sec
15M/
sec
21M/
sec
10M/
sec
3.9M
/sec
94M/
sec
40M/
sec
22M/
sec
6.5M
/sec
Performance
0	 1	 2	 3	 4	 5	 6	
A*	
ThreadRing	
SpectralNorm	
JSJSON	
BinaryTree	
DeltaBlue	
Richards	
TCAP	
Kmeans	
Sista	
Pharo
Getting stable
• Support most development workflow
• Support image recompilation
• Integration has started
In-image design
Smalltalk image
Virtual machine
Cogit
CompiledCode to native code
Machine-specific optimisations
Scorch
CompiledCode to CompiledCode
Smalltalk-specific optimisations
CompiledCode
(persisted across start-ups)
native functions
(discarded on shut-down)
Baseline JIT
Optimising JIT
Missing
• IDE support
• Debugger
• Methods to show
• Stability, testing
Are you interested ?
• Incremental GC ?
• VM performance ?
• VM features ?
• Come and talk to us !
We are looking for…
• Use-cases showing what to improve
• Large real-world benchmarks
• Contributors
• Investment
Conclusion
• Pharo 5: Fastest VM
• Pharo 6: Polishing
• Pharo 7: Going further
1 sur 25

Recommandé

What is (not) Pharo 8? par
What is (not) Pharo 8?What is (not) Pharo 8?
What is (not) Pharo 8?FAST
618 vues26 diapositives
Docker and Pharo @ZWEIDENKER par
Docker and Pharo @ZWEIDENKERDocker and Pharo @ZWEIDENKER
Docker and Pharo @ZWEIDENKERZWEIDENKER GmbH
38.4K vues32 diapositives
Raspberry and Pharo par
Raspberry and PharoRaspberry and Pharo
Raspberry and PharoPharo
1.6K vues18 diapositives
PHARO IOT par
PHARO IOTPHARO IOT
PHARO IOTMarcus Denker
2.9K vues38 diapositives
XmppTalk par
XmppTalkXmppTalk
XmppTalkPharo
1.9K vues20 diapositives
Pharo 64bits par
Pharo 64bitsPharo 64bits
Pharo 64bitsPharo
686 vues13 diapositives

Contenu connexe

Tendances

perlcc made easy or, how to make a CGI Moose app par
perlcc made easy or, how to make a CGI Moose appperlcc made easy or, how to make a CGI Moose app
perlcc made easy or, how to make a CGI Moose appcPanel
1.9K vues24 diapositives
App::RemoteCommand par
App::RemoteCommandApp::RemoteCommand
App::RemoteCommandShoichi Kaji
2.9K vues12 diapositives
Writing Better Haskell par
Writing Better HaskellWriting Better Haskell
Writing Better Haskellnkpart
544 vues26 diapositives
走向开源:提交CPAN模块Step by Step par
走向开源:提交CPAN模块Step by Step走向开源:提交CPAN模块Step by Step
走向开源:提交CPAN模块Step by Steppluschen
474 vues37 diapositives
2600Hz - The Next Wave - KazooCon 2015 par
2600Hz - The Next Wave - KazooCon 2015 2600Hz - The Next Wave - KazooCon 2015
2600Hz - The Next Wave - KazooCon 2015 2600Hz
3K vues41 diapositives
Pharo Status Fosdem 2015 par
Pharo Status Fosdem 2015Pharo Status Fosdem 2015
Pharo Status Fosdem 2015Marcus Denker
6.9K vues40 diapositives

Tendances(20)

perlcc made easy or, how to make a CGI Moose app par cPanel
perlcc made easy or, how to make a CGI Moose appperlcc made easy or, how to make a CGI Moose app
perlcc made easy or, how to make a CGI Moose app
cPanel1.9K vues
Writing Better Haskell par nkpart
Writing Better HaskellWriting Better Haskell
Writing Better Haskell
nkpart544 vues
走向开源:提交CPAN模块Step by Step par pluschen
走向开源:提交CPAN模块Step by Step走向开源:提交CPAN模块Step by Step
走向开源:提交CPAN模块Step by Step
pluschen474 vues
2600Hz - The Next Wave - KazooCon 2015 par 2600Hz
2600Hz - The Next Wave - KazooCon 2015 2600Hz - The Next Wave - KazooCon 2015
2600Hz - The Next Wave - KazooCon 2015
2600Hz3K vues
Gotchas using Terraform in a secure delivery pipeline par Anton Babenko
Gotchas using Terraform in a secure delivery pipelineGotchas using Terraform in a secure delivery pipeline
Gotchas using Terraform in a secure delivery pipeline
Anton Babenko1.5K vues
What you see is what you get for AWS infrastructure par Anton Babenko
What you see is what you get for AWS infrastructureWhat you see is what you get for AWS infrastructure
What you see is what you get for AWS infrastructure
Anton Babenko490 vues
PharoDAYS 2015: Pharo Status - by Markus Denker par Pharo
PharoDAYS 2015: Pharo Status - by Markus DenkerPharoDAYS 2015: Pharo Status - by Markus Denker
PharoDAYS 2015: Pharo Status - by Markus Denker
Pharo811 vues
Asterisk 11to16, What could go wrong par Jöran Vinzens
Asterisk 11to16, What could go wrongAsterisk 11to16, What could go wrong
Asterisk 11to16, What could go wrong
Jöran Vinzens1.5K vues
Foreman - Process manager for applications with multiple components par Stoyan Zhekov
Foreman - Process manager for applications with multiple componentsForeman - Process manager for applications with multiple components
Foreman - Process manager for applications with multiple components
Stoyan Zhekov2.8K vues
Terraform modules and (some of) best practices par Anton Babenko
Terraform modules and (some of) best practicesTerraform modules and (some of) best practices
Terraform modules and (some of) best practices
Anton Babenko609 vues
State in stateless serverless functions par Alex Pshul
State in stateless serverless functionsState in stateless serverless functions
State in stateless serverless functions
Alex Pshul23 vues
Terraform modules and (some of) best practices par Anton Babenko
Terraform modules and (some of) best practicesTerraform modules and (some of) best practices
Terraform modules and (some of) best practices
Anton Babenko650 vues
Ruby 1.9 And Rails 3.0 par ArrrrCamp
Ruby 1.9 And Rails 3.0Ruby 1.9 And Rails 3.0
Ruby 1.9 And Rails 3.0
ArrrrCamp1.4K vues

Similaire à Pharo VM Performance

これからのPerlプロダクトのかたち(YAPC::Asia 2013) par
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)goccy
7.7K vues40 diapositives
Pharo Status ESUG 2014 par
Pharo Status ESUG 2014Pharo Status ESUG 2014
Pharo Status ESUG 2014ESUG
550 vues43 diapositives
Benchmarking at Parse par
Benchmarking at ParseBenchmarking at Parse
Benchmarking at ParseTravis Redman
1.2K vues35 diapositives
Advanced Benchmarking at Parse par
Advanced Benchmarking at ParseAdvanced Benchmarking at Parse
Advanced Benchmarking at ParseMongoDB
1.8K vues35 diapositives
Updated non-lab version of Level Up. Delivered at LOPSA-East, May 3, 2014. par
Updated non-lab version of Level Up. Delivered at LOPSA-East, May 3, 2014.Updated non-lab version of Level Up. Delivered at LOPSA-East, May 3, 2014.
Updated non-lab version of Level Up. Delivered at LOPSA-East, May 3, 2014.Mandi Walls
962 vues87 diapositives
A brief to PHP 7.3 par
A brief to PHP 7.3A brief to PHP 7.3
A brief to PHP 7.3Xinchen Hui
815 vues17 diapositives

Similaire à Pharo VM Performance(20)

これからのPerlプロダクトのかたち(YAPC::Asia 2013) par goccy
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
goccy7.7K vues
Pharo Status ESUG 2014 par ESUG
Pharo Status ESUG 2014Pharo Status ESUG 2014
Pharo Status ESUG 2014
ESUG550 vues
Advanced Benchmarking at Parse par MongoDB
Advanced Benchmarking at ParseAdvanced Benchmarking at Parse
Advanced Benchmarking at Parse
MongoDB1.8K vues
Updated non-lab version of Level Up. Delivered at LOPSA-East, May 3, 2014. par Mandi Walls
Updated non-lab version of Level Up. Delivered at LOPSA-East, May 3, 2014.Updated non-lab version of Level Up. Delivered at LOPSA-East, May 3, 2014.
Updated non-lab version of Level Up. Delivered at LOPSA-East, May 3, 2014.
Mandi Walls962 vues
Игорь Фесенко "Direction of C# as a High-Performance Language" par Fwdays
Игорь Фесенко "Direction of C# as a High-Performance Language"Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"
Fwdays1.1K vues
Sista: Improving Cog’s JIT performance par ESUG
Sista: Improving Cog’s JIT performanceSista: Improving Cog’s JIT performance
Sista: Improving Cog’s JIT performance
ESUG2.1K vues
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes par NETWAYS
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-BayesOSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
NETWAYS137 vues
Why my Go program is slow? par Inada Naoki
Why my Go program is slow?Why my Go program is slow?
Why my Go program is slow?
Inada Naoki15.5K vues
Non-Blocking Strategies for FFI par ESUG
 Non-Blocking Strategies for FFI Non-Blocking Strategies for FFI
Non-Blocking Strategies for FFI
ESUG415 vues
Pharo 10 and beyond par ESUG
 Pharo 10 and beyond Pharo 10 and beyond
Pharo 10 and beyond
ESUG126 vues
Introduction to Apache Kafka par Shiao-An Yuan
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
Shiao-An Yuan1.6K vues
44CON 2014 - Binary Protocol Analysis with CANAPE, James Forshaw par 44CON
44CON 2014 - Binary Protocol Analysis with CANAPE, James Forshaw44CON 2014 - Binary Protocol Analysis with CANAPE, James Forshaw
44CON 2014 - Binary Protocol Analysis with CANAPE, James Forshaw
44CON5.7K vues
20 x Tips to better Optimize your Flash content par Elad Elrom
20 x Tips to better Optimize your Flash content20 x Tips to better Optimize your Flash content
20 x Tips to better Optimize your Flash content
Elad Elrom3.2K vues
BKK16-308 The tool called Auto-Tuned Optimization System (ATOS) par Linaro
BKK16-308 The tool called Auto-Tuned Optimization System (ATOS)BKK16-308 The tool called Auto-Tuned Optimization System (ATOS)
BKK16-308 The tool called Auto-Tuned Optimization System (ATOS)
Linaro911 vues
Present and Future of the Pharo VM: Headless and Beyond par ESUG
 Present and Future of the Pharo VM: Headless and Beyond Present and Future of the Pharo VM: Headless and Beyond
Present and Future of the Pharo VM: Headless and Beyond
ESUG462 vues
Scratching the itch, making Scratch for the Raspberry Pie par ESUG
Scratching the itch, making Scratch for the Raspberry PieScratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry Pie
ESUG856 vues
Performance Benchmarking: Tips, Tricks, and Lessons Learned par Tim Callaghan
Performance Benchmarking: Tips, Tricks, and Lessons LearnedPerformance Benchmarking: Tips, Tricks, and Lessons Learned
Performance Benchmarking: Tips, Tricks, and Lessons Learned
Tim Callaghan1.9K vues

Plus de Pharo

Yesplan: 10 Years later par
Yesplan: 10 Years laterYesplan: 10 Years later
Yesplan: 10 Years laterPharo
2.5K vues30 diapositives
Object-Centric Debugging: a preview par
Object-Centric Debugging: a previewObject-Centric Debugging: a preview
Object-Centric Debugging: a previewPharo
911 vues35 diapositives
The future of testing in Pharo par
The future of testing in PharoThe future of testing in Pharo
The future of testing in PharoPharo
939 vues25 diapositives
Spec 2.0: The next step on desktop UI par
Spec 2.0: The next step on desktop UI Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI Pharo
1.3K vues29 diapositives
UI Testing with Spec par
 UI Testing with Spec UI Testing with Spec
UI Testing with SpecPharo
801 vues25 diapositives
Pharo 7.0 and 8.0 alpha par
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alphaPharo
768 vues26 diapositives

Plus de Pharo(20)

Yesplan: 10 Years later par Pharo
Yesplan: 10 Years laterYesplan: 10 Years later
Yesplan: 10 Years later
Pharo2.5K vues
Object-Centric Debugging: a preview par Pharo
Object-Centric Debugging: a previewObject-Centric Debugging: a preview
Object-Centric Debugging: a preview
Pharo911 vues
The future of testing in Pharo par Pharo
The future of testing in PharoThe future of testing in Pharo
The future of testing in Pharo
Pharo939 vues
Spec 2.0: The next step on desktop UI par Pharo
Spec 2.0: The next step on desktop UI Spec 2.0: The next step on desktop UI
Spec 2.0: The next step on desktop UI
Pharo1.3K vues
UI Testing with Spec par Pharo
 UI Testing with Spec UI Testing with Spec
UI Testing with Spec
Pharo801 vues
Pharo 7.0 and 8.0 alpha par Pharo
Pharo 7.0 and 8.0 alphaPharo 7.0 and 8.0 alpha
Pharo 7.0 and 8.0 alpha
Pharo768 vues
PHARO IoT: Installation Improvements and Continuous Integration par Pharo
PHARO IoT: Installation Improvements and Continuous IntegrationPHARO IoT: Installation Improvements and Continuous Integration
PHARO IoT: Installation Improvements and Continuous Integration
Pharo1.1K vues
Easy REST with OpenAPI par Pharo
Easy REST with OpenAPIEasy REST with OpenAPI
Easy REST with OpenAPI
Pharo693 vues
Comment soup with a pinch of types, served in a leaky bowl par Pharo
Comment soup with a pinch of types, served in a leaky bowlComment soup with a pinch of types, served in a leaky bowl
Comment soup with a pinch of types, served in a leaky bowl
Pharo590 vues
apart Framework: Porting from VisualWorks par Pharo
apart Framework: Porting from VisualWorksapart Framework: Porting from VisualWorks
apart Framework: Porting from VisualWorks
Pharo655 vues
A living programming environment for blockchain par Pharo
A living programming environment for blockchainA living programming environment for blockchain
A living programming environment for blockchain
Pharo904 vues
Welcome: PharoDays 2017 par Pharo
Welcome: PharoDays 2017Welcome: PharoDays 2017
Welcome: PharoDays 2017
Pharo509 vues
Pharo 6 par Pharo
Pharo 6Pharo 6
Pharo 6
Pharo904 vues
Robotic Exploration and Mapping with Pharo par Pharo
Robotic Exploration and Mapping with PharoRobotic Exploration and Mapping with Pharo
Robotic Exploration and Mapping with Pharo
Pharo705 vues
Smack: Behind the Refactorings par Pharo
Smack: Behind the RefactoringsSmack: Behind the Refactorings
Smack: Behind the Refactorings
Pharo577 vues
Git with Style par Pharo
Git with StyleGit with Style
Git with Style
Pharo378 vues
Pharo JS par Pharo
Pharo JSPharo JS
Pharo JS
Pharo421 vues
Seaside & ReactJS par Pharo
Seaside & ReactJSSeaside & ReactJS
Seaside & ReactJS
Pharo587 vues
Material Design and Seaside par Pharo
Material Design and SeasideMaterial Design and Seaside
Material Design and Seaside
Pharo387 vues
Calypso Browser par Pharo
Calypso BrowserCalypso Browser
Calypso Browser
Pharo273 vues

Dernier

The Era of Large Language Models.pptx par
The Era of Large Language Models.pptxThe Era of Large Language Models.pptx
The Era of Large Language Models.pptxAbdulVahedShaik
6 vues9 diapositives
EV Charging App Case par
EV Charging App Case EV Charging App Case
EV Charging App Case iCoderz Solutions
5 vues1 diapositive
ShortStory_qlora.pptx par
ShortStory_qlora.pptxShortStory_qlora.pptx
ShortStory_qlora.pptxpranathikrishna22
5 vues10 diapositives
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action par
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionMárton Kodok
6 vues55 diapositives
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ... par
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...Donato Onofri
860 vues34 diapositives
AI and Ml presentation .pptx par
AI and Ml presentation .pptxAI and Ml presentation .pptx
AI and Ml presentation .pptxFayazAli87
12 vues15 diapositives

Dernier(20)

Gen Apps on Google Cloud PaLM2 and Codey APIs in Action par Márton Kodok
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Márton Kodok6 vues
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ... par Donato Onofri
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Donato Onofri860 vues
AI and Ml presentation .pptx par FayazAli87
AI and Ml presentation .pptxAI and Ml presentation .pptx
AI and Ml presentation .pptx
FayazAli8712 vues
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports par Ra'Fat Al-Msie'deen
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsBushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx par animuscrm
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
animuscrm15 vues
Dapr Unleashed: Accelerating Microservice Development par Miroslav Janeski
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice Development
Navigating container technology for enhanced security by Niklas Saari par Metosin Oy
Navigating container technology for enhanced security by Niklas SaariNavigating container technology for enhanced security by Niklas Saari
Navigating container technology for enhanced security by Niklas Saari
Metosin Oy14 vues
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra... par Marc Müller
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra....NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
Marc Müller40 vues
Software evolution understanding: Automatic extraction of software identifier... par Ra'Fat Al-Msie'deen
Software evolution understanding: Automatic extraction of software identifier...Software evolution understanding: Automatic extraction of software identifier...
Software evolution understanding: Automatic extraction of software identifier...
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J... par Deltares
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
Deltares12 vues
360 graden fabriek par info33492
360 graden fabriek360 graden fabriek
360 graden fabriek
info33492122 vues
tecnologia18.docx par nosi6702
tecnologia18.docxtecnologia18.docx
tecnologia18.docx
nosi67025 vues

Pharo VM Performance