この記事は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年の展望: ハイブリッドクラウドがクラウドコンピューティングの後半期の幕開け
.xxx ドメイン名はしばらく前から出回っていますが、その価格は高止まりしており、ドメイン名で遊ぶの...
infinityhosts は 2009 年に設立されたインドの会社です。同社が提供する VPS ホ...
昨日、タオバオモールは名前をTmall.comに変更しました。これは3〜4億人の友達の心を傷つけまし...
9月19日、待望の2018年杭州雲斉大会が盛大に開催され、雲斉鎮は再びWeChatモーメンツで広く話...
ナスダックは、フェイスブックが今夜23時頃に取引を開始すると発表北京時間5月18日早朝、ナスダックは...
Velocihost は設立されてまだ半年ですが、KVM + SSD をベースにした低価格の VPS...
百度は過去2日間で大量のウェブサイトを禁止しました。喜びと悲しみの両方があります。禁止された人は不幸...
6月18日、JD.comは創立14周年を記念して今年最大のプロモーションを開始し、価格戦争を仕掛ける...
SEO の知識は確かに簡単に習得できます。実際、「Baidu Search Engine Optim...
昨年6月28日のBaidu Kサイトから外部リンク拒否ツールのリリース、今年のGreen Radis...
Hyper-V はさまざまな方法で仮想化を簡素化します。仮想リソースの管理、複数の VM の同時実行...
「58.com、魔法のウェブサイト!」ヤン・ミーをスポークスマンに迎えた58.comの広告は、バスや...
厳密に言えば、「コンテンツ マーケティング: SEO 戦略の選択」の記事で説明されているコンテンツ ...
多くの上司は、スライス サーバー、ダウンロード サーバー、CDN サーバー、仮想マシン、超高性能タス...
今日は何もすることがないので、映画コレクションステーションの運用アイデアについてお話ししましょう。私...