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:~$
今私の質問は次のとおりです。
- 起動できるKVMコンテナの最大数を決定するには?
- KVMはシステム外でも利用可能なスワップスペースを使用しますか?
ベストアンサー1
実行してRAMを使い始めるまでは不明であるため、実行できるコンテナの数を正確に決定することは困難です。 Linux は、プロセスが RAM を要求するのではなく、プロセスが実際に RAM を使用している場合にのみ、プロセスに RAM を割り当てます。これが、47 GB RAM + 47 GB スワップ領域だけで 235.5 GB (92 x 2560 MB) 仮想マシンを実行できる理由です。
はい。仮想マシンとコンテナは、他のプロセスと同様にLinuxプロセスです。 RAMは、他のものが必要なときに交換でき、交換されます。
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
。