PrefetchML: a Framework for Prefetching and Caching models

24
PrefetchML: a Framework for Prefetching and Caching Models Jordi Cabot ICREA-UOC [email protected] Gwendal Daniel Inria - Mines Nantes & Lina [email protected] Gerson Sunyé Inria - Mines Nantes & Lina [email protected]

Transcript of PrefetchML: a Framework for Prefetching and Caching models

PrefetchML: a Framework for Prefetching and Caching Models

Jordi CabotICREA-UOC

[email protected]

Gwendal DanielInria - Mines Nantes & Lina

[email protected]

Gerson SunyéInria - Mines Nantes & Lina

[email protected]

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 19

Tooling

07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 20

Evaluation

Q1 Q2 Q30

2

4

6

8

10

12

14

16

18

No Pref.

EMF Pref.

NeoEMF Pref.

Exe

cutio

n T

ime

(s

)

Q1 Q2 Q30

1

2

3

4

5

6

7

8

9

Exe

cutio

n T

ime

(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