SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Puma: Pooling Unused Memory in Virtual Machines
for I/O intensive applications
Maxime Lorrillere, Julien Sopena, Sébastien Monnet and Pierre Sens
contact: maxime.lorrillere@lip6.fr
Kernel Recipes 2015
Maxime Lorrillere Puma Kernel Recipes 2015 1 / 15
Introduction Context
Problem: memory fragmentation
Host 1
PFRA
cache
Memory
Disk
Applications
Host 2
PFRA
cache
Anonymous
pages
Page cache
10GB Ethernet
Maxime Lorrillere Puma Kernel Recipes 2015 2 / 15
Introduction Context
Problem: memory fragmentation
PFRA
cache
VM1 VM2
Host 1
PFRA
cache
VM3 VM4
Host 2
virtio virtio
Applications
Hypervisor (KVM) Hypervisor (KVM)
10GB Ethernet
Virtualization allows more flexibility and isolation
Maxime Lorrillere Puma Kernel Recipes 2015 2 / 15
Introduction Context
Problem: memory fragmentation
PFRA
cache
VM1 VM2
Host 1
PFRA
cache
VM3 VM4
Host 2
virtio virtio
Swap
Applications
Hypervisor (KVM) Hypervisor (KVM)
10GB Ethernet
Virtualization allows more flexibility and isolation
Problem: it fragments available memory
⇒ Sharing resources like CPU time is straightforward
⇒ Memory cannot be reassigned as efficiently as CPU time
Maxime Lorrillere Puma Kernel Recipes 2015 2 / 15
Introduction Related work
Solution: Memory Ballooning [OSDI’02]
PFRA
cache
VM1 VM2
Host 1
PFRA
cache
VM3 VM4
Host 2
virtio virtio
Swap
Balloon
Applications
Hypervisor (KVM) Hypervisor (KVM)
10GB Ethernet
The host asks a VM to inflate its balloon to return free memory
The host asks a VM to deflate its balloon to get more memory
Maxime Lorrillere Puma Kernel Recipes 2015 3 / 15
Introduction Related work
Solution: Memory Ballooning [OSDI’02]
PFRA
cache
VM1 VM2
Host 1
PFRA
cache
VM3 VM4
Host 2
virtio virtio
BalloonBalloon
Applications
Hypervisor (KVM) Hypervisor (KVM)
10GB Ethernet
The host asks a VM to inflate its balloon to return free memory
The host asks a VM to deflate its balloon to get more memory
Maxime Lorrillere Puma Kernel Recipes 2015 3 / 15
Introduction Related work
Solution: Memory Ballooning [OSDI’02]
PFRA
cache
VM1 VM2
Host 1
PFRA
cache
VM3 VM4
Host 2
virtio virtio
BalloonBalloon
I/O
Applications
Hypervisor (KVM) Hypervisor (KVM)
10GB Ethernet
The host asks a VM to inflate its balloon to return free memory
The host asks a VM to deflate its balloon to get more memory
Limitations
⇒ page cache is still fragmented
Maxime Lorrillere Puma Kernel Recipes 2015 3 / 15
Introduction Related work
Solution: Memory Ballooning [OSDI’02]
PFRA
cache
VM1 VM2
Host 1
PFRA
cache
VM3 VM4
Host 2
virtio virtio
I/O
Balloon
Swap
Applications
Hypervisor (KVM) Hypervisor (KVM)
10GB Ethernet
The host asks a VM to inflate its balloon to return free memory
The host asks a VM to deflate its balloon to get more memory
Limitations
⇒ page cache is still fragmented
⇒ slow to recover
Maxime Lorrillere Puma Kernel Recipes 2015 3 / 15
Introduction Related work
Memory Ballooning – Time to recover memory
1 Make a lot of I/O on the first VM
2 Try to allocate the memory (malloc) on the second VM
Baseline Auto-ballooning
⇒ Memory allocations are 20× slower than the baseline
Maxime Lorrillere Puma Kernel Recipes 2015 4 / 15
Introduction Related work
Memory Ballooning – Time to recover memory
1 Make a lot of I/O on the first VM
2 Try to allocate the memory (malloc) on the second VM
Baseline Auto-ballooning
⇒ Memory allocations are 20× slower than the baseline
⇒ When it does not crash! (OOM-kill)
Maxime Lorrillere Puma Kernel Recipes 2015 4 / 15
Introduction Related work
Our contribution: a cooperative page cache
PFRA
cache
VM1 VM2
Host 1
PFRA
cache
VM3 VM4
Host 2
virtiovirtio virtio
TCP (~100µs)
Remote
page cache
~10ms
Puma Puma Puma
TCP (~100µs)
Applications
Hypervisor (KVM) Hypervisor (KVM)
10GB Ethernet
Puma’s approach:
Relies on a fast network between VMs and physical machines
Hypervisor, filesystem and block device agnostic
Handles only clean cache pages
⇒ Writes a generally non-blocking
⇒ Simple consistency scheme
⇒ fast to recover memory!
Maxime Lorrillere Puma Kernel Recipes 2015 5 / 15
Puma design Basics
Puma design
Local page cache eviction – put operation
PFRAPFRA
alloc()
VM1 VM2
P31
1
Metadata
31
P31
Typically triggered by a memory allocation
Puma is integrated into the PFRA to detect page cache eviction
Pages are sent asynchronously to avoid slowdowns
Remote pages are stored into the system page cache
Maxime Lorrillere Puma Kernel Recipes 2015 6 / 15
Puma design Basics
Puma design
Local page cache eviction – put operation
PFRAPFRA
alloc()
VM1 VM2
P31
1
Metadata
31
P31
Reclaim2
Typically triggered by a memory allocation
Puma is integrated into the PFRA to detect page cache eviction
Pages are sent asynchronously to avoid slowdowns
Remote pages are stored into the system page cache
Maxime Lorrillere Puma Kernel Recipes 2015 6 / 15
Puma design Basics
Puma design
Local page cache eviction – put operation
PFRAPFRA
alloc()
VM1 VM2
P31
1
Metadata
31
P31
Reclaim2
put(P31)
3
Typically triggered by a memory allocation
Puma is integrated into the PFRA to detect page cache eviction
Pages are sent asynchronously to avoid slowdowns
Remote pages are stored into the system page cache
Maxime Lorrillere Puma Kernel Recipes 2015 6 / 15
Puma design Basics
Puma design
Local page cache eviction – put operation
PFRAPFRA
alloc()
VM1 VM2
P31
1
Metadata
31
Reclaim2
put(P31)
3
P31
4
4
Typically triggered by a memory allocation
Puma is integrated into the PFRA to detect page cache eviction
Pages are sent asynchronously to avoid slowdowns
Remote pages are stored into the system page cache
Maxime Lorrillere Puma Kernel Recipes 2015 6 / 15
Puma design Basics
Puma design
Local page cache eviction – put operation
PFRAPFRA
alloc()
VM1 VM2
P31
1
Metadata
31
Reclaim2
put(P31)
3
P31
4
4
Store page
P31
5
Typically triggered by a memory allocation
Puma is integrated into the PFRA to detect page cache eviction
Pages are sent asynchronously to avoid slowdowns
Remote pages are stored into the system page cache
Maxime Lorrillere Puma Kernel Recipes 2015 6 / 15
Puma design Basics
Puma design
Local page cache miss – get operation
PFRAPFRA
P24
Miss
get(P24)
VM1 VM2
P24
1
Metadata
24
Integrated into the page cache to detect local cache misses
A local cache miss leads to a (synchronous) get operation
Local metadata are used to know if and where a page is in the cache
Exclusive and non-inclusive caching strategies
Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
Puma design Basics
Puma design
Local page cache miss – get operation
PFRAPFRA
P24
Miss
get(P24)
VM1 VM2
P24
1
Metadata
24
2
Hit?
Integrated into the page cache to detect local cache misses
A local cache miss leads to a (synchronous) get operation
Local metadata are used to know if and where a page is in the cache
Exclusive and non-inclusive caching strategies
Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
Puma design Basics
Puma design
Local page cache miss – get operation
PFRAPFRA
P24
Miss
get(P24)
VM1 VM2
P24
1
Metadata
24
2
Hit?
req(P24)
3
Integrated into the page cache to detect local cache misses
A local cache miss leads to a (synchronous) get operation
Local metadata are used to know if and where a page is in the cache
Exclusive and non-inclusive caching strategies
Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
Puma design Basics
Puma design
Local page cache miss – get operation
PFRAPFRA
P24
Miss
get(P24)
VM1 VM2
P24
1
Metadata
24
2
Hit?
req(P24)
3
Lookup
4
Integrated into the page cache to detect local cache misses
A local cache miss leads to a (synchronous) get operation
Local metadata are used to know if and where a page is in the cache
Exclusive and non-inclusive caching strategies
Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
Puma design Basics
Puma design
Local page cache miss – get operation
PFRAPFRA
P24
Miss
get(P24)
VM1 VM2
P24
1
Metadata
24
2
Hit?
req(P24)
3
Lookup
4
P24 P24
5
Integrated into the page cache to detect local cache misses
A local cache miss leads to a (synchronous) get operation
Local metadata are used to know if and where a page is in the cache
Exclusive and non-inclusive caching strategies
Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
Puma design Basics
Puma design
Local page cache miss – get operation
PFRAPFRA
P24
Miss
get(P24)
VM1 VM2
P24
1
Metadata
24
2
Hit?
req(P24)
3
Lookup
4
P24 P24
5
Integrated into the page cache to detect local cache misses
A local cache miss leads to a (synchronous) get operation
Local metadata are used to know if and where a page is in the cache
Exclusive and non-inclusive caching strategies
Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
Puma design Sequential I/O
Puma design
Filtering sequential I/O
P24
get(P24,32)
VM1 - get
1
!Hit
Metadata
PFRA
Miss
Sequential reads are detected through the read-ahead algorithm
Maxime Lorrillere Puma Kernel Recipes 2015 8 / 15
Puma design Sequential I/O
Puma design
Filtering sequential I/O
P24
get(P24,32)
VM1 - get
1
!Hit
Metadata
PFRA
Miss 2
Sequential reads are detected through the read-ahead algorithm
Maxime Lorrillere Puma Kernel Recipes 2015 8 / 15
Puma design Sequential I/O
Puma design
Filtering sequential I/O
P24
get(P24,32)
VM1 - get
1
!Hit
Metadata
PFRA
2
3
S
P24
Sequential reads are detected through the read-ahead algorithm
“Sequential pages” are tagged into the metadata
Maxime Lorrillere Puma Kernel Recipes 2015 8 / 15
Puma design Sequential I/O
Puma design
Filtering sequential I/O
P24
get(P24,32)
VM1 - get
1
!Hit
Metadata
PFRA
2
3
S
P24
PFRA
alloc()
VM1 - put
1
Metadata
S
P24
P24
Reclaim2
put(P24)
3
Sequential reads are detected through the read-ahead algorithm
“Sequential pages” are tagged into the metadata
When evicted, sequential pages are simply discarded
Maxime Lorrillere Puma Kernel Recipes 2015 8 / 15
Puma design Sequential I/O
Puma design
Filtering sequential I/O
P24
get(P24,32)
VM1 - get
1
!Hit
Metadata
PFRA
2
3
S
P24
PFRA
alloc()
VM1 - put
1
Metadata
S
P24
Reclaim2
put(P24)
3
4
Sequential reads are detected through the read-ahead algorithm
“Sequential pages” are tagged into the metadata
When evicted, sequential pages are simply discarded
Maxime Lorrillere Puma Kernel Recipes 2015 8 / 15
Puma design Details and optimisations
Implementation details and optimisations
Response time
⇒ Puma is temporarily disabled if the response time becomes too high
Memory footprint
⇒ Metadata: amortized 64 bits/page, 2 MB of metadata per GB of cache
Memory recovery
⇒ Remote cache pages are discarded when reclaimed
Memory management: avoiding deadlocks
Atomic memory allocations
Use of pre-allocated memory pools
PFRA
alloc()
P31
1
Metadata
31
alloc()
P31
Reclaim2
put(P31)
3
P31
4
4
Consistency
Dirty pages are written to disk before being sent to the cache
Maxime Lorrillere Puma Kernel Recipes 2015 9 / 15
Evaluation Evaluation Overview
Evaluation Overview
Experiment setup on KVM
Puma server: provides from 512 MB to 12 GB of cache
Puma client: 1 GB
Baseline: a single VM without additional cache
Hosts: Intel Xeon E5-2660v2, 5 × 600GB SAS in RAID-0
Benchmarks: Filebench, BLAST, TPC-C, TPC-H, Postmark
Experiments
1 Varying workload on server side
2 Co-localised VMs with a paravirtualised network (virtio)
3 Latency injection
Maxime Lorrillere Puma Kernel Recipes 2015 10 / 15
Evaluation Varying workload
Dynamic memory balancing
Comparison with memory ballooning
Baseline Auto-ballooning Puma
High latencies to reclaim memory with memory ballooning (avg: 20ms)
Puma allows to reclaim memory at a small cost (avg: 1.8ms)
Maxime Lorrillere Puma Kernel Recipes 2015 11 / 15
Evaluation Performance evaluation
Sequential I/O filtering
Unfiltered large sequences may severely drop the performance
Filtering sequential I/O allows us to focus on random accesses
Maxime Lorrillere Puma Kernel Recipes 2015 12 / 15
Evaluation Performance evaluation
Performance improvement on database benchmarks
I/Os are a mix of random accesses and medium sized sequences
⇒ Concurrent accesses: sequential accesses are interleaved → slow
⇒ Non-inclusive strategy: pages are kept in cache even if accessed
sequentially
Maxime Lorrillere Puma Kernel Recipes 2015 13 / 15
Evaluation Latency injection
Network latency management
Latency injection with Netem [LCA’05]
Speedup decreases as we inject network latency between nodes
When the response time is too high, Puma disables itself to avoid a
performance drop
Maxime Lorrillere Puma Kernel Recipes 2015 14 / 15
Conclusion
Conclusion
Summary
⇒ Virtualization leads to a fragmentation of the available cache
⇒ Memory ballooning techniques are not able to manage VM’s page
cache distribution
Puma: Pooling Unused memory in virtual MAchines
⇒ It is based on an efficient kernel-level remote caching mechanism
⇒ It handles clean cache pages to quickly recover the memory
⇒ It works with co-localised VMs and remote VMs
Maxime Lorrillere Puma Kernel Recipes 2015 15 / 15

Más contenido relacionado

Similar a Puma: Pooling Unused Memory in Virtual Machines for I/O-intensive Apps

HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011Alessandro Nadalin
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotExactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotFlink Forward
 
Your Inner Sysadmin - LonestarPHP 2015
Your Inner Sysadmin - LonestarPHP 2015Your Inner Sysadmin - LonestarPHP 2015
Your Inner Sysadmin - LonestarPHP 2015Chris Tankersley
 
Your Inner Sysadmin - MidwestPHP 2015
Your Inner Sysadmin - MidwestPHP 2015Your Inner Sysadmin - MidwestPHP 2015
Your Inner Sysadmin - MidwestPHP 2015Chris Tankersley
 
MySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialMySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialKenny Gryp
 
2 programming.the.microsoft.windows.driver.model.2nd.edition
2   programming.the.microsoft.windows.driver.model.2nd.edition2   programming.the.microsoft.windows.driver.model.2nd.edition
2 programming.the.microsoft.windows.driver.model.2nd.editionMax Jeison Prass
 
Planning and What's New in Windows Server 2008 R2 SP1 for Virtualization
Planning and What's New in Windows Server 2008 R2 SP1 for VirtualizationPlanning and What's New in Windows Server 2008 R2 SP1 for Virtualization
Planning and What's New in Windows Server 2008 R2 SP1 for VirtualizationLai Yoong Seng
 
Planning and What's New in Windows Server 2008 R2 SP1 for Virtualization
Planning and What's New in Windows Server 2008 R2 SP1 for VirtualizationPlanning and What's New in Windows Server 2008 R2 SP1 for Virtualization
Planning and What's New in Windows Server 2008 R2 SP1 for VirtualizationLai Yoong Seng
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache KafkaShiao-An Yuan
 
Multi Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ VerisureMulti Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ VerisureKenny Gryp
 
OpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, tooOpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, tooinovex GmbH
 
DB2 for z/OS - Starter's guide to memory monitoring and control
DB2 for z/OS - Starter's guide to memory monitoring and controlDB2 for z/OS - Starter's guide to memory monitoring and control
DB2 for z/OS - Starter's guide to memory monitoring and controlFlorence Dubois
 
VM Forking and Hypervisor-based fuzzing
VM Forking and Hypervisor-based fuzzingVM Forking and Hypervisor-based fuzzing
VM Forking and Hypervisor-based fuzzingTamas K Lengyel
 
Lock, Stock and Backup: Data Guaranteed
Lock, Stock and Backup: Data GuaranteedLock, Stock and Backup: Data Guaranteed
Lock, Stock and Backup: Data GuaranteedJervin Real
 
Scaling Apache Spark at Facebook
Scaling Apache Spark at FacebookScaling Apache Spark at Facebook
Scaling Apache Spark at FacebookDatabricks
 
5503 cake php-tutorial-no-1-from-ibm
5503 cake php-tutorial-no-1-from-ibm5503 cake php-tutorial-no-1-from-ibm
5503 cake php-tutorial-no-1-from-ibmbalajipala
 
Dynamic page caching for Magnolia 5.4
Dynamic page caching for Magnolia 5.4Dynamic page caching for Magnolia 5.4
Dynamic page caching for Magnolia 5.4Magnolia
 

Similar a Puma: Pooling Unused Memory in Virtual Machines for I/O-intensive Apps (20)

HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotExactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
 
RabbitMQ Operations
RabbitMQ OperationsRabbitMQ Operations
RabbitMQ Operations
 
Your Inner Sysadmin - LonestarPHP 2015
Your Inner Sysadmin - LonestarPHP 2015Your Inner Sysadmin - LonestarPHP 2015
Your Inner Sysadmin - LonestarPHP 2015
 
Your Inner Sysadmin - MidwestPHP 2015
Your Inner Sysadmin - MidwestPHP 2015Your Inner Sysadmin - MidwestPHP 2015
Your Inner Sysadmin - MidwestPHP 2015
 
MySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialMySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn Tutorial
 
2 programming.the.microsoft.windows.driver.model.2nd.edition
2   programming.the.microsoft.windows.driver.model.2nd.edition2   programming.the.microsoft.windows.driver.model.2nd.edition
2 programming.the.microsoft.windows.driver.model.2nd.edition
 
SuperServer in Firebird 3
SuperServer in Firebird 3SuperServer in Firebird 3
SuperServer in Firebird 3
 
Planning and What's New in Windows Server 2008 R2 SP1 for Virtualization
Planning and What's New in Windows Server 2008 R2 SP1 for VirtualizationPlanning and What's New in Windows Server 2008 R2 SP1 for Virtualization
Planning and What's New in Windows Server 2008 R2 SP1 for Virtualization
 
Planning and What's New in Windows Server 2008 R2 SP1 for Virtualization
Planning and What's New in Windows Server 2008 R2 SP1 for VirtualizationPlanning and What's New in Windows Server 2008 R2 SP1 for Virtualization
Planning and What's New in Windows Server 2008 R2 SP1 for Virtualization
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Multi Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ VerisureMulti Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ Verisure
 
OpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, tooOpenNebula, the foreman and CentOS play nice, too
OpenNebula, the foreman and CentOS play nice, too
 
DB2 for z/OS - Starter's guide to memory monitoring and control
DB2 for z/OS - Starter's guide to memory monitoring and controlDB2 for z/OS - Starter's guide to memory monitoring and control
DB2 for z/OS - Starter's guide to memory monitoring and control
 
VM Forking and Hypervisor-based fuzzing
VM Forking and Hypervisor-based fuzzingVM Forking and Hypervisor-based fuzzing
VM Forking and Hypervisor-based fuzzing
 
60f04d9ae4105.pdf
60f04d9ae4105.pdf60f04d9ae4105.pdf
60f04d9ae4105.pdf
 
Lock, Stock and Backup: Data Guaranteed
Lock, Stock and Backup: Data GuaranteedLock, Stock and Backup: Data Guaranteed
Lock, Stock and Backup: Data Guaranteed
 
Scaling Apache Spark at Facebook
Scaling Apache Spark at FacebookScaling Apache Spark at Facebook
Scaling Apache Spark at Facebook
 
5503 cake php-tutorial-no-1-from-ibm
5503 cake php-tutorial-no-1-from-ibm5503 cake php-tutorial-no-1-from-ibm
5503 cake php-tutorial-no-1-from-ibm
 
Dynamic page caching for Magnolia 5.4
Dynamic page caching for Magnolia 5.4Dynamic page caching for Magnolia 5.4
Dynamic page caching for Magnolia 5.4
 

Más de Anne Nicolas

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstAnne Nicolas
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIAnne Nicolas
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelAnne Nicolas
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureAnne Nicolas
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Anne Nicolas
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataAnne Nicolas
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Anne Nicolas
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxAnne Nicolas
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialAnne Nicolas
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconAnne Nicolas
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureAnne Nicolas
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayAnne Nicolas
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerAnne Nicolas
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationAnne Nicolas
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaAnne Nicolas
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedAnne Nicolas
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPAnne Nicolas
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Anne Nicolas
 

Más de Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 

Último

Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineeringssuserb3a23b
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 

Último (20)

Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineering
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 

Puma: Pooling Unused Memory in Virtual Machines for I/O-intensive Apps

  • 1. Puma: Pooling Unused Memory in Virtual Machines for I/O intensive applications Maxime Lorrillere, Julien Sopena, Sébastien Monnet and Pierre Sens contact: maxime.lorrillere@lip6.fr Kernel Recipes 2015 Maxime Lorrillere Puma Kernel Recipes 2015 1 / 15
  • 2. Introduction Context Problem: memory fragmentation Host 1 PFRA cache Memory Disk Applications Host 2 PFRA cache Anonymous pages Page cache 10GB Ethernet Maxime Lorrillere Puma Kernel Recipes 2015 2 / 15
  • 3. Introduction Context Problem: memory fragmentation PFRA cache VM1 VM2 Host 1 PFRA cache VM3 VM4 Host 2 virtio virtio Applications Hypervisor (KVM) Hypervisor (KVM) 10GB Ethernet Virtualization allows more flexibility and isolation Maxime Lorrillere Puma Kernel Recipes 2015 2 / 15
  • 4. Introduction Context Problem: memory fragmentation PFRA cache VM1 VM2 Host 1 PFRA cache VM3 VM4 Host 2 virtio virtio Swap Applications Hypervisor (KVM) Hypervisor (KVM) 10GB Ethernet Virtualization allows more flexibility and isolation Problem: it fragments available memory ⇒ Sharing resources like CPU time is straightforward ⇒ Memory cannot be reassigned as efficiently as CPU time Maxime Lorrillere Puma Kernel Recipes 2015 2 / 15
  • 5. Introduction Related work Solution: Memory Ballooning [OSDI’02] PFRA cache VM1 VM2 Host 1 PFRA cache VM3 VM4 Host 2 virtio virtio Swap Balloon Applications Hypervisor (KVM) Hypervisor (KVM) 10GB Ethernet The host asks a VM to inflate its balloon to return free memory The host asks a VM to deflate its balloon to get more memory Maxime Lorrillere Puma Kernel Recipes 2015 3 / 15
  • 6. Introduction Related work Solution: Memory Ballooning [OSDI’02] PFRA cache VM1 VM2 Host 1 PFRA cache VM3 VM4 Host 2 virtio virtio BalloonBalloon Applications Hypervisor (KVM) Hypervisor (KVM) 10GB Ethernet The host asks a VM to inflate its balloon to return free memory The host asks a VM to deflate its balloon to get more memory Maxime Lorrillere Puma Kernel Recipes 2015 3 / 15
  • 7. Introduction Related work Solution: Memory Ballooning [OSDI’02] PFRA cache VM1 VM2 Host 1 PFRA cache VM3 VM4 Host 2 virtio virtio BalloonBalloon I/O Applications Hypervisor (KVM) Hypervisor (KVM) 10GB Ethernet The host asks a VM to inflate its balloon to return free memory The host asks a VM to deflate its balloon to get more memory Limitations ⇒ page cache is still fragmented Maxime Lorrillere Puma Kernel Recipes 2015 3 / 15
  • 8. Introduction Related work Solution: Memory Ballooning [OSDI’02] PFRA cache VM1 VM2 Host 1 PFRA cache VM3 VM4 Host 2 virtio virtio I/O Balloon Swap Applications Hypervisor (KVM) Hypervisor (KVM) 10GB Ethernet The host asks a VM to inflate its balloon to return free memory The host asks a VM to deflate its balloon to get more memory Limitations ⇒ page cache is still fragmented ⇒ slow to recover Maxime Lorrillere Puma Kernel Recipes 2015 3 / 15
  • 9. Introduction Related work Memory Ballooning – Time to recover memory 1 Make a lot of I/O on the first VM 2 Try to allocate the memory (malloc) on the second VM Baseline Auto-ballooning ⇒ Memory allocations are 20× slower than the baseline Maxime Lorrillere Puma Kernel Recipes 2015 4 / 15
  • 10. Introduction Related work Memory Ballooning – Time to recover memory 1 Make a lot of I/O on the first VM 2 Try to allocate the memory (malloc) on the second VM Baseline Auto-ballooning ⇒ Memory allocations are 20× slower than the baseline ⇒ When it does not crash! (OOM-kill) Maxime Lorrillere Puma Kernel Recipes 2015 4 / 15
  • 11. Introduction Related work Our contribution: a cooperative page cache PFRA cache VM1 VM2 Host 1 PFRA cache VM3 VM4 Host 2 virtiovirtio virtio TCP (~100µs) Remote page cache ~10ms Puma Puma Puma TCP (~100µs) Applications Hypervisor (KVM) Hypervisor (KVM) 10GB Ethernet Puma’s approach: Relies on a fast network between VMs and physical machines Hypervisor, filesystem and block device agnostic Handles only clean cache pages ⇒ Writes a generally non-blocking ⇒ Simple consistency scheme ⇒ fast to recover memory! Maxime Lorrillere Puma Kernel Recipes 2015 5 / 15
  • 12. Puma design Basics Puma design Local page cache eviction – put operation PFRAPFRA alloc() VM1 VM2 P31 1 Metadata 31 P31 Typically triggered by a memory allocation Puma is integrated into the PFRA to detect page cache eviction Pages are sent asynchronously to avoid slowdowns Remote pages are stored into the system page cache Maxime Lorrillere Puma Kernel Recipes 2015 6 / 15
  • 13. Puma design Basics Puma design Local page cache eviction – put operation PFRAPFRA alloc() VM1 VM2 P31 1 Metadata 31 P31 Reclaim2 Typically triggered by a memory allocation Puma is integrated into the PFRA to detect page cache eviction Pages are sent asynchronously to avoid slowdowns Remote pages are stored into the system page cache Maxime Lorrillere Puma Kernel Recipes 2015 6 / 15
  • 14. Puma design Basics Puma design Local page cache eviction – put operation PFRAPFRA alloc() VM1 VM2 P31 1 Metadata 31 P31 Reclaim2 put(P31) 3 Typically triggered by a memory allocation Puma is integrated into the PFRA to detect page cache eviction Pages are sent asynchronously to avoid slowdowns Remote pages are stored into the system page cache Maxime Lorrillere Puma Kernel Recipes 2015 6 / 15
  • 15. Puma design Basics Puma design Local page cache eviction – put operation PFRAPFRA alloc() VM1 VM2 P31 1 Metadata 31 Reclaim2 put(P31) 3 P31 4 4 Typically triggered by a memory allocation Puma is integrated into the PFRA to detect page cache eviction Pages are sent asynchronously to avoid slowdowns Remote pages are stored into the system page cache Maxime Lorrillere Puma Kernel Recipes 2015 6 / 15
  • 16. Puma design Basics Puma design Local page cache eviction – put operation PFRAPFRA alloc() VM1 VM2 P31 1 Metadata 31 Reclaim2 put(P31) 3 P31 4 4 Store page P31 5 Typically triggered by a memory allocation Puma is integrated into the PFRA to detect page cache eviction Pages are sent asynchronously to avoid slowdowns Remote pages are stored into the system page cache Maxime Lorrillere Puma Kernel Recipes 2015 6 / 15
  • 17. Puma design Basics Puma design Local page cache miss – get operation PFRAPFRA P24 Miss get(P24) VM1 VM2 P24 1 Metadata 24 Integrated into the page cache to detect local cache misses A local cache miss leads to a (synchronous) get operation Local metadata are used to know if and where a page is in the cache Exclusive and non-inclusive caching strategies Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
  • 18. Puma design Basics Puma design Local page cache miss – get operation PFRAPFRA P24 Miss get(P24) VM1 VM2 P24 1 Metadata 24 2 Hit? Integrated into the page cache to detect local cache misses A local cache miss leads to a (synchronous) get operation Local metadata are used to know if and where a page is in the cache Exclusive and non-inclusive caching strategies Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
  • 19. Puma design Basics Puma design Local page cache miss – get operation PFRAPFRA P24 Miss get(P24) VM1 VM2 P24 1 Metadata 24 2 Hit? req(P24) 3 Integrated into the page cache to detect local cache misses A local cache miss leads to a (synchronous) get operation Local metadata are used to know if and where a page is in the cache Exclusive and non-inclusive caching strategies Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
  • 20. Puma design Basics Puma design Local page cache miss – get operation PFRAPFRA P24 Miss get(P24) VM1 VM2 P24 1 Metadata 24 2 Hit? req(P24) 3 Lookup 4 Integrated into the page cache to detect local cache misses A local cache miss leads to a (synchronous) get operation Local metadata are used to know if and where a page is in the cache Exclusive and non-inclusive caching strategies Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
  • 21. Puma design Basics Puma design Local page cache miss – get operation PFRAPFRA P24 Miss get(P24) VM1 VM2 P24 1 Metadata 24 2 Hit? req(P24) 3 Lookup 4 P24 P24 5 Integrated into the page cache to detect local cache misses A local cache miss leads to a (synchronous) get operation Local metadata are used to know if and where a page is in the cache Exclusive and non-inclusive caching strategies Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
  • 22. Puma design Basics Puma design Local page cache miss – get operation PFRAPFRA P24 Miss get(P24) VM1 VM2 P24 1 Metadata 24 2 Hit? req(P24) 3 Lookup 4 P24 P24 5 Integrated into the page cache to detect local cache misses A local cache miss leads to a (synchronous) get operation Local metadata are used to know if and where a page is in the cache Exclusive and non-inclusive caching strategies Maxime Lorrillere Puma Kernel Recipes 2015 7 / 15
  • 23. Puma design Sequential I/O Puma design Filtering sequential I/O P24 get(P24,32) VM1 - get 1 !Hit Metadata PFRA Miss Sequential reads are detected through the read-ahead algorithm Maxime Lorrillere Puma Kernel Recipes 2015 8 / 15
  • 24. Puma design Sequential I/O Puma design Filtering sequential I/O P24 get(P24,32) VM1 - get 1 !Hit Metadata PFRA Miss 2 Sequential reads are detected through the read-ahead algorithm Maxime Lorrillere Puma Kernel Recipes 2015 8 / 15
  • 25. Puma design Sequential I/O Puma design Filtering sequential I/O P24 get(P24,32) VM1 - get 1 !Hit Metadata PFRA 2 3 S P24 Sequential reads are detected through the read-ahead algorithm “Sequential pages” are tagged into the metadata Maxime Lorrillere Puma Kernel Recipes 2015 8 / 15
  • 26. Puma design Sequential I/O Puma design Filtering sequential I/O P24 get(P24,32) VM1 - get 1 !Hit Metadata PFRA 2 3 S P24 PFRA alloc() VM1 - put 1 Metadata S P24 P24 Reclaim2 put(P24) 3 Sequential reads are detected through the read-ahead algorithm “Sequential pages” are tagged into the metadata When evicted, sequential pages are simply discarded Maxime Lorrillere Puma Kernel Recipes 2015 8 / 15
  • 27. Puma design Sequential I/O Puma design Filtering sequential I/O P24 get(P24,32) VM1 - get 1 !Hit Metadata PFRA 2 3 S P24 PFRA alloc() VM1 - put 1 Metadata S P24 Reclaim2 put(P24) 3 4 Sequential reads are detected through the read-ahead algorithm “Sequential pages” are tagged into the metadata When evicted, sequential pages are simply discarded Maxime Lorrillere Puma Kernel Recipes 2015 8 / 15
  • 28. Puma design Details and optimisations Implementation details and optimisations Response time ⇒ Puma is temporarily disabled if the response time becomes too high Memory footprint ⇒ Metadata: amortized 64 bits/page, 2 MB of metadata per GB of cache Memory recovery ⇒ Remote cache pages are discarded when reclaimed Memory management: avoiding deadlocks Atomic memory allocations Use of pre-allocated memory pools PFRA alloc() P31 1 Metadata 31 alloc() P31 Reclaim2 put(P31) 3 P31 4 4 Consistency Dirty pages are written to disk before being sent to the cache Maxime Lorrillere Puma Kernel Recipes 2015 9 / 15
  • 29. Evaluation Evaluation Overview Evaluation Overview Experiment setup on KVM Puma server: provides from 512 MB to 12 GB of cache Puma client: 1 GB Baseline: a single VM without additional cache Hosts: Intel Xeon E5-2660v2, 5 × 600GB SAS in RAID-0 Benchmarks: Filebench, BLAST, TPC-C, TPC-H, Postmark Experiments 1 Varying workload on server side 2 Co-localised VMs with a paravirtualised network (virtio) 3 Latency injection Maxime Lorrillere Puma Kernel Recipes 2015 10 / 15
  • 30. Evaluation Varying workload Dynamic memory balancing Comparison with memory ballooning Baseline Auto-ballooning Puma High latencies to reclaim memory with memory ballooning (avg: 20ms) Puma allows to reclaim memory at a small cost (avg: 1.8ms) Maxime Lorrillere Puma Kernel Recipes 2015 11 / 15
  • 31. Evaluation Performance evaluation Sequential I/O filtering Unfiltered large sequences may severely drop the performance Filtering sequential I/O allows us to focus on random accesses Maxime Lorrillere Puma Kernel Recipes 2015 12 / 15
  • 32. Evaluation Performance evaluation Performance improvement on database benchmarks I/Os are a mix of random accesses and medium sized sequences ⇒ Concurrent accesses: sequential accesses are interleaved → slow ⇒ Non-inclusive strategy: pages are kept in cache even if accessed sequentially Maxime Lorrillere Puma Kernel Recipes 2015 13 / 15
  • 33. Evaluation Latency injection Network latency management Latency injection with Netem [LCA’05] Speedup decreases as we inject network latency between nodes When the response time is too high, Puma disables itself to avoid a performance drop Maxime Lorrillere Puma Kernel Recipes 2015 14 / 15
  • 34. Conclusion Conclusion Summary ⇒ Virtualization leads to a fragmentation of the available cache ⇒ Memory ballooning techniques are not able to manage VM’s page cache distribution Puma: Pooling Unused memory in virtual MAchines ⇒ It is based on an efficient kernel-level remote caching mechanism ⇒ It handles clean cache pages to quickly recover the memory ⇒ It works with co-localised VMs and remote VMs Maxime Lorrillere Puma Kernel Recipes 2015 15 / 15