この記事はWeChat公式アカウント「妹の味」から転載したもので、著者は妹が飼っている犬です。記事を転載する場合は、ミスシスターテイスト公式アカウントまでご連絡ください。 Docker に触れたことのある学生の多くは、cgroup という用語に出会ったことがあるでしょう。 CPU、メモリなどのリソース制限を実装するのは Linux 上の古い技術です。しかし、多くの学生から、この技術は少しわかりにくく、理解するのが難しいという報告がありました。 これがこの記事の目的であり、最もシンプルかつ直感的な方法で cgroups が何であるかを理解できるようにします。 cgroups は、docker 関数を実装するための重要な基盤機能です。上図に示すように、cgroups を使用すると、オペレーティング システムのさまざまなリソースをプールに変換し、構成を通じて対応するリソースを取得できます。 それで、それはどのように達成されるのでしょうか? cgroups という用語に注意してください。これには 2 つの特性があります。まず、c は Control を意味し、これは動詞です。 2 番目の部分はグループであり、これがグループであることを証明します。 1. 動詞の目的 制御は何を制限するために使用しますか? CPUとメモリ以外に何がありますか? 現在のシステムでサポートされている制限されたターゲットを表示するには、mount コマンドを使用します。サブシステムと呼ばれる特別な用語があります。
システムのバージョンによって微妙な違いがあります。一般的に、サブシステムの分類には次のものが含まれます。
内容は多岐にわたりますが、私たちが普段注目するのはメモリとCPUです。これらの複雑な詳細は、設計原理の理解には影響しません。 CPU を例に取って、システムの実際のパフォーマンスを見てみましょう。 2. CPU使用制限の例 まず、CPU サブシステム ディレクトリに入ります。
次に、グループ名 xjjdog で cgroup を作成します。この名前はコントロールグループと呼ばれます。
このとき、不思議なことが起こりました。 ll コマンドを使用して xjjdog ディレクトリの内容を表示すると、システムによってデフォルトで多数のファイルが生成されたことがわかります。
これらのファイル内の値を制御することで、リソースを制限することができます。例えば、cpu.cfs_quota_us ファイルに 100000 (10 万) と書き込むと、xjjdog の cgroup が使用され、CPU のコアが最大 1 つ使用できることが証明されます。 20000 と書くと、CPU コアの最大 1/5 が使用されていることが証明されます。 これは、cpu.cfs_period_us 構成ファイルがデフォルトで 1 つの CPU コアを 100,000 個の部分に分割するためです。 次に 20000 と書いて試してみます。
現在のシェルの pid を制御対象プロセスのリストに追加します。
実行が完了すると、無限ループが開始されます。
シェルを再度開き、top を使用して CPU 使用率を確認します。無限ループでは CPU が最大で 20% しか使用されていないことがわかります。 us は 20% 未満に留まり、CPU を継続的に切り替えます。 以下のコマンドを 1 つずつテストすると、CPU 使用率が徐々に増加し、ほぼ限界に達することがわかります。
その他のリソース制約も同様のアプローチに従います。最も重要なことは、cpu.cfs_quota_us などの単語の意味を知ることです。これらはマニュアルを読めば簡単に理解できます。たとえば、quota は割り当てを意味し、明らかにリソースの使用を制限することを意味します。 上記のように、サブシステムは複数のタスクを制御し、それらを制御グループに含めることができます。前回の記事では、docker システムの 1 番目のプロセスとして bash プロセスを使用できることを説明しました。同様に、このプロセス 1 の子プロセスは同じ制限構成を共有します。 3. グループの意味 一般的に、グループとはさまざまなリソースをグループ化することを指します。名前が異なるリソースには、異なる分離構成があります。しかし、他にも多くの機能があります。 さらに重要なのはその階層です。これも比較的理解しやすいもので、主に構成を簡素化するために存在します。 たとえば、上記の xjjdog ディレクトリでは、CPU が 0.5 コアに制限されます。今回は、CPU の使用を 0.5 コア、メモリを 1 GB に制限する別のアプリケーションを用意したいと思います。次に、xjjdog ディレクトリの下に xjjdog0 ディレクトリを直接作成し、xjjdog0 ディレクトリの下のメモリのみを構成できます。 さらに、外側のレイヤーで CPU クォータを 2 コアに制限し、継承されたディレクトリで 1/5 コアに制限すると、オペレーティング システムの 2/5 コアしか使用できなくなります。これも継承の特徴です。 終わり cgroups は、2006 年に Google のエンジニア (Rohit Seth と Paul Menage) によって作成されました。 2008 年に Linux バージョン 2.6.24 に統合されたこのテクノロジは非常に古いと言えます。 Cgroups は現在、systemd、Docker、Linux Containers (LXC) などのテクノロジーの基盤となっています。 たとえば、Windows プラットフォーム上の WSL には cgroups 機能がないため、mount コマンドを使用して確認すると、基盤が不足しているため Docker を実行できないことがわかります。ただし、WSL2 ではすでにそれが実現されています。 Docker の現在の開発状況に少し不安を感じている学生もいますが、こうした共通の基本原理を理解してコンテナ標準を読んでいくと、Docker に置き換えても containerd に置き換えても上位層の実装は同じであることがわかります。 著者について: Sister Taste (xjjdog)、プログラマーが寄り道をすることを許可しない公開アカウント。インフラストラクチャと Linux に重点を置きます。 10 年間のアーキテクチャと 1 日あたり数千億のトラフィックを基に、私たちはお客様とともに高並行性の世界を探求し、新たな体験をお届けします。私の個人WeChatはxjjdog0です。今後のコミュニケーションのために、私を友達として追加してください。 |
<<: WeChat for Business が今後 10 年間で 12 億人の WeChat 顧客を獲得する方法
>>: 2021年の展望: ハイブリッドクラウドがクラウドコンピューティングの後半期の幕開け
ルーマニアの商人 hostsolutions からの最新のメール: 新年に朗報です。リチャージすると...
2020 年には、さらに多くの政府機関がクラウド コンピューティングの可能性を最大限に活用するでしょ...
昨日、タオバオの「買物便利」(24.taobao.com)が正式に開始され、北京と杭州が最初の試験運...
以前、「*** のメッセージ プッシュ システムの設計」という記事を共有しました。記事にはいくつかの...
記事の概要:このゲームは2015年夏に正式リリースされる予定で、iOS、Android、その他のモバ...
Baiduが新たなアップデートを開始し、多くのサイトに影響を与えています。前回の大規模なKサイト削除...
[[268369]]クラウドコンピューティングとは何ですか? 1.1 クラウドコンピューティングの概...
SEO を始めたばかりの友人の多くは、SEO をうまく行う方法に関心を持っています。SEO を行う上...
2005 年、Google はブログ (フォーラム) 上のスパムコメント広告リンクの増加を効果的に抑...
host1plus の最新プロモーション、1 月の 20% オフは、Amber を除く host1p...
業界関係者によると、海外の動画サイトは差別化を図りながら共存しているが、国内の動画サイトは今後さらに...
9月28日、百度スマートクラウド2021「クラウドインテリジェンステクノロジーフォーラム」インテリジ...
IT Times記者 ユー・シンフェイかつて100万元だったヤオミンのドメイン名「yaoming.n...
誰もがローカル Web サイトをよく知っていますが、草の根の Web マスターはどのようにして優れた...
外部リンクの掲載形式や掲載場所は、業界によって異なります。外部リンク担当者は、外部リンクを構築すると...