要約:
完全CGROUP LinuxのLinuxのコントロールグループでは、Linuxカーネルは、限定的な分離プロセス・リソース・グループ(例えば、CPU、メモリ、ディスク入出力、等)を制御する機能です。このプロジェクトは、最初2006年にGoogleのエンジニア(主にポール・メナージュとのRohitセス)、処理容器(プロセス・コンテナー)のための最も初期の名によって開始されました。2007年には、Linuxカーネルのように、コンテナ(コンテナ)用語は混乱を避けるために、cgroup内の名前が変更され、広すぎる、と2.6.24へのカーネルのバージョンに組み込まれています。その後、他のは、彼の開発を始めました。
LinuxのCGroupCgroupシステムでは、これらのタスクを実行することができますリソースを割り当てられたユーザグループの定義の(プロセス)ソース - 時間の割合CPU、メモリ・システム、ネットワーク一緒にこれらのグループやネットワーク帯域幅のリソース。あなたのモニターののcgroupを設定することができ、cgroup内を拒否しましたでも、学部を実行中に、いくつかのリソースへのアクセス、あなたのcgroup内の動的構成システム。
主な特長:
- 使用してファイルシステムを制限し、このようなメモリキャッシュの制限として、リソースの使用を制限します。
- 優先制御、CPU使用率やディスクIOスループット。
- いくつかの監査またはいくつかの統計情報、課金の主な目的。
- プロセスが実行プロセスを再開サスペンド。
cgroupサブシステム
- CPUサブシステム、プロセスのCPU使用率の主要な制限。
- cpuacctサブシステムは、使用状況レポートの過程で統計のcgroupをCPUできます。
- cpusetのサブシステムは、別のノードが割り当てられてもよいし、メモリノードのCPU処理をのcgroup。
- メモリ・サブシステム、プロセスのメモリ使用量を制限することができます。
- blkioサブシステムは、ブロック・デバイスは、IOのプロセスを制限することができます。
- プロセスを制御することができる装置サブシステムは、特定のデバイスにアクセスすることができます。
- net_clsサブシステム、ネットワークパケットがプロセス内のcgroupをマークすることができる、モジュールは、TC(トラフィック制御)制御データパケットを使用することができます。
- net_prio - このサブシステムは、ネットワーク・トラフィックの優先順位を設計するために使用されます
- 冷凍庫サブシステムは、回復の過程に中断またはのcgroupがあります。
- NSサブシステムは、あなたが異なるのcgroup次のプロセスは、異なる名前空間を使用することができます
- たhugetlb - このサブシステムは、主に大規模なページ・ファイル・システムであるたhugetlbシステムの制限、を対象としています。
cgroupの階層(階層)
リソースの制約1つまたは少数のcgroupサブシステムのコントロール群を表現するのcgroupカーネル構造。cgroup構造は、ツリー構造は、それぞれが階層構造と呼ばのcgroup用のcgroupからなる、ツリーの形態で編成されてもよいです。
cgroupの階層は、現在の階層構造は、その添付のcgroupサブシステムのリソースを制限することができ、一つまたは複数ののcgroupサブシステムを取り付けることができます。各のcgroupサブシステムは、CPUだけ階層に添付することができます。
このチャートをよく理解します:
ノード(cgroup内構造)ののcgroupの階層が作成された後、プロセスは、すべてのプロセスが現在のノードのリソースの制限内のノードによって制御されるリスト、タスク制御ノードのリストに追加することができます。別のcgroupの階層は、異なるシステムリソースを担当することができるので、同時に1つのプロセスはまた、異なるノードのcgroupの階層に追加することができます。だから、cgroup内のプロセスや構造は、1対多の関係です。
上面这个图从整体结构上描述了进程与 cgroups 之间的关系。最下面的P代表一个进程。每一个进程的描述符中有一个指针指向了一个辅助数据结构css_set(cgroups subsystem set)。 指向某一个css_set的进程会被加入到当前css_set的进程链表中。一个进程只能隶属于一个css_set,一个css_set可以包含多个进程,隶属于同一css_set的进程受到同一个css_set所关联的资源限制。
上图中的”M×N Linkage”说明的是css_set通过辅助数据结构可以与 cgroups 节点进行多对多的关联。但是 cgroups 的实现不允许css_set同时关联同一个cgroups层级结构下多个节点。 这是因为 cgroups 对同一种资源不允许有多个限制配置。
一个css_set关联多个 cgroups 层级结构的节点时,表明需要对当前css_set下的进程进行多种资源的控制。而一个 cgroups 节点关联多个css_set时,表明多个css_set下的进程列表受到同一份资源的相同限制。
实践操作
查看cgroup挂载点(centos7.5):
1 [root@k8s-master ~]# mount -t cgroup 2 cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd) 3 cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids) 4 cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) 5 cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) 6 cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu) 7 cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) 8 cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) 9 cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb) 10 cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) 11 cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) 12 cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
创建隔离组
[root@k8s-master ~]# cd /sys/fs/cgroup/cpu
[root@k8s-master cpu]# mkdir cpu_test
目录创建完成会自动生成以下文件
[root@k8s-master cpu]# ls cpu_test/
写个死循环测试程序增加cpu使用率
1メインINT(ボイド) 2 { 3 int型i = 0; 4 のための(;;)は、i ++は。 5 リターン0; 6 }
プログラムを起動した後、CPU使用率が100%
デフォルト値は-1今や理解されるであろ20,000変更、限定されるものではないことの20%の使用制限
[ルート@ K8S-マスターCPU]#エコー20000> /sys/fs/cgroup/cpu/cpu_test/cpu.cfs_quota_us
プロセスの数がダウン迅速トップCPU使用率を見て内部のCPUのタスクを増加して下さい
#エコー23732 >> / SYS / FS / cgroup内/ CPU / cpu_test /タスク[K8S-マスター〜@ルート]は、
CPUリソースの制約と最初の書き込みまでの他の基本合意