Skip to content

Latest commit

 

History

History
70 lines (58 loc) · 2.18 KB

how-to-use-virtio-mem-with-kata.md

File metadata and controls

70 lines (58 loc) · 2.18 KB

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.

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.

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