この記事は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年の展望: ハイブリッドクラウドがクラウドコンピューティングの後半期の幕開け
[[422709]] 1. JAVA並行性モデル共有メモリモデル共有メモリ同時実行モデルでは、スレッ...
すべてのものには常に 2 つの反対の要素があるようです。これは自然の法則かもしれません。SEO にも...
2014 年 4 月 17 日、中国にインターネットが導入されてから 20 年目に、IT Times...
WordPressの親会社が1億6000万ドルを調達先月、フォーチュン誌は、ブログプラットフォーム運...
6月3日午後のA5ウェブマスターネットワークニュース:今日の午後、皆さんのBaidu検索は正常だった...
1. キャッシュの概要キャッシュは分散システムの重要なコンポーネントであり、主に高同時実行性およびビ...
2012年上半期には、多くの大手電子商取引企業が「価格戦争」に参入し、中小電子商取引企業の市場シェア...
日々の最適化では、ウェブマスターのウェブサイトで最適化に関する記事をいつも読んでいます。そこには、私...
2001年に設立されたアメリカのサーバープロバイダーであるHostirianは、米国セントルイスに2...
Baidu入札は徐々に各界に広まっており、商業利益に関わる言葉を検索する限り、基本的に上位にランクイ...
「外部リンクが王様、コンテンツは二の次」「今や検索エンジンが最も重視するのはユーザーエクスペリエ...
今日はビリビリについてお話しましょう。 1.ステーションBは水平方向と垂直方向の両方でサークルを突破...
edgevirt はどうですか? edgevirt vps はどうですか? HostCat のウェブ...
適者生存と業界の再編を経て、ライブストリーミングは新たな段階に入りました。トップキャスターとして光栄...
はじめに:オーストラリアのデザイナー向けクラウドソーシングサービス「DesignCrowd」の創設者...