Docker Cgroups リソース制御管理

目次

1. cgroup の概要

2. CPUタイムスライスの概念

3. CPU使用量の制限

1. CPU使用率の上限を設定する

2. CPUリソース使用率を設定する

4. メモリ使用量の制限

1. コンテナが使用できる最大メモリを制限する

2. コンテナーで使用できるスワップ サイズを制限する

5. ディスクIO構成制御(blkio)の制限事項

1.書き込み速度を制限せずにコンテナを作成する

2. コンテナを作成し、書き込み速度を制限する

6. Docker が占有しているディスク領域をクリアします。

7. まとめ

1. CPUのパラメータを制限する

2. メモリの制限

3. ディスク IO の制限


1. cgroup の概要

       Cgroups は Linux カーネルによって提供されるメカニズムで、単一プロセスまたは複数のプロセスによって使用されるリソースを制限できます。CPU やメモリなどのリソースをきめ細かく制御できます。現在、人気が高まっている軽量コンテナ Docker は cgroups を使用します。 CPU、メモリ、その他の部分のリソース制御を完了するための制限機能が提供されます。

       さらに、開発者は、cgroup によって提供されるきめ細かい制御機能を使用して、特定のプロセスまたは特定のプロセス グループのリソース使用量を制限することもできます。たとえば、フロントエンド Web サービスとバックエンド コンピューティング モジュールの両方を展開する 8 コアのサーバーでは、cgroup を使用して、Web サーバーがコアのうち 6 つだけを使用するように制限し、残りの 2 つのコアをバックエンド用に残すことができます。コンピューティングモジュール。

cgroup の 4 つの主な機能:

  • リソース制限: タスクで使用されるリソースの合計量を制限できます。
  • 優先順位の割り当て: 割り当てられた CPU タイム スライスの数とディスク IO 帯域幅のサイズによって、実際にはタスク実行の優先順位を制御するのと同等になります。
  • リソース統計: CPU 使用時間、メモリ使用量など、システムのリソース使用量をカウントできます。
  • タスク制御: cgroup はタスクの一時停止や再開などの操作を実行できます。

2. CPUタイムスライスの概念

       タイム スライスは CPU によって各プログラムに割り当てられる時間であり、各スレッドにはタイム スライスと呼ばれる期間、つまりプロセスの実行が許可される時間が割り当てられるため、さまざまなプログラムが実行されているように見えます。同じ時間です。タイム スライスの終了時にプロセスがまだ実行中の場合、CPU は奪われ、別のプロセスに割り当てられます。タイム スライスが終了する前にプロセスがブロックまたは終了した場合、CPU はすぐに切り替わります。CPU リソースを無駄に消費することはありません。

       巨視的: 複数のアプリケーションを同時に開くことができ、各プログラムは並行して実行され、同時に実行されます。しかし、ミクロレベルでは: CPU は 1 つしかないため、一度にプログラムの要件の一部しか処理できません。公平性をどのように処理するかというと、1 つの方法はタイム スライスを導入し、各プログラムを順番に実行することです。

3. CPU使用量の制限

1. CPU使用率の上限を設定する

Linux は CFS (Completely Fair Scheduler、Completely Fair Scheduler) を使用して、各プロセスによる CPU の使用をスケジュールします。CFS のデフォルトのスケジューリング期間は 100ms です。

各コンテナー プロセスのスケジューリング サイクルと、このサイクル中に各コンテナーが最大で使用できる CPU 時間を設定できます。

ノート:

--cpu-period を使用してスケジューリング期間を設定し、 --cpu-quota を使用してコンテナが各期間で使用できる CPU 時間を設定します。この 2 つは一緒に使用できます。

CFS 周期の有効範囲は 1ms ~ 1s で、--cpu-period の対応する値の範囲は 1000 ~ 1000000 (マイクロ秒単位) です。

コンテナーの CPU クォータは 1ms 未満であってはなりません。つまり、--cpu-quota の値は 1000 以上である必要があります。

コンテナーのデフォルトの CPU 使用量制限を表示する

ストレステストを行う

コンテナ作成時のCPU使用時間制限を設定する

既存のコンテナの CPU 制限

/sys/fs/cgroup/cpu/docker/container id/cpu.cfs_quota_us ファイルを直接変更するだけです

2. CPUリソース使用率を設定する

コンテナを2つ作成し、CPUリソース使用率を設定する

注: Docker は --cpu-shares を通じて CPU シェアを指定します。デフォルト値は 1024 で、値は 1024 の倍数です。

圧力試験のために2つの容器を別々に入れてください

コンテナの実行ステータスを表示し、CPU 使用率を観察します。

4. メモリ使用量の制限

1. コンテナが使用できる最大メモリを制限する

docker run -itd --name tan3 -m 512m centos:7 /bin/bash
#-m(--memory=)选项用于限制容器可以使用的最大内存

2. コンテナーで使用できるスワップ サイズを制限する

docker run -itd --name tan3 -m 512m --memory-swap=1g centos:7 bash
#限制可用的swap 大小,--memory-swap

注:--memory-swap是必须要与 --memory(或-m)一起使用的

正常情况下, --memory-swap 的值包含容器可用内存和可用swap
所以 -m 512m --memory-swap=1g 的含义为:容器可以使用512M 的物理内存,并且可以使用512M (1G - 512M)的swap

设置为0或者不设置,则容器可以使用的 swap 大小为 -m 值的两倍。
如果 --memory-swap 的值和 -m 值相同,则容器不能使用swap。
如果 --memory-swap 值为 -1,它表示容器程序使用的内存受限,而可以使用的swap空间使用不受限制(宿主机有多少swap 容器就可以使用多少)

5. ディスクIO構成制御(blkio)の制限事項

--device-read-bps: デバイスの読み取り速度 bps (データ量) を制限します。単位は kb、mb (M)、または gb です。

--device-write-bps : 特定のデバイスの書き込み速度 bps (データ量) を制限します。単位は kb、mb (M)、または gb です。

--device-read-iops : デバイスを読み取るための iops (回数) を制限します。

--device-write-iops : 特定のデバイスに書き込まれる iops (回数) を制限します。

1.書き込み速度を制限せずにコンテナを作成する

docker run -it --name tt1 centos:7 /bin/bash
#创建容器tt1,不限制写入速度

dd if=/dev/zero of=/opt/test.out bs=10M count=5 oflag=direct
#通过dd来验证写速度,拷贝50M的数据

2. コンテナを作成し、書き込み速度を制限する

docker run -it --name tt2 --device-write-bps /dev/sda:1mb centos:7 bash
#创建容器,并限制写入速度为1MB/s

6. Docker が占有しているディスク領域をクリアします。

docker system prune -a
#用于清理磁盘,删除关闭的容器、无用的数据卷和网络

 

7. まとめ

1. CPUのパラメータを制限する

docker run -cpu-period     #设置调度周期时间1000~1000000
           -cpu-quota      #设置容器进程的CPU占用时间,要与调度周期时间成比例
           --cpu-shares    #设置多个容器之间的CPU资源占用比
           --cpuset-cpus   #绑核(第一个CPU编号从0开始)

2. メモリの制限

-m 物理内存 [--memory-swap=总值]

3. ディスク IO の制限

--device-read-bps 设备文件:1mb/1M     #限制读速度
--device-write-bps 设备文件:1mb/1M    #限制写速度
--device-read-iops                   #限制读次数
--device-write-iops                  #限制写次数
 ​
docker system prune -a    #清理磁盘,删除关闭的容器、无用的数据卷和网络。

Supongo que te gusta

Origin blog.csdn.net/TTSuzuka/article/details/128456398
Recomendado
Clasificación