mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-28 03:42:09 +00:00
Spell check failed with: ``` [kata-spell-check.sh:275] WARNING: Word 'overcommitment': did you mean one of the following?: over commitment, over-commitment, commitment ``` So update this to pass the static checks Fixes: # Signed-off-by: stevenhorsman <steven@uk.ibm.com>
71 lines
2.2 KiB
Markdown
71 lines
2.2 KiB
Markdown
# Kata Containers with `virtio-mem`
|
|
|
|
## Introduction
|
|
|
|
The basic idea of `virtio-mem` is to provide a flexible, cross-architecture memory hot plug and hot unplug solution that avoids many limitations imposed by existing technologies, architectures, and interfaces.
|
|
More details can be found in https://lkml.org/lkml/2019/12/12/681.
|
|
|
|
Kata Containers with `virtio-mem` supports memory resize.
|
|
|
|
## Requisites
|
|
|
|
Kata Containers just supports `virtio-mem` with QEMU.
|
|
Install and setup Kata Containers as shown [here](../install/README.md).
|
|
|
|
### With x86_64
|
|
The `virtio-mem` config of the x86_64 Kata Linux kernel is open.
|
|
Enable `virtio-mem` as follows:
|
|
```
|
|
$ sudo sed -i -e 's/^#enable_virtio_mem.*$/enable_virtio_mem = true/g' /etc/kata-containers/configuration.toml
|
|
```
|
|
|
|
### With other architectures
|
|
The `virtio-mem` config of the others Kata Linux kernel is not open.
|
|
You can open `virtio-mem` config as follows:
|
|
```
|
|
CONFIG_VIRTIO_MEM=y
|
|
```
|
|
Then you can build and install the guest kernel image as shown [here](../../tools/packaging/kernel/README.md#build-kata-containers-kernel).
|
|
|
|
## Run a Kata Container utilizing `virtio-mem`
|
|
|
|
Use following command to enable memory over-commitment of a Linux kernel. Because QEMU `virtio-mem` device need to allocate a lot of memory.
|
|
```
|
|
$ echo 1 | sudo tee /proc/sys/vm/overcommit_memory
|
|
```
|
|
|
|
Use following command to start a Kata Container.
|
|
```
|
|
$ pod_yaml=pod.yaml
|
|
$ container_yaml=container.yaml
|
|
$ image="quay.io/prometheus/busybox:latest"
|
|
$ cat << EOF > "${pod_yaml}"
|
|
metadata:
|
|
name: busybox-sandbox1
|
|
uid: $(uuidgen)
|
|
namespace: default
|
|
EOF
|
|
$ cat << EOF > "${container_yaml}"
|
|
metadata:
|
|
name: busybox-killed-vmm
|
|
image:
|
|
image: "$image"
|
|
command:
|
|
- top
|
|
EOF
|
|
$ sudo crictl pull $image
|
|
$ podid=$(sudo crictl runp $pod_yaml)
|
|
$ cid=$(sudo crictl create $podid $container_yaml $pod_yaml)
|
|
$ sudo crictl start $cid
|
|
```
|
|
|
|
Use the following command to set the container memory limit to 2g and the memory size of the VM to its default_memory + 2g.
|
|
```
|
|
$ sudo crictl update --memory $((2*1024*1024*1024)) $cid
|
|
```
|
|
|
|
Use the following command to set the container memory limit to 1g and the memory size of the VM to its default_memory + 1g.
|
|
```
|
|
$ sudo crictl update --memory $((1*1024*1024*1024)) $cid
|
|
```
|