KVM仮想コンテナはRAMをどのように消費しますか?

KVM仮想コンテナはRAMをどのように消費しますか?

47 GB RAM とまったく同じスワップ領域を実行する物理サーバーがあります。ハードドライブの容量は228GBです。

92個のコンテナ(KVMコンテナ)を起動し、各コンテナに2560 MBのRAMを割り当てました。

現在使用可能なメモリ状態は次のとおりです。

ubuntu@ubuntu:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:            47G         43G        263M         18M        3.0G        2.8G
Swap:           47G         17G         30G

ハードディスクの保存:

ubuntu@ubuntu:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             24G     0   24G   0% /dev
tmpfs           4.8G   23M  4.7G   1% /run
/dev/sda1       228G   33G  184G  15% /
tmpfs            24G     0   24G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            24G     0   24G   0% /sys/fs/cgroup
tmpfs           4.8G     0  4.8G   0% /run/user/1000
cgmfs           100K     0  100K   0% /run/cgmanager/fs
ubuntu@ubuntu:~$ 

今私の質問は次のとおりです。

  1. 起動できるKVMコンテナの最大数を決定するには?
  2. KVMはシステム外でも利用可能なスワップスペースを使用しますか?

ベストアンサー1

  1. 実行してRAMを使い始めるまでは不明であるため、実行できるコンテナの数を正確に決定することは困難です。 Linux は、プロセスが RAM を要求するのではなく、プロセスが実際に RAM を使用している場合にのみ、プロセスに RAM を割り当てます。これが、47 GB RAM + 47 GB スワップ領域だけで 235.5 GB (92 x 2560 MB) 仮想マシンを実行できる理由です。

  2. はい。仮想マシンとコンテナは、他のプロセスと同様にLinuxプロセスです。 RAMは、他のものが必要なときに交換でき、交換されます。

  3. Linuxが最初にRAMからスワップデータを圧縮してから(メモリがいっぱいになったら)、ディスク上のスワップパーティションで圧縮できるように、サーバーでzswapを有効にすることをお勧めします。例えば

# enable zswap
echo 1 > /sys/module/zswap/parameters/enabled

# set it to use lz4 (or use gzip for better compression but more CPU usage)
echo lz4 > /sys/module/zswap/parameters/compressor

# set maximum allowed percentage of RAM to use for swap
echo 50 > /sys/module/zswap/parameters/max_pool_percent

ただし、現在使用されているスワップ領域の量を確認するには、swapon引数なしで実行してください。または実行topまたはhtop

おすすめ記事