私はこれら2つのメカニズム(AとBと呼ぶ)がプロセスのリソースを制限することを知っています。
二人が一緒に働く姿が気になります。
Aがプロセスのリソースを制限している場合、Bも同じリソースを制限するとどうなりますか?
答え1
すべての制限は独立して適用されます。プロセスが特定の制限を超える要求を行うと、要求は拒否されます。これは、制限がcgroup、プロセス固有、またはユーザー固有であるかどうかを示します。
cgroupはプロセスグループごとに制限を設定し、setrlimitはユーザーまたはプロセスごとに制限を設定するため、これらのメカニズムは通常重複しません。特定の要求は、cgroupとsetrlimitの両方の制限を超えるか、どちらか一方を超えることができます。
すべての制限は許容される最大値であり、保証された最小値ではありません。たとえば、各プロセスのメモリ制限が1 GBの場合、200 MBのメモリを持つプロセスが100 MBのメモリを割り当てる要求は、適用可能な制限に関係なく、システムに利用可能なメモリがない場合は拒否される可能性があります。 setrlimitとcgroupの両方の制限が適用される場合、setrlimitの最大値、cgroupの最大値、および現在使用可能なリソースの最大値など、少なくとも3つの最大値を超えることがあります。
答え2
ulimit/setrlimit/getrlimit
これulimit
シェルコマンド(実行可能プログラム)はラッパーsetrlimit
システムコール(カーネルが提供する関数)、制限情報を含む基本データ構造をいいますrlimit
。
ulimit
シェルコマンド利用可能なリソースのソフトおよびハード制限の制御シェルそしてそれによって開始されたプロセス。
getrlimit()
そしてsetrlimit()
システムコール関連するソフト制限とハード制限は、構造によって定義されているリソース制限をそれぞれ取得して設定しますrlimit
。
man 1 ulimit
詳細については、以下を使用してください。man 2 setrlimit
グループC
Cgroupを使用すると、CPU時間、システムメモリ、ネットワーク帯域幅、またはこれらのリソースの組み合わせなどのリソースを割り当てることができます。システムで実行されるカスタムタスク(プロセス)グループ間。
DM ulimit
プロセス固有の設定や調整速度とは何の関係もありません。これがcgroups
カーネル拡張の機能であり目的です。それが提供する他の機能の1つに言及すると、設定階層を定義することもできると言えます。
気づく私はあなたが読むことを提案しますこの記事早く学ぶulimit
/ setrlimit
。 (統制グループ)の場合は、cgroups
以下をお読みください。Red Hat 公式ドキュメント。