LINUX CGROUPの概要

要約:

    完全CGROUP LinuxのLinuxのコントロールグループでは、Linuxカーネルは、限定的な分離プロセス・リソース・グループ(例えば、CPU、メモリ、ディスク入出力、等)を制御する機能です。このプロジェクトは、最初2006年にGoogleのエンジニア(主にポール・メナージュとのRohitセス)、処理容器(プロセス・コンテナー)のための最も初期の名によって開始されました。2007年には、Linuxカーネルのように、コンテナ(コンテナ)用語は混乱を避けるために、cgroup内の名前が変更され、広すぎる、と2.6.24へのカーネルのバージョンに組み込まれています。その後、他のは、彼の開発を始めました。 

   LinuxのCGroupCgroupシステムでは、これらのタスクを実行することができますリソースを割り当てられたユーザグループの定義の(プロセス)ソース - 時間の割合CPU、メモリ・システム、ネットワーク一緒にこれらのグループやネットワーク帯域幅のリソース。あなたのモニターののcgroupを設定することができ、cgroup内を拒否しましたでも、学部を実行中に、いくつかのリソースへのアクセス、あなたのcgroup内の動的構成システム。


主な特長:

  1. 使用してファイルシステムを制限し、このようなメモリキャッシュの制限として、リソースの使用を制限します。
  2. 優先制御、CPU使用率やディスクIOスループット。
  3. いくつかの監査またはいくつかの統計情報、課金の主な目的。
  4. プロセスが実行プロセスを再開サスペンド。


cgroupサブシステム


  1. CPUサブシステム、プロセスのCPU使用率の主要な制限。
  2. cpuacctサブシステムは、使用状況レポートの過程で統計のcgroupをCPUできます。
  3. cpusetのサブシステムは、別のノードが割り当てられてもよいし、メモリノードのCPU処理をのcgroup。
  4. メモリ・サブシステム、プロセスのメモリ使用量を制限することができます。
  5. blkioサブシステムは、ブロック・デバイスは、IOのプロセスを制限することができます。
  6. プロセスを制御することができる装置サブシステムは、特定のデバイスにアクセスすることができます。
  7. net_clsサブシステム、ネットワークパケットがプロセス内のcgroupをマークすることができる、モジュールは、TC(トラフィック制御)制御データパケットを使用することができます。
  8. net_prio - このサブシステムは、ネットワーク・トラフィックの優先順位を設計するために使用されます
  9. 冷凍庫サブシステムは、回復の過程に中断またはのcgroupがあります。
  10. NSサブシステムは、あなたが異なるのcgroup次のプロセスは、異なる名前空間を使用することができます
  11. たhugetlb - このサブシステムは、主に大規模なページ・ファイル・システムであるたhugetlbシステムの制限、を対象としています。


cgroupの階層(階層)

       リソースの制約1つまたは少数のcgroupサブシステムのコントロール群を表現するのcgroupカーネル構造。cgroup構造は、ツリー構造は、それぞれが階層構造と呼ばのcgroup用のcgroupからなる、ツリーの形態で編成されてもよいです。

      cgroupの階層は、現在の階層構造は、その添付のcgroupサブシステムのリソースを制限することができ、一つまたは複数ののcgroupサブシステムを取り付けることができます。各のcgroupサブシステムは、CPUだけ階層に添付することができます。

このチャートをよく理解します:


cgroupsa±、cº§c»」AEZ "c¤ºae" ?? A>¾


      ノード(cgroup内構造)ののcgroupの階層が作成された後、プロセスは、すべてのプロセスが現在のノードのリソースの制限内のノードによって制御されるリスト、タスク制御ノードのリストに追加することができます。別のcgroupの階層は、異なるシステムリソースを担当することができるので、同時に1つのプロセスはまた、異なるノードのcgroupの階層に追加することができます。だから、cgroup内のプロセスや構造は、1対多の関係です。

cgroupsa±、cº§c»」AEZ "c¤ºae" ?? A>¾


      上面这个图从整体结构上描述了进程与 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/
   1559033413(1)


写个死循环测试程序增加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リソースの制約と最初の書き込みまでの他の基本合意


おすすめ

転載: www.cnblogs.com/menkeyi/p/10941843.html