SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
Retrospective 
Seven VM Engineering Years 
Andres Valloud
A typical VM project
A typical VM project 
“do something 
about 64 bits”
do something 
about 64 bits
do something 
about 64 bits 
ImageWriter
do something 
about 64 bits 
ImageWriter 
image 
format
Serialization image 
do something 
about 64 bits 
ImageWriter 
format
Serialization image 
do something 
about 64 bits 
ImageWriter 
format 
32 vs 64 
bits
Serialization image 
do something 
about 64 bits 
ImageWriter 
FFI, types 
format 
32 vs 64 
bits
Serialization image 
do something 
about 64 bits 
ImageWriter 
FFI, types 
format 
platform 
specs 
32 vs 64 
bits
Serialization 
do something 
about 64 bits 
ImageWriter 
FFI, types 
SmallInteger 
image 
format 
platform 
specs 
32 vs 64 
bits
Serialization 
do something 
about 64 bits 
ImageWriter 
FFI, types 
SmallInteger 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators
Serialization 
do something 
about 64 bits 
ImageWriter 
FFI, types 
SmallInteger 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
x86 specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
Floating point 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
x86 specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
x86 specs 
Floating point 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
IEEE-754
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
x86 specs 
IEEE-754 
Floating point 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
FPU specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
x86 specs 
IEEE-754 
Floating point 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
SmallDouble 
FPU specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
IEEE-754 
Floating point 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
SmallDouble 
FPU specs 
32 bit bugs 
x86 specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
IEEE-754 
Floating point 
image 
format 
platform 
specs 
prim 
returns 
32 vs 64 
bits 
x86 code 
generators 
SmallDouble 
FPU specs 
32 bit bugs 
x86 specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
IEEE-754 
Floating point 
prim 
returns pointer 
aliasing 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
SmallDouble 
FPU specs 
32 bit bugs 
x86 specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
Floating point 
prim 
returns pointer 
aliasing 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
FPU specs 
C99 
compiler 
manuals 
IEEE-754 
SmallDouble 
32 bit bugs 
x86 specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
Floating point 
prim 
returns pointer 
aliasing 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
FPU specs 
C99 
compiler 
manuals 
IEEE-754 
SmallDouble 
32 bit bugs SIGSEGV 
x86 specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
Floating point 
32 bit bugs C compilers 
prim 
returns pointer 
aliasing 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
FPU specs 
C99 
compiler 
manuals 
IEEE-754 
SmallDouble 
SIGSEGV 
x86 specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
Floating point 
prim 
returns pointer 
aliasing 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
FPU specs 
C99 
compiler 
manuals 
IEEE-754 
SmallDouble 
SIGSEGV 
C compilers 
ABI violations 
32 bit bugs 
x86 specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
Floating point 
prim 
returns pointer 
aliasing 
Garbage Collectors 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
FPU specs 
C99 
compiler 
manuals 
IEEE-754 
SmallDouble 
SIGSEGV 
C compilers 
ABI violations 
32 bit bugs 
x86 specs
Serialization 
SmallInteger 
do something 
about 64 bits 
ImageWriter 
FFI, types 
Floating point 
prim 
returns pointer 
aliasing 
Garbage Collectors 
image 
format 
platform 
specs 
32 vs 64 
bits 
x86 code 
generators 
FPU specs 
C99 
compiler 
manuals 
IEEE-754 
SmallDouble 
SIGSEGV 
C compilers 
ABI violations 
32 bit bugs 
x86 specs
Speaking of GC
Speaking of GC 
“every efficient GC is 
a hybrid of reference 
counting and tracing”
Reference counting 
and tracing
Reference counting 
and tracing 
New Old Perm 
Eden 
S1 
S2
Reference counting 
and tracing 
New Old Perm 
Eden 
S1 
S2 
RT
Reference counting 
and tracing 
New Old Perm 
Eden 
S1 
S2 
RT Old RT
Reference counting 
and tracing 
New Old Perm 
Eden 
S1 
S2 
RT Old RT 
IGC lists
Reference counting 
and tracing 
New Old Perm 
Eden 
S1 
S2 
RT Old RT 
IGC lists 
Class table
... problems... 
Image <primitive: 123> 
C 
Hardware 
<foo.dll bar( )> 
prim123( ) {...} FFI 
OS, C libraries 
... and rax, 3h... 
VM
... problems... 
Image <primitive: 123> 
C 
Hardware 
<foo.dll bar( )> 
prim123( ) {...} FFI 
OS, C libraries 
... and rax, 3h... 
VM 
UD
... problems... 
Image <primitive: 123> 
C 
sigevent_t 
Hardware 
<foo.dll bar( )> 
prim123( ) {...} FFI 
OS, C libraries 
... and rax, 3h... 
VM 
UD
... problems... 
Image <primitive: 123> 
C 
sigevent_t 
Hardware 
<foo.dll bar( )> 
prim123( ) {...} FFI 
OS, C libraries 
... and rax, 3h... 
VM 
UD 
port
... problems... 
Image <primitive: 123> 
C 
sigevent_t macros, GetLastError() 
Hardware 
<foo.dll bar( )> 
prim123( ) {...} FFI 
OS, C libraries 
... and rax, 3h... 
VM 
UD 
port
Long term vision
Long term vision 
“an excess of code 
cruft is preventing us 
from doing our jobs”
LOC over time 
400k 
320k 
240k 
160k 
80k 
0k 
ObjectWorks VW 2.x VW 3.x VW 5.x VW 7.x - 2007 VW 7.x - 2014 
1990 1994 1997 2000 2003 2005 2008 2011
Progress over time 
300 
240 
180 
120 
60 
0 
-60 
-120 
-180 
Δ LOC / 500 VW 7.x - 2007 VM ARs closed Δ LOC / 500 VW 7.x - 2013 
7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.7.1 7.8 7.9 7.10
GC improvements 2010 
VW 7.7 legacy VW 7.7.1 legacy sizesAtStartup VW 7.7.1 default 
40,000 sec 
30,000 sec 
20,000 sec 
10,000 sec 
0 sec 
Ax100 Bx100 Cx400 Dx40 Ex40 Fx6 Gx6 
A: pointer garbage 
B: byte garbage 
C: point creation 
Segmented container 
D: byte allocation 
E: pointer allocation 
Large container 
F: byte allocation 
G: pointer allocation
GC improvements 2013 
2,000 sec 
1,500 sec 
1,000 sec 
500 sec 
0 sec 
VW 7.7.1 VW 7.10 
Scavenge Stress GC Stress GC Deep Stack Stress Total 
VW 7.10’s GC ~45% faster than VW 7.7.1 overall
The message
The message 
“pauca sed matura”

Más contenido relacionado

Similar a Retrospective: Seven VM Engineering Years

CO&AL-lecture-04 about the procedures in c language (1).pptx
CO&AL-lecture-04 about the procedures in c language (1).pptxCO&AL-lecture-04 about the procedures in c language (1).pptx
CO&AL-lecture-04 about the procedures in c language (1).pptxgagarwazir7
 
Talk: The Present and Future of Pharo
Talk: The Present and Future of PharoTalk: The Present and Future of Pharo
Talk: The Present and Future of PharoMarcus Denker
 
Denker - Pharo: Present and Future - 2009-07-14
Denker - Pharo: Present and Future - 2009-07-14Denker - Pharo: Present and Future - 2009-07-14
Denker - Pharo: Present and Future - 2009-07-14CHOOSE
 
Dino2 - the Amazing Evolution of the VA Smalltalk Virtual Machine
Dino2 - the Amazing Evolution of the VA Smalltalk Virtual MachineDino2 - the Amazing Evolution of the VA Smalltalk Virtual Machine
Dino2 - the Amazing Evolution of the VA Smalltalk Virtual MachineESUG
 
WebCodecs in WebKit With GStreamer!
WebCodecs in WebKit With GStreamer!WebCodecs in WebKit With GStreamer!
WebCodecs in WebKit With GStreamer!Igalia
 
Core image presentation
Core image presentationCore image presentation
Core image presentationKyle Stewart
 
Image and Video Processing Using Adobe Image Foundation's Toolkit For Flash -...
Image and Video Processing Using Adobe Image Foundation's Toolkit For Flash -...Image and Video Processing Using Adobe Image Foundation's Toolkit For Flash -...
Image and Video Processing Using Adobe Image Foundation's Toolkit For Flash -...Kevin Goldsmith
 
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...Persistent Systems Ltd.
 
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio [Unite Seoul 2019] Mali GPU Architecture and Mobile Studio
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio Owen Wu
 
NetRacer for the Commodore 64
NetRacer for the Commodore 64NetRacer for the Commodore 64
NetRacer for the Commodore 64Leif Bloomquist
 
ScilabTEC 2015 - Evidence
ScilabTEC 2015 - EvidenceScilabTEC 2015 - Evidence
ScilabTEC 2015 - EvidenceScilab
 
Kernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernelKernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernelAnne Nicolas
 
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...ryancox
 
Sample inventory report
Sample inventory reportSample inventory report
Sample inventory reportKamran Arshad
 
“Programming Vision Pipelines on AMD’s AI Engines,” a Presentation from AMD
“Programming Vision Pipelines on AMD’s AI Engines,” a Presentation from AMD“Programming Vision Pipelines on AMD’s AI Engines,” a Presentation from AMD
“Programming Vision Pipelines on AMD’s AI Engines,” a Presentation from AMDEdge AI and Vision Alliance
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Bram Adams
 
Eyeball AnyBandwidth Engine V8.0 Developer’s Guide
Eyeball AnyBandwidth Engine V8.0 Developer’s GuideEyeball AnyBandwidth Engine V8.0 Developer’s Guide
Eyeball AnyBandwidth Engine V8.0 Developer’s GuideEyeball Networks
 

Similar a Retrospective: Seven VM Engineering Years (20)

V12-1-ENG.pdf
V12-1-ENG.pdfV12-1-ENG.pdf
V12-1-ENG.pdf
 
CO&AL-lecture-04 about the procedures in c language (1).pptx
CO&AL-lecture-04 about the procedures in c language (1).pptxCO&AL-lecture-04 about the procedures in c language (1).pptx
CO&AL-lecture-04 about the procedures in c language (1).pptx
 
Talk: The Present and Future of Pharo
Talk: The Present and Future of PharoTalk: The Present and Future of Pharo
Talk: The Present and Future of Pharo
 
Denker - Pharo: Present and Future - 2009-07-14
Denker - Pharo: Present and Future - 2009-07-14Denker - Pharo: Present and Future - 2009-07-14
Denker - Pharo: Present and Future - 2009-07-14
 
Dino2 - the Amazing Evolution of the VA Smalltalk Virtual Machine
Dino2 - the Amazing Evolution of the VA Smalltalk Virtual MachineDino2 - the Amazing Evolution of the VA Smalltalk Virtual Machine
Dino2 - the Amazing Evolution of the VA Smalltalk Virtual Machine
 
WebCodecs in WebKit With GStreamer!
WebCodecs in WebKit With GStreamer!WebCodecs in WebKit With GStreamer!
WebCodecs in WebKit With GStreamer!
 
Core image presentation
Core image presentationCore image presentation
Core image presentation
 
Image and Video Processing Using Adobe Image Foundation's Toolkit For Flash -...
Image and Video Processing Using Adobe Image Foundation's Toolkit For Flash -...Image and Video Processing Using Adobe Image Foundation's Toolkit For Flash -...
Image and Video Processing Using Adobe Image Foundation's Toolkit For Flash -...
 
microprocessor
   microprocessor   microprocessor
microprocessor
 
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
Evolution of the modern graphics architectures with a focus on GPUs | Turing1...
 
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio [Unite Seoul 2019] Mali GPU Architecture and Mobile Studio
[Unite Seoul 2019] Mali GPU Architecture and Mobile Studio
 
ARM Processor Tutorial
ARM Processor Tutorial ARM Processor Tutorial
ARM Processor Tutorial
 
NetRacer for the Commodore 64
NetRacer for the Commodore 64NetRacer for the Commodore 64
NetRacer for the Commodore 64
 
ScilabTEC 2015 - Evidence
ScilabTEC 2015 - EvidenceScilabTEC 2015 - Evidence
ScilabTEC 2015 - Evidence
 
Kernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernelKernel Recipes 2013 - Overview display in the Linux kernel
Kernel Recipes 2013 - Overview display in the Linux kernel
 
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
 
Sample inventory report
Sample inventory reportSample inventory report
Sample inventory report
 
“Programming Vision Pipelines on AMD’s AI Engines,” a Presentation from AMD
“Programming Vision Pipelines on AMD’s AI Engines,” a Presentation from AMD“Programming Vision Pipelines on AMD’s AI Engines,” a Presentation from AMD
“Programming Vision Pipelines on AMD’s AI Engines,” a Presentation from AMD
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!
 
Eyeball AnyBandwidth Engine V8.0 Developer’s Guide
Eyeball AnyBandwidth Engine V8.0 Developer’s GuideEyeball AnyBandwidth Engine V8.0 Developer’s Guide
Eyeball AnyBandwidth Engine V8.0 Developer’s Guide
 

Más de ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

Más de ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Último

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 

Último (20)

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 

Retrospective: Seven VM Engineering Years

  • 1. Retrospective Seven VM Engineering Years Andres Valloud
  • 2. A typical VM project
  • 3. A typical VM project “do something about 64 bits”
  • 5. do something about 64 bits ImageWriter
  • 6. do something about 64 bits ImageWriter image format
  • 7. Serialization image do something about 64 bits ImageWriter format
  • 8. Serialization image do something about 64 bits ImageWriter format 32 vs 64 bits
  • 9. Serialization image do something about 64 bits ImageWriter FFI, types format 32 vs 64 bits
  • 10. Serialization image do something about 64 bits ImageWriter FFI, types format platform specs 32 vs 64 bits
  • 11. Serialization do something about 64 bits ImageWriter FFI, types SmallInteger image format platform specs 32 vs 64 bits
  • 12. Serialization do something about 64 bits ImageWriter FFI, types SmallInteger image format platform specs 32 vs 64 bits x86 code generators
  • 13. Serialization do something about 64 bits ImageWriter FFI, types SmallInteger image format platform specs 32 vs 64 bits x86 code generators x86 specs
  • 14. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types Floating point image format platform specs 32 vs 64 bits x86 code generators x86 specs
  • 15. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types x86 specs Floating point image format platform specs 32 vs 64 bits x86 code generators IEEE-754
  • 16. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types x86 specs IEEE-754 Floating point image format platform specs 32 vs 64 bits x86 code generators FPU specs
  • 17. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types x86 specs IEEE-754 Floating point image format platform specs 32 vs 64 bits x86 code generators SmallDouble FPU specs
  • 18. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types IEEE-754 Floating point image format platform specs 32 vs 64 bits x86 code generators SmallDouble FPU specs 32 bit bugs x86 specs
  • 19. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types IEEE-754 Floating point image format platform specs prim returns 32 vs 64 bits x86 code generators SmallDouble FPU specs 32 bit bugs x86 specs
  • 20. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types IEEE-754 Floating point prim returns pointer aliasing image format platform specs 32 vs 64 bits x86 code generators SmallDouble FPU specs 32 bit bugs x86 specs
  • 21. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types Floating point prim returns pointer aliasing image format platform specs 32 vs 64 bits x86 code generators FPU specs C99 compiler manuals IEEE-754 SmallDouble 32 bit bugs x86 specs
  • 22. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types Floating point prim returns pointer aliasing image format platform specs 32 vs 64 bits x86 code generators FPU specs C99 compiler manuals IEEE-754 SmallDouble 32 bit bugs SIGSEGV x86 specs
  • 23. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types Floating point 32 bit bugs C compilers prim returns pointer aliasing image format platform specs 32 vs 64 bits x86 code generators FPU specs C99 compiler manuals IEEE-754 SmallDouble SIGSEGV x86 specs
  • 24. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types Floating point prim returns pointer aliasing image format platform specs 32 vs 64 bits x86 code generators FPU specs C99 compiler manuals IEEE-754 SmallDouble SIGSEGV C compilers ABI violations 32 bit bugs x86 specs
  • 25. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types Floating point prim returns pointer aliasing Garbage Collectors image format platform specs 32 vs 64 bits x86 code generators FPU specs C99 compiler manuals IEEE-754 SmallDouble SIGSEGV C compilers ABI violations 32 bit bugs x86 specs
  • 26. Serialization SmallInteger do something about 64 bits ImageWriter FFI, types Floating point prim returns pointer aliasing Garbage Collectors image format platform specs 32 vs 64 bits x86 code generators FPU specs C99 compiler manuals IEEE-754 SmallDouble SIGSEGV C compilers ABI violations 32 bit bugs x86 specs
  • 28. Speaking of GC “every efficient GC is a hybrid of reference counting and tracing”
  • 30. Reference counting and tracing New Old Perm Eden S1 S2
  • 31. Reference counting and tracing New Old Perm Eden S1 S2 RT
  • 32. Reference counting and tracing New Old Perm Eden S1 S2 RT Old RT
  • 33. Reference counting and tracing New Old Perm Eden S1 S2 RT Old RT IGC lists
  • 34. Reference counting and tracing New Old Perm Eden S1 S2 RT Old RT IGC lists Class table
  • 35. ... problems... Image <primitive: 123> C Hardware <foo.dll bar( )> prim123( ) {...} FFI OS, C libraries ... and rax, 3h... VM
  • 36. ... problems... Image <primitive: 123> C Hardware <foo.dll bar( )> prim123( ) {...} FFI OS, C libraries ... and rax, 3h... VM UD
  • 37. ... problems... Image <primitive: 123> C sigevent_t Hardware <foo.dll bar( )> prim123( ) {...} FFI OS, C libraries ... and rax, 3h... VM UD
  • 38. ... problems... Image <primitive: 123> C sigevent_t Hardware <foo.dll bar( )> prim123( ) {...} FFI OS, C libraries ... and rax, 3h... VM UD port
  • 39. ... problems... Image <primitive: 123> C sigevent_t macros, GetLastError() Hardware <foo.dll bar( )> prim123( ) {...} FFI OS, C libraries ... and rax, 3h... VM UD port
  • 41. Long term vision “an excess of code cruft is preventing us from doing our jobs”
  • 42. LOC over time 400k 320k 240k 160k 80k 0k ObjectWorks VW 2.x VW 3.x VW 5.x VW 7.x - 2007 VW 7.x - 2014 1990 1994 1997 2000 2003 2005 2008 2011
  • 43. Progress over time 300 240 180 120 60 0 -60 -120 -180 Δ LOC / 500 VW 7.x - 2007 VM ARs closed Δ LOC / 500 VW 7.x - 2013 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.7.1 7.8 7.9 7.10
  • 44. GC improvements 2010 VW 7.7 legacy VW 7.7.1 legacy sizesAtStartup VW 7.7.1 default 40,000 sec 30,000 sec 20,000 sec 10,000 sec 0 sec Ax100 Bx100 Cx400 Dx40 Ex40 Fx6 Gx6 A: pointer garbage B: byte garbage C: point creation Segmented container D: byte allocation E: pointer allocation Large container F: byte allocation G: pointer allocation
  • 45. GC improvements 2013 2,000 sec 1,500 sec 1,000 sec 500 sec 0 sec VW 7.7.1 VW 7.10 Scavenge Stress GC Stress GC Deep Stack Stress Total VW 7.10’s GC ~45% faster than VW 7.7.1 overall
  • 47. The message “pauca sed matura”