SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie Kernel Recipes 2015: Puma: Pooling Unused Memory in Virtual Machines for I/O intensive applications

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
 

Ähnlich wie Kernel Recipes 2015: Puma: Pooling Unused Memory in Virtual Machines for I/O intensive applications (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
 

Mehr von 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
 

Mehr von 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)
 

Kürzlich hochgeladen

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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
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
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
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
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfryanfarris8
 
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
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
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
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
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
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 

Kürzlich hochgeladen (20)

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
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
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 ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
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 🔝✔️✔️
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
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...
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
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
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
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 🔝✔️✔️
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 

Kernel Recipes 2015: Puma: Pooling Unused Memory in Virtual Machines for I/O intensive applications

  • 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