mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-06-28 08:17:37 +00:00
howto: Add VMCache introduction and guide
Add "What Is VMCache and How To Enable It" to howto. Fixes: #392 Signed-off-by: Hui Zhu <teawater@hyper.sh>
This commit is contained in:
parent
a2fe01131d
commit
7b94750180
45
how-to/what-is-vm-cache-and-how-do-I-use-it.md
Normal file
45
how-to/what-is-vm-cache-and-how-do-I-use-it.md
Normal file
@ -0,0 +1,45 @@
|
||||
# What Is VMCache and How To Enable It
|
||||
|
||||
* [What is VMCache](#what-is-vmcache-and-how-to-enable-it)
|
||||
* [How is this different to VM templating](#how-is-this-different-to-vm-templating)
|
||||
* [How to enable VMCache](#how-to-enable-vmcache)
|
||||
* [Limitations](#limitations)
|
||||
|
||||
### What is VMCache
|
||||
VMCache is a new function that creates VMs as caches before using it.
|
||||
It helps speed up new container creation.
|
||||
The function consists of a server and some clients communicating
|
||||
through Unix socket. The protocol is gRPC in [protocols/cache/cache.proto](https://github.com/kata-containers/runtime/blob/master/protocols/cache/cache.proto).
|
||||
The VMCache server will create some VMs and cache them by factory cache.
|
||||
It will convert the VM to gRPC format and transport it when gets
|
||||
requested from clients.
|
||||
Factory grpccache is the VMCache client. It will request gRPC format
|
||||
VM and convert it back to a VM. If VMCache function is enabled,
|
||||
kata-runtime will request VM from factory grpccache when it creates
|
||||
a new sandbox.
|
||||
|
||||
### How is this different from VM templating
|
||||
Both [VM templating](https://github.com/kata-containers/documentation/blob/master/how-to/what-is-vm-templating-and-how-do-I-use-it.md) and VMCache help speed up new container creation.
|
||||
When VM templating enabled, new VMs are created by cloning from a pre-created template VM, and they will share the same initramfs, kernel and agent memory in readonly mode. So it saves a lot of memory if there are many Kata Containers running on the same host.
|
||||
VMCache is not vulnerable to [share memory CVE](https://github.com/kata-containers/documentation/blob/master/how-to/what-is-vm-templating-and-how-do-I-use-it.md#what-are-the-cons) because each VM doesn't share the memory.
|
||||
|
||||
### How to enable VMCache
|
||||
VMCache can be enabled by changing your Kata Containers config file (`/usr/share/defaults/kata-containers/configuration.toml`,
|
||||
overridden by `/etc/kata-containers/configuration.toml` if provided) such that:
|
||||
* `vm_cache_number` specifies the number of caches of VMCache:
|
||||
* unspecified or == 0
|
||||
VMCache is disabled
|
||||
* `> 0`
|
||||
will be set to the specified number
|
||||
* `vm_cache_endpoint` specifies the address of the Unix socket.
|
||||
|
||||
Then you can create a VM templating for later usage by calling:
|
||||
```
|
||||
$ sudo kata-runtime factory init
|
||||
```
|
||||
and purge it by ctrl-c it.
|
||||
|
||||
### Limitations
|
||||
* Cannot work with VM templating.
|
||||
* Cannot work with vsock.
|
||||
* Only supports the qemu hypervisor.
|
@ -7,6 +7,11 @@ by cloning from a pre-created template VM, and they will share the
|
||||
same initramfs, kernel and agent memory in readonly mode. It is very
|
||||
much like a process fork done by the kernel but here we *fork* VMs.
|
||||
|
||||
### How is this different from VMCache
|
||||
Both [VMCache](https://github.com/kata-containers/documentation/blob/master/how-to/what-is-vm-cache-and-how-do-I-use-it.md) and VM templating help speed up new container creation.
|
||||
When VMCache enabled, new VMs are created by the VMCache server. So it is not vulnerable to share memory CVE because each VM doesn't share the memory.
|
||||
VM templating saves a lot of memory if there are many Kata Containers running on the same host.
|
||||
|
||||
### What are the Pros
|
||||
VM templating helps speed up new container creation and saves a lot
|
||||
of memory if there are many Kata Containers running on the same host.
|
||||
|
Loading…
Reference in New Issue
Block a user