この記事は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年の展望: ハイブリッドクラウドがクラウドコンピューティングの後半期の幕開け
経験豊富なウェブマスターは皆、SEOの重要性を知っています。彼らは常にSEOに依存しており、SEOが...
共同購入業界は縮小している。 Tuan800の最新レポートによると、6月末現在、国内の共同購入サイト...
[51CTO.com からのオリジナル記事] ゲームといえば、NetEase Games について触...
この記事は、この地域の企業に基づいて書かれています。多くの企業は、SEO を選択することで会社にどの...
私が開設して1年以上経った石家荘証券ネットワークは、すでに運営されています。この1年間で、ウェブサイ...
[[356529]]シータ公式サイト: http://seata.io/zh-cn/序文マイクロサー...
こんにちは、私は鄭歌です。多くの人がこの問題に遭遇すると思います。コンテナは正常に動作していましたが...
1. 背景新しいサイト機能またはサイト内の新しい戦略の開発が完了したら、フルトラフィックを開始する前...
データセンターのスイッチング機器の需要は増加し続けており、エッジロケーションの増加もその要因となって...
6月28日の事件以来、百度はユーザーエクスペリエンスとネットワーク環境の向上、そしてユーザーへのより...
最近、かつて有名だった国内化粧品ブランド「夏飛」の創業者、曹建華氏が「ねずみ講」に関与していた疑いが...
テンセントクラウドは5月18日、韓国ソウル観光体育局との提携を発表した。 Tencent Cloud...
Hostdare はロサンゼルスに NVMe SSD と SSD ハード ドライブを搭載した cn2...
ウェブマスターネットワーク(www.admin5.com)が10月9日に伝えたところによると、買収発...
7月3日のウェブマスターネットワーク(www.admin5.com)によると、2013年上半期はあっ...