PrefetchML: a Framework for Prefetching and Caching Models
Oct. 11, 2016•0 likes
2 likes
Be the first to like this
Show More
•683 views
views
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download to read offline
Report
Presentations & Public Speaking
PrefetchML Presentation at MoDELS'16. Related article available online at https://hal.archives-ouvertes.fr/hal-01362149/document
Related post on modeling-languages.com: http://modeling-languages.com/prefetchml-dsl-prefetching-caching-emf-models/
PrefetchML: a Framework for Prefetching and Caching Models
PrefetchML: a Framework for
Prefetching and Caching Models
Jordi Cabot
ICREA-UOC
jordi.cabot@icrea.cat
Gwendal Daniel
Inria - Mines Nantes & Lina
gwendal.daniel@inria.fr
Gerson Sunyé
Inria - Mines Nantes & Lina
gerson.sunye@inria.fr
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 2
Introduction
● Prefetching
– Bring objects into memory before they are requested
● Caching
– Retain objects in memory to speed-up their access
● Integrated in databases and file systems
– Speeds-up I/O intensive applications
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 3
Introduction
● Database prefetchers & caches
– Lack of fine-grained configuration
● Elements to load
● Usage scenario
– Tightly coupled to data representation
● Low level of abstraction
● Not reusable
– Not a common in NoSQL stores
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 4
Introduction
● We need to prefetch and cache models
– Scalable Persistence Frameworks
● Databases to store large models (relational, NoSQL, ...)
● Latencies to bring elements from the database
● I/O intensive
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 5
Introduction
● We need to prefetch and cache models
– Metamodel informations
● High-level prefetching rules
● Decoupled from data representation
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 6
PrefetchML
● A prefetching and caching framework at the model level
PrefetchML DSL
PrefetchML Engine
– Metamodel and model level
– Use case dependent
– Readable
– Datastore-independent
– Transparent for the persistence solution
rule definition
rule execution
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 7
PrefetchML DSL
● Define prefetching and caching rules grouped in plans
● Event-based language
– Model loading
– Element access, update, deletion
– OCL guards
● OCL loading instructions
● Cache management
– Define cache policy
– Remove cached elements
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 8
PrefetchML DSL
import ''http://www.example.com/Java''
plan samplePlan {
rule r1: on starting
fetch Package.allInstances()
}
Package
+ name : String
ClassDeclaration
+ name : String
BodyDeclaration
+ name : String
Modifier
+ kind : VisibilityKind
*
1
ownedElements
*
bodyDeclarations
modifier
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 9
PrefetchML DSL
import ''http://www.example.com/Java''
plan samplePlan {
rule r1: on starting
fetch Package.allInstances()
rule r2: on access type ClassDeclaration
fetch self.bodyDeclarations.modifier
}
Package
+ name : String
ClassDeclaration
+ name : String
BodyDeclaration
+ name : String
Modifier
+ kind : VisibilityKind
*
1
ownedElements
*
bodyDeclarations
modifier
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 10
PrefetchML DSL
import ''http://www.example.com/Java''
plan samplePlan {
use cache LRU[size=100, chunk=10]
rule r1: on starting
fetch Package.allInstances()
rule r2: on access type ClassDeclaration
fetch self.bodyDeclarations.modifier
}
Package
+ name : String
ClassDeclaration
+ name : String
BodyDeclaration
+ name : String
Modifier
+ kind : VisibilityKind
*
1
ownedElements
*
bodyDeclarations
modifier
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 11
PrefetchML DSL
import ''http://www.example.com/Java''
plan samplePlan {
use cache LRU[size=100, chunk=10]
rule r1: on starting
fetch Package.allInstances()
rule r2: on access type ClassDeclaration (self.name = 'MyClass')
fetch self.bodyDeclarations.modifier
}
Package
+ name : String
ClassDeclaration
+ name : String
BodyDeclaration
+ name : String
Modifier
+ kind : VisibilityKind
*
1
ownedElements
*
bodyDeclarations
modifier
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 12
PrefetchML DSL
import ''http://www.example.com/Java''
plan samplePlan {
use cache LRU[size=100, chunk=10]
rule r1: on starting
fetch Package.allInstances()
rule r2: on access type ClassDeclaration (self.name = 'MyClass')
fetch self.bodyDeclarations.modifier
remove type Package
}
Package
+ name : String
ClassDeclaration
+ name : String
BodyDeclaration
+ name : String
Modifier
+ kind : VisibilityKind
*
1
ownedElements
*
bodyDeclarations
modifier
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 13
PrefetchML Engine
● Rule execution engine
● Executes loading instructions
● Captures events
● Transparent to the modeling framework
● Database independent
– Specialized connectors
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 14
PrefetchML Engine
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 15
PrefetchML Engine
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 16
PrefetchML Engine
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 17
PrefetchML Engine
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 18
Tooling
● PrefetchML Editor
– XText editor
– Navigation hints
– Rule validation
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 20
Evaluation
Q1 Q2 Q3
0
2
4
6
8
10
12
14
16
18
No Pref.
EMF Pref.
NeoEMF Pref.
ExecutionTime(s)
Q1 Q2 Q3
0
1
2
3
4
5
6
7
8
9
ExecutionTime(s)
● Model containing 2 million elements
● MDT OCL over NeoEMF/Graph
Cold Execution (empty cache) Warmed Execution
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 21
Conclusion
● Model-level prefetching & caching framework
● PrefetchML DSL: defines prefetching and caching rules at
a high level of abstraction
● PrefetchML Engine: captures events, trigger rules, cache
model elements
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 22
Conclusion
● Future work
– Automatic generation of PrefetchML plans
● ATL transformations
● Code analysis
– Dynamic discovery of frequent access patterns
● Log mining
● Switch on/off plans when needed
● Add/remove rules at runtime
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 23
Questions?
Websites / Repositories
PrefetchML: https://github.com/atlanmod/Prefetching_Caching_DSL
NeoEMF: neoemf.com
https://github.com/atlanmod
Thank you for your attention!
https://github.com/SOM-Research
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 24
PrefetchML Engine