Linux では、コントロールグループ (cgroup) は、cgroup 内のタスク (プロセス) に割り当てられる CPU、メモリ、I/O リソースなどの物理リソースを制限、記録、分離するリソース管理および制限メカニズムを提供します。親 cgroup を使用して、子孫 cgroup のリソース使用量を制御できます。cgroup v1 と cgroup v2 は cgroup の 2 つのメジャーバージョンであり、設計と使用方法が大幅に異なります。このトピックでは、cgroup v1 と cgroup v2 の主な違いについて説明します。
共通インターフェイスの違い
cgroup v1 インターフェイス
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v2 インターフェイス |
cgroup.procs | cgroup にタスクを移行するためにプロセス ID (PID) を書き込みます。 | いいえ | cgroup.procs。 |
cgroup.clone_children | 値が 1 の場合、子 cgroup は親 cgroup の cpuset 構成を継承することを示します。 説明 このインターフェイスは cpuset サブシステムでのみ有効であり、歴史的な理由から共通インターフェイスとして分類されています。 | いいえ | N/A |
cgroup.sane_behavior | cgroup v2 インターフェイスの実験的な特徴をサポートし、下位互換性を提供します。 | いいえ | N/A |
notify_on_release | 値が 1 の場合、cgroup が空になると release_agent インターフェイスのタスクが実行されることを示します。 説明 これらのインターフェイスはルート cgroup にのみ存在します。 | いいえ | cgroup.events、同様の機能を実装 |
release_agent | いいえ | ||
tasks | cgroup にスレッドを移行するためにスレッド ID (TID) を書き込みます。 | いいえ | cgroup.threads。 |
pool_size | cgroup キャッシュプールのサイズを制御します。cgroup キャッシュプールは、高同時実行シナリオでの cgroup の作成とバインドを高速化するのに役立ちます。 説明 このインターフェイスは cgroup_rename に依存しており、cgroup v2 では使用できません。 | はい | N/A |
cgroup v2 インターフェイス
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v1 インターフェイス |
cgroup.procs | cgroup にタスクを移行するために PID を書き込みます。 | いいえ | cgroup.procs。 |
cgroup.type | 文字列 "threaded" を書き込んで cgroup をスレッド化 cgroup に変更し、スレッド粒度の制御を提供します。 説明 cpu、pids、および perf_event のスレッド化コントローラーのみがサポートされています。 | いいえ | N/A |
cgroup.threads | cgroup にスレッドを移行するために TID を書き込みます。 説明 文字列 "threaded" を cgroup.type インターフェイスファイルに書き込む必要があります。 | いいえ | タスク。 |
cgroup.controllers | 現在の cgroup で利用可能なすべてのサブシステムをクエリします。 | いいえ | N/A |
cgroup.subtree_control | cgroup からその子 cgroup へのリソース配布を制御するために有効にするサブシステムを指定します。 説明 サブシステムは cgroup.controllers インターフェイスを使用してクエリできます。 | いいえ | N/A |
cgroup.events | 現在の cgroup にアクティブなプロセスが存在するかどうか、および現在の cgroup が凍結されているかどうかをクエリします。fsnotify を使用してこのインターフェイスをリッスンし、インターフェイスのステータスが変更されたかどうかを確認できます。 説明 このインターフェイスはルート cgroup には存在しません。 | いいえ | notify_on_release と release_agent は、同様の機能を実装するために一緒に使用されます |
cgroup.max.descendants | 現在の cgroup で許可される子孫 cgroup の最大数を制御します。 | いいえ | N/A |
cgroup.max.depth | 現在の cgroup で許可される子孫 cgroup の最大深度を制御します。 | いいえ | N/A |
cgroup.stat | 現在の cgroup の下にある子孫 cgroup の数と、Dying (削除済み) 状態にある子孫 cgroup の数をクエリします。 | いいえ | N/A |
cgroup.freeze | cgroup 内のタスクを凍結するかどうかを制御します。 説明 このインターフェイスはルート cgroup には存在しません。 | いいえ | freezer サブシステムの freezer.state |
cpu.stat | CPU 使用率に関する統計をクエリします。 | いいえ | N/A |
io.pressure | I/O パフォーマンス、メモリ、および CPU の Pressure Stall Information (PSI) をクエリします。この情報はポーリングできます。詳細については、次のトピックをご参照ください。
| いいえ | cpuacct サブシステムの io.pressure、memory.pressure、および cpu.pressure インターフェイス。これらは PSI 機能を実装できます |
memory.pressure | いいえ | ||
cpu.pressure | いいえ |
サブシステムインターフェイスの違い
CPU
cgroup v1 インターフェイス
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v2 インターフェイス |
cpu.shares | cgroup 内のタスクに CPU 時間スライスを割り当てる基準となる重みを制御します。デフォルト値: 1024。 | いいえ | cpu.weight と cpu.weight.nice、単位が異なります |
cpu.idle | 現在の cgroup にアイドルスケジューリングポリシーを使用するかどうかを制御します。アイドルスケジューリングポリシーは、最小の CPU シェアに基づいて時間スライスを割り当てます。最小ランタイムはサポートされなくなり、CPU リソースを非アイドルタスクに簡単に割り当てることができます。 説明 cpu.idle の値が 1 に設定されている場合、cpu.shares インターフェイスは書き込み不可になり、3 にのみ設定されます。 | いいえ | cpu.idle |
cpu.priority | 詳細なプリエンプティブ優先度。プリエンプションは、クロックが中断されたり、ウェイクアップされたりしたときに実行されます。詳細なプリエンプティブ優先度は、優先度の違いに基づいて変化し、高優先度のタスクが低優先度のタスクのメモリをプリエンプトできるようにします。 | はい | cpu.priority |
cpu.cfs_quota_us | Completely Fair Scheduler (CFS) を使用して制御される CPU ランタイム。cpu.cfs_quota_us は、cpu.cfs_period_us インターフェイスで定義された期間内に cgroup 内のタスクの最大 CPU ランタイムを指定します。 | いいえ | cpu.max |
cpu.cfs_period_us | いいえ | ||
cpu.cfs_burst_us | cpu.cfs_period_us インターフェイスで定義された期間内にタスクがバーストできる期間。詳細については、「cgroup v1 の CPU バースト機能を有効にする」をご参照ください。 | いいえ | cpu.max.burst |
cpu.cfs_init_buffer_us | cgroup 内のタスクが開始されたときにバーストできる期間。 | はい | cpu.max.init_buffer |
cpu.stat | cpu.cfs_period_us 期間の数や、タスクが使用する CPU リソースがスロットルされた回数など、CPU ランタイムに関する統計をクエリします。 | いいえ | cpu.stat |
cpu.rt_runtime_us | リアルタイム CPU ランタイムを制御します。cpu.rt_runtime_us は、cpu.rt_period_us 期間内に cgroup 内のリアルタイムタスクの最大ランタイムを指定します。 | いいえ | N/A |
cpu.rt_period_us | いいえ | N/A | |
cpu.bvt_warp_ns | グループ ID 属性を制御して cgroup の ID を変更します。これを使用してオフラインタスクを区別し、オンラインタスクに対してより良い CPU サービス品質 (QoS) 保証を提供できます。詳細については、「グループ ID 機能」をご参照ください。 | はい | cpu.bvt_warp_ns |
cpu.identity | はい | cpu.identity | |
cpu.ht_stable | 同時マルチスレッディング (SMT) のピアノイズを生成して、一貫した SMT 計算能力を維持するかどうかを指定します。 | はい | N/A |
cpu.ht_ratio | SMT ピアがアイドル状態のときにクォータを使用して追加の計算能力を提供し、一貫した SMT 計算能力を維持するかどうかを制御します。 | はい | cpu.ht_ratio |
cgroup v2 インターフェイス
cgroup v2 は cpuacct サブシステムをサポートしなくなりました。cpuacct サブシステムの特定のインターフェイスまたは関連する特徴は、cgroup v2 の CPU サブシステムによって実装されます。
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v1 インターフェイス |
cpu.weight | cgroup 内のタスクに CPU 時間スライスを割り当てる基準となる重みを制御します。デフォルト値: 100。 | いいえ | cpu.shares、単位が異なります |
cpu.weight.nice | cgroup 内のタスクに CPU 時間スライスを割り当てる基準となる重みを制御します。デフォルト値: 0。 | いいえ | cpu.shares、単位が異なります |
cpu.idle | 現在の cgroup にアイドルスケジューリングポリシーを使用するかどうかを制御します。アイドルスケジューリングポリシーは、最小の CPU シェアに基づいて時間スライスを割り当てます。最小ランタイムはサポートされなくなり、CPU リソースを非アイドルタスクに簡単に割り当てることができます。 説明 cpu.idle の値が 1 の場合、cpu.weight および cpu.weight.nice インターフェイスは書き込み不可になり、最小の重み 0.3 が有効になります。この場合、cpu.weight の値は 0 に丸められます。 | いいえ | cpu.idle |
cpu.priority | 詳細なプリエンプティブ優先度。プリエンプションは、クロックが中断されたり、ウェイクアップされたりしたときに実行されます。詳細なプリエンプティブ優先度は、優先度の違いに基づいて変化し、高優先度のタスクが低優先度のタスクのメモリをプリエンプトできるようにします。 | はい | cpu.priority |
cpu.max | CFS を使用して制御される CPU ランタイム。cpu.cfs_quota_us は、cpu.cfs_period_us 期間内に cgroup 内のタスクの最大 CPU ランタイムを指定します。 | いいえ | cpu.cfs_quota_us、cpu.cfs_period_us |
cpu.max.burst | cpu.max インターフェイスで定義された期間内にタスクがバーストできる期間。 | いいえ | cpu.max.burst |
cpu.max.init_buffer | cgroup 内のタスクが開始されたときにバーストできる期間。 | はい | cpu.cfs_init_buffer_us |
cpu.bvt_warp_ns | グループ ID 属性を制御して cgroup の ID を変更します。これを使用してオフラインタスクを区別し、オンラインタスクに対してより良い CPU QoS 保証を提供できます。 | はい | cpu.bvt_warp_ns |
cpu.identity | はい | cpu.identity | |
cpu.sched_cfs_statistics | cgroup のランタイムや、同じレベルまたは異なるレベルの cgroup の待機時間など、CFS に関する統計をクエリします。 説明 kernel.sched_schedstats オプションを有効にする必要があります。 | はい | cpuacct.sched_cfs_statistics |
cpu.wait_latency | キューで待機しているタスクのレイテンシをクエリします。 説明 kernel.sched_schedstats および /proc/cpusli/sched_lat_enabled オプションを有効にする必要があります。 | はい | cpuacct.wait_latency |
cpu.cgroup_wait_latency | キューで待機している cgroup のレイテンシをクエリします。wait_latency インターフェイスはタスクスケジューリングエンティティ (SE) のレイテンシをカウントし、cgroup_wait_latency インターフェイスはグループ SE のレイテンシをカウントします。 説明 kernel.sched_schedstats および /proc/cpusli/sched_lat_enabled オプションを有効にする必要があります。 | はい | cpuacct.cgroup_wait_latency |
cpu.block_latency | 非 I/O 原因でブロックされたタスクのレイテンシをクエリします。 説明 kernel.sched_schedstats および /proc/cpusli/sched_lat_enabled オプションを有効にする必要があります。 | はい | cpuacct.block_latency |
cpu.ioblock_latency | I/O 操作が原因でブロックされたタスクのレイテンシをクエリします。 説明 kernel.sched_schedstats および /proc/cpusli/sched_lat_enabled オプションを有効にする必要があります。 | はい | cpuacct.ioblock_latency |
cpu.ht_ratio | SMT ピアがアイドル状態のときにクォータを使用して追加の計算能力を提供し、一貫した SMT 計算能力を維持するかどうかを制御します。 説明 このインターフェイスは、コアスケジューリング機能が有効な場合にのみ有効です。 | はい | cpu.ht_ratio |
cpuset
cgroup v1 インターフェイス
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v2 インターフェイス |
cpuset.cpus | タスクが実行できる CPU を制御します。 説明 このインターフェイスが空の場合、タスクを cgroup にアタッチすることはできません。 | いいえ | cpuset.cpus |
cpuset.mems | cgroup 内のタスクに割り当てることができる非均一メモリアクセス (NUMA) ノードを制御します。 説明 このインターフェイスが空の場合、タスクを cgroup にアタッチすることはできません。 | いいえ | cpuset.mems |
cpuset.effective_cpus | タスクが実行されている有効な CPU をクエリします。このインターフェイスの値は、CPU ホットプラグイベントの影響を受けます。 | いいえ | cpuset.cpus.effective |
cpuset.effective_mems | 実行中のタスクに割り当てられている有効な NUMA ノードをクエリします。このインターフェイスの値は、メモリノードのホットプラグイベントの影響を受けます。 | いいえ | cpuset.mems.effective |
cpuset.cpu_exclusive | cgroup によって排他的に使用され、cgroup 内の同じレベルの他の cpuset では使用できない CPU を制御します。 | いいえ | cpuset.cpus.partition、同様の機能をサポート |
cpuset.mem_exclusive | cgroup によって排他的に使用され、cgroup 内の同じレベルの他の cpuset では使用できない NUMA ノードを制御します。 | いいえ | N/A |
cpuset.mem_hardwall | 値が 1 の場合、cpuset にアタッチされているメモリノードからのメモリのみをタスクに割り当てることができることを示します。 | いいえ | N/A |
cpuset.sched_load_balance | cpuset 内で CPU が負荷分散されるかどうかを制御します。デフォルトでは、この機能は有効になっています。 | いいえ | N/A |
cpuset.sched_relax_domain_level | スケジューラがタスクを移行してタスクの CPU を負荷分散するときに CPU を検索する範囲を制御します。デフォルト値: -1。
| いいえ | N/A |
cpuset.memory_migrate | ゼロ以外の値は、タスクが cpuset 内のメモリページに割り当てられ、別の cpuset に移行された場合、そのメモリページも新しい cpuset に移行できることを示します。 | いいえ | N/A |
cpuset.memory_pressure | 現在の cpuset のメモリページングプレッシャーを計算します。 | いいえ | N/A |
cpuset.memory_spread_page | 値が 1 の場合、カーネルがページキャッシュを cpuset のメモリノードに均等に割り当てることを示します。 | いいえ | N/A |
cpuset.memory_spread_slab | 値が 1 の場合、カーネルがスラブキャッシュを cpuset のメモリノードに均等に割り当てることを示します。 | いいえ | N/A |
cpuset.memory_pressure_enabled | 値が 1 の場合、cpuset のメモリプレッシャー統計収集が有効になっていることを示します。 | いいえ | N/A |
cgroup v2 インターフェイス
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v1 インターフェイス |
cpuset.cpus | タスクが実行できる CPU を制御します。 説明 このインターフェイスの値が空の場合、親 cpuset の CPU が使用されます。 | いいえ | cpuset.cpus |
cpuset.mems | cgroup 内のタスクに割り当てることができる NUMA ノードを制御します。 説明 このインターフェイスの値が空の場合、親 cpuset の NUMA ノードが使用されます。 | いいえ | cpuset.mems |
cpuset.cpus.effective | タスクが実行されている有効な CPU をクエリします。このインターフェイスの値は、CPU ホットプラグイベントの影響を受けます。 | いいえ | cpuset.effective_cpus |
cpuset.mems.effective | 実行中のタスクに割り当てられている有効な NUMA ノードをクエリします。このインターフェイスの値は、メモリノードのホットプラグイベントの影響を受けます。 | いいえ | cpuset.effective_mems |
cpuset.cpus.partition | cpuset の CPU が排他的に使用されるかどうかを制御します。インターフェイスに root が書き込まれると、cpuset の CPU は排他的に使用されます。 | いいえ | cpuset.cpu_exclusive、同様の機能を実装 |
.__DEBUG__.cpuset.cpus.subpartitions | cpuset.cpus.partition インターフェイスに root が書き込まれたときに、どの CPU が排他的に使用されるかをクエリします。 説明 このインターフェイスは、カーネル cmdline で cgroup_debug 機能が有効になっている場合にのみ使用できます。 | いいえ | N/A |
blkio
cgroup v1 インターフェイス
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v2 インターフェイス |
blkio.throttle.read_bps_device | cgroup がデバイスから読み取ることができる 1 秒あたりの最大バイト数を指定します。 例: echo "<major>:<minor> <bps>" > /sys/fs/cgroup/blkio/<cgroup>/blkio.throttle.read_bps_device | いいえ | io.max |
blkio.throttle.write_bps_device | cgroup がデバイスに書き込むことができる 1 秒あたりの最大バイト数を指定します。 例: echo "<major>:<minor> <bps>" > /sys/fs/cgroup/blkio/<cgroup>/blkio.throttle.write_bps_device | いいえ | io.max |
blkio.throttle.read_iops_device | cgroup がデバイスで実行できる 1 秒あたりの最大読み取り操作数を指定します。 例: echo "<major>:<minor> <iops>" > /sys/fs/cgroup/blkio/<cgroup>/blkio.throttle.read_iops_device | いいえ | io.max |
blkio.throttle.write_iops_device | cgroup がデバイスで実行できる 1 秒あたりの最大読み取り操作数を指定します。 例: echo "<major>:<minor> <iops>" > /sys/fs/cgroup/blkio/<cgroup>/blkio.throttle.write_iops_device | いいえ | io.max |
blkio.throttle.io_service_bytes | 帯域幅の統計をクエリします。 このインターフェイスは、すべてのデバイスの読み取り、書き込み、同期、非同期、破棄、および合計帯域幅の統計を収集します。単位: バイト。 | いいえ | io.stat |
blkio.throttle.io_service_bytes_recursive | blkio.throttle.io_service_bytes インターフェイスの再帰バージョン。 blkio.throttle.io_service_bytes インターフェイスを使用して収集された統計には、子孫 cgroup のデータが含まれます。 | いいえ | N/A |
blkio.throttle.io_serviced | IOPS 統計をクエリします。 このインターフェイスは、すべてのデバイスの読み取り、書き込み、同期、非同期、破棄、および合計 IOPS 統計を収集します。 | いいえ | io.stat |
blkio.throttle.io_serviced_recursive | blkio.throttle.io_serviced インターフェイスの再帰バージョン。 blkio.throttle.io_serviced インターフェイスを使用して収集された統計には、子孫 cgroup のデータが含まれます。 | いいえ | N/A |
blkio.throttle.io_service_time | I/O 操作のリクエストディスパッチからリクエスト完了までの期間をクエリします。これは、平均 I/O レイテンシを測定するために使用されます。 詳細については、「ブロック I/O スロットルの監視を強化する」をご参照ください。 | はい | io.extstat |
blkio.throttle.io_wait_time | I/O 操作がスケジューラキューで待機する期間をクエリします。これは、平均 I/O レイテンシを測定するために使用されます。 詳細については、「ブロック I/O スロットルの監視を強化する」をご参照ください。 | はい | io.extstat |
blkio.throttle.io_completed | 完了した I/O 操作の数をクエリします。これは、平均 I/O レイテンシを測定するために使用されます。 詳細については、「ブロック I/O スロットルの監視を強化する」をご参照ください。 | はい | io.extstat |
blkio.throttle.total_bytes_queued | スロットルされた I/O バイト数をクエリします。これは、I/O レイテンシがスロットルに関連しているかどうかを分析するために使用されます。 詳細については、「ブロック I/O スロットルの監視を強化する」をご参照ください。 | はい | io.extstat |
blkio.throttle.total_io_queued | スロットルされた I/O 操作の数をクエリします。これは、I/O レイテンシがスロットルに関連しているかどうかを分析するために使用されます。 詳細については、「ブロック I/O スロットルの監視を強化する」をご参照ください。 | はい | io.extstat |
blkio.cost.model | blk-iocost コストモデルを指定します。制御モード (ctrl) は auto または user に設定できます。 このインターフェイスはルート cgroup にのみ存在します。例: echo "<major>:<minor> ctrl=user model=linear rbps=<rbps> rseqiops=<rseqiops> rrandiops=<rrandiops> wbps=<wbps> wseqiops=<wseqiops> wrandiops=<wrandiops>" > /sys/fs/cgroup/blkio/blkio.cost.model 詳細については、「blk-iocost の重みベースのスロットル機能を構成する」をご参照ください。 | はい | io.cost.model |
blkio.cost.qos | blk-iocost 機能を制御し、ディスクの輻輳をチェックするための QoS ポリシーを構成します。 このインターフェイスはルート cgroup にのみ存在します。例: echo "<major>:<minor> enable=1 ctrl=user rpct= rlat=5000 wpct=95.00 wlat=5000 min=50.00 max=150.00" > /sys/fs/cgroup/blkio/blkio.cost.qos 詳細については、「blk-iocost の重みスロットルを構成する」をご参照ください。 | はい | io.cost.qos |
blkio.cost.weight | cgroup の重みを指定します。 このインターフェイスは非ルート cgroup にのみ存在し、次のモードで構成できます:
詳細については、「blk-iocost の重みベースのスロットル機能を構成する」をご参照ください。 | はい | io.cost.weight |
blkio.cost.stat | blk-iocost の統計をクエリします。このインターフェイスは非ルート cgroup にのみ存在します。 | はい | N/A |
cgroup v2 インターフェイス
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v1 インターフェイス |
io.max | バイト/秒および IOPS での読み取りおよび書き込みのスロットルレートを指定するスロットルインターフェイス。例: echo "<major>:<minor> rbps=<bps> wbps=<bps> riops=<iops> wiops=<iops>" > /sys/fs/cgroup/<cgroup>/io.max | いいえ | blkio.throttle.read_bps_device blkio.throttle.read_iops_device blkio.throttle.write_bps_device blkio.throttle.write_iops_device |
io.stat | バイト/秒および IOPS での読み取り、書き込み、破棄操作のレートを含む I/O 操作統計をクエリします。 | いいえ | blkio.throttle.io_service_bytes blkio.throttle.io_serviced |
io.extstat | 待機時間、サービス時間、完了した I/O 操作の数、およびバイト/秒と IOPS でのスロットルレートを含む、拡張 I/O 統計をクエリします。 | いいえ | blkio.throttle.io_service_time blkio.throttle.io_wait_time blkio.throttle.io_completed blkio.throttle.total_bytes_queued blkio.throttle.total_io_queued |
io.cost.model | blk-iocost コストモデルを指定します。制御モード (ctrl) は auto または user に設定できます。 このインターフェイスはルート cgroup にのみ存在します。例: echo "<major>:<minor> ctrl=user model=linear rbps=<rbps> rseqiops=<rseqiops> rrandiops=<rrandiops> wbps=<wbps> wseqiops=<wseqiops> wrandiops=<wrandiops>" > /sys/fs/cgroup/io.cost.model 詳細については、「blk-iocost の重みスロットルを構成する」をご参照ください。 | いいえ | blkio.cost.model |
io.cost.qos | blk-iocost 機能を制御し、ディスクの輻輳をチェックするための QoS ポリシーを構成します。 このインターフェイスはルート cgroup にのみ存在します。例: echo "<major>:<minor> enable=1 ctrl=user rpct= rlat=5000 wpct=95.00 wlat=5000 min=50.00 max=150.00" > /sys/fs/cgroup/io.cost.qos 詳細については、「blk-iocost の重みスロットルを構成する」をご参照ください。 | いいえ | blkio.cost.qos |
io.cost.weight | cgroup の重みを指定します。 このインターフェイスは非ルート cgroup にのみ存在し、次のモードで構成できます:
詳細については、「blk-iocost の重みスロットルを構成する」をご参照ください。 | いいえ | blkio.cost.weight |
memory
cgroup v1 インターフェイス
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v2 インターフェイス |
memory.usage_in_bytes | 現在のメモリ使用量をクエリします。 | いいえ | N/A |
memory.max_usage_in_bytes | 最大メモリ使用量をクエリします。 | いいえ | N/A |
memory.limit_in_bytes | メモリ使用量の上限 (ハードリミット) を指定します。 | いいえ | N/A |
memory.soft_limit_in_bytes | メモリ使用量の下限 (ソフトリミット) を指定します。 | いいえ | N/A |
memory.failcnt | メモリ使用量が上限に達した回数をクエリします。 | いいえ | N/A |
memory.mglru_batch_size | Multi-Generational Least Recently Used (MGLRU) フレームワークに基づいてプロアクティブに回収されるメモリのサイズを指定します。メモリ回収のバッチ間で CPU を解放する試みが行われます。 | はい | N/A |
memory.mglru_reclaim_kbytes | MGLRU フレームワークに基づいてプロアクティブに回収されるメモリのサイズを指定します。 | はい | N/A |
memory.wmark_ratio | memcg バックエンド非同期回収機能を制御し、非同期回収をトリガーする memcg メモリウォーターマークを設定します。単位: memcg メモリ上限のパーセント。有効な値: 0 から 100。
詳細については、「Memcg バックエンド非同期回収」をご参照ください。 | はい | memory.wmark_ratio |
memory.wmark_high | 読み取り専用インターフェイス。
詳細については、「Memcg バックエンド非同期回収」をご参照ください。 | はい | |
memory.wmark_low | 読み取り専用インターフェイス。
詳細については、「Memcg バックエンド非同期回収」をご参照ください。 | はい | |
memory.wmark_scale_factor | memory.wmark_high 値と memory.wmark_low 値の間の間隔を指定します。単位: memcg メモリ上限の 0.01 パーセント。有効な値: 1 から 1000。
詳細については、「Memcg バックエンド非同期回収」をご参照ください。 | はい | |
memory.wmark_min_adj | memcg グローバル最小ウォーターマーク評価機能で使用される係数。 このインターフェイスの値は、グローバル最小ウォーターマークに対するパーセンテージでの調整を示します。有効な値: -25 から 50。
詳細については、「Memcg グローバル最小ウォーターマーク評価」をご参照ください。 | はい | |
memory.force_empty | メモリページを強制的に回収するかどうかを指定します。 | いいえ | N/A |
memory.use_hierarchy | 階層的な統計を収集するかどうかを指定します。 | はい | N/A |
memory.swappiness | vmscan の swappiness パラメーターを指定します。これは、カーネルがスワップ領域を使用する傾向を制御します。 | いいえ | N/A |
memory.priority | memcg の優先度を指定します。このインターフェイスは、ビジネスをソートするための 13 の memcg Out-Of-Memory (OOM) 優先度を提供します。有効な値: 0 から 12。値が大きいほど優先度が高くなります。親 cgroup の優先度は、その子孫 cgroup には継承されません。デフォルト値: 0。
| はい | memory.priority |
memory.move_charge_at_immigrate | タスクが cgroup 間で移行されるときに、タスクの課金をタスクとともに移動するかどうかを指定します。これは統計的な制御ポリシーです。 | いいえ | N/A |
memory.oom_control | OOM エラーが発生したときに OOM キラーをトリガーしてタスクを終了し、OOM ステータスに関する通知を生成するかどうかを指定します。 | いいえ | N/A |
memory.oom.group | OOM エラーが発生した場合に memcg 内のすべてのタスクを終了できる OOM グループ機能を制御します。 | はい | memory.oom.group |
memory.pressure_level | メモリプレッシャー通知を指定します。 | いいえ | N/A |
memory.kmem.limit_in_bytes | カーネルのメモリ使用量の上限 (ハードリミット) を指定します。 | いいえ | N/A |
memory.kmem.usage_in_bytes | カーネルのメモリ使用量をクエリします。 | いいえ | N/A |
memory.kmem.failcnt | カーネルのメモリ使用量が上限に達した回数をクエリします。 | いいえ | N/A |
memory.kmem.max_usage_in_bytes | カーネルの最大メモリ使用量をクエリします。 | いいえ | N/A |
memory.kmem.slabinfo | カーネルのスラブメモリ使用量をクエリします。 | いいえ | N/A |
memory.kmem.tcp.limit_in_bytes | カーネルの TCP メモリ使用量の上限 (ハードリミット) を指定します。 | いいえ | N/A |
memory.kmem.tcp.usage_in_bytes | カーネルの TCP メモリ使用量をクエリします。 | いいえ | N/A |
memory.kmem.tcp.failcnt | カーネルの TCP メモリ使用量が上限に達した回数をクエリします。 | いいえ | N/A |
memory.kmem.tcp.max_usage_in_bytes | カーネルの最大 TCP メモリ使用量をクエリします。 | いいえ | N/A |
memory.memsw.usage_in_bytes | メモリ使用量とスワップメモリ使用量をクエリします。 | いいえ | N/A |
memory.memsw.max_usage_in_byte | メモリとスワップメモリの最大使用量をクエリします。 | いいえ | N/A |
memory.memsw.limit_in_bytes | cgroup 内のタスクが使用するメモリとスワップメモリの合計使用量の上限を指定します。 | いいえ | N/A |
memory.memsw.failcnt | メモリとスワップメモリの合計使用量が上限に達した回数をクエリします。 | いいえ | N/A |
memory.swap.high | cgroup で利用可能なスワップメモリ使用量の上限を指定します。 | はい | memory.swap.high |
memory.swap.events | スワップメモリ使用量が上限に達したときに発生するイベントをクエリします。 | はい | memory.swap.events |
memory.min | cgroup が保持しなければならない最小メモリ量を指定します。これはメモリのハード保証です。 詳細については、「cgroup v1 インターフェイスの Memcg QoS 機能」をご参照ください。 | はい | memory.min |
memory.low | cgroup が保持できるメモリの下限を指定します。これはメモリのソフト保証です。詳細については、「cgroup v1 インターフェイスの Memcg QoS 機能」をご参照ください。 | はい | memory.low |
memory.high | メモリ使用量のスロットル制限を指定します。詳細については、「cgroup v1 インターフェイスの Memcg QoS 機能」をご参照ください。 | はい | memory.high |
memory.allow_duptext | /sys/kernel/mm/duptext/enabled パラメーターがコード duptext 機能をグローバルに有効にするように構成されている場合、このインターフェイスは特定の memcg のタスクに対してコード duptext 機能を有効にするかどうかを制御するために使用されます。有効な値: 0 および 1。デフォルト値: 0。
詳細については、「コード duptext 機能」をご参照ください。 | はい | memory.allow_duptext |
memory.allow_duptext_refresh | バイナリファイルが生成またはダウンロードされたときに、コード duptext 機能がすぐに開始されるかどうかを指定します。コード duptext 機能は PageDirty または PageWriteback の場合には有効になりません。このインターフェイスは、PageDirty または PageWriteback のシナリオでコード duptext 機能が有効にならない場合に、非同期タスクモードを使用してタスクをリフレッシュします。 | はい | memory.allow_duptext_refresh |
memory.duptext_nodes | duptext メモリ割り当てノードを制限します。 | はい | memory.duptext_nodes |
memory.allow_text_unevictable | memcg スニペットがロックされているかどうかを指定します。 | はい | memory.allow_text_unevictable |
memory.text_unevictable_percent | ロックされた memcg コードスニペットによって使用されるメモリ量の、memcg コードによって使用される合計メモリ量に対する比率を指定します。 | はい | memory.text_unevictable_percent |
memory.thp_reclaim | Transparent Huge Pages (THP) 回収機能を制御します。有効な値:
デフォルト値: disable。 詳細については、「THP 回収」をご参照ください。 | はい | memory.thp_reclaim |
memory.thp_reclaim_stat | THP 回収機能のステータスをクエリします。このインターフェイスのパラメーター:
前述のパラメーターの値は、NUMA ノード ID (node0、node1 など) の昇順で左から右にリストされます。 詳細については、「THP 回収」をご参照ください。 | はい | memory.thp_reclaim_stat |
memory.thp_reclaim_ctrl | THP 回収機能がどのようにトリガーされるかを指定します。このインターフェイスのパラメーター:
詳細については、「THP 回収」をご参照ください。 | はい | memory.thp_reclaim_ctrl |
memory.thp_control | memcg THP 機能を制御します。このインターフェイスを使用して、anon、shmem、および file THP の適用を禁止できます。 たとえば、オフライン memcg は THP を使用できません。これにより、メモリの断片化は防げませんが、THP の競合とメモリの浪費を削減できます。 | はい | memory.thp_control |
memory.reclaim_caches | カーネルが memcg のキャッシュをプロアクティブに回収するかどうかを指定します。例: | はい | memory.reclaim_caches |
memory.pgtable_bind | 現在のノードでページテーブルメモリを強制的に適用するかどうかを指定します。 | はい | memory.pgtable_bind |
memory.pgtable_misplaced | ページメモリがノード間で割り当てられたときのページテーブル内のページメモリに関する統計をクエリします。 | はい | memory.pgtable_misplaced |
memory.oom_offline | Quick OOM 機能では、このインターフェイスを使用してオフラインタスクの memcg をマークできます。 | はい | memory.oom_offline |
memory.async_fork | memcg の Async-fork 機能 (以前は fast convergent merging (FCM) として知られていました) を制御します。 | はい | memory.async_fork |
memory.direct_compact_latency | memsli 機能の直接メモリ圧縮のレイテンシを指定します。 | はい | memory.direct_compact_latency |
memory.direct_reclaim_global_latency | memsli 機能の直接グローバルメモリ回収のレイテンシを指定します。 | はい | memory.direct_reclaim_global_latency |
memory.direct_reclaim_memcg_latency | memsli 機能の直接 memcg メモリ回収のレイテンシを指定します。 | はい | memory.direct_reclaim_memcg_latency |
memory.direct_swapin_latency | memsli 機能の直接メモリスワップインのレイテンシを指定します。 | はい | memory.direct_swapin_latency |
memory.direct_swapout_global_latency | memsli 機能の直接グローバルメモリスワップアウトのレイテンシを指定します。 | はい | memory.direct_swapout_global_latency |
memory.direct_swapout_memcg_latency | memsli 機能の直接 memcg メモリスワップアウトのレイテンシを指定します。 | はい | memory.direct_swapout_memcg_latency |
memory.exstat | 拡張メモリと追加メモリに関する統計をクエリします。次の社内機能に関する統計が収集されます:
詳細については、「Memcg Exstat 機能」をご参照ください。 | 自己開発の拡張 | memory.exstat |
memory.idle_page_stats | memcg の kidled メモリ使用量と cgroup の階層情報に関する統計をクエリします。 | はい | memory.idle_page_stats |
memory.idle_page_stats.local | memcg の kidled メモリ使用量に関する統計をクエリします。 | はい | memory.idle_page_stats.local |
memory.numa_stat | 匿名、ファイル、およびロックされたメモリの NUMA 統計をクエリします。 | いいえ | memory.numa_stat |
memory.pagecache_limit.enable | ページキャッシュ制限機能を制御します。 詳細については、「ページキャッシュ制限機能」をご参照ください。 | はい | memory.pagecache_limit.enable |
memory.pagecache_limit.size | 制限されたページキャッシュのサイズを指定します。 | はい | memory.pagecache_limit.size |
memory.pagecache_limit.sync | ページキャッシュ制限機能のモード (同期または非同期) を指定します。 | はい | memory.pagecache_limit.sync |
memory.reap_background | ゾンビ memcg リーパーがバックエンドの非同期方式で memcg のメモリを回収するかどうかを指定します。 | はい | memory.reap_background |
memory.stat | メモリ統計をクエリします。 | いいえ | memory.stat |
memory.use_priority_oom | memcg OOM 優先度ポリシー機能を制御します。 詳細については、「Memcg OOM 優先度ポリシー」をご参照ください。 | はい | memory.use_priority_oom |
memory.use_priority_swap | cgroup の優先度に基づいてメモリがスワップされるかどうかを指定します。 詳細については、「Memcg OOM 優先度ポリシー」をご参照ください。 | はい | memory.use_priority_swap |
cgroup v2 インターフェイス
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v1 インターフェイス |
memory.current | メモリ使用量をクエリします。 | いいえ | N/A |
memory.min | cgroup が保持しなければならない最小メモリ量を指定します。これはメモリのハード保証です。 詳細については、「cgroup v1 インターフェイスの Memcg QoS 機能」をご参照ください。 | いいえ | memory.min |
memory.low | cgroup が保持できるメモリの下限を指定します。これはメモリのソフト保証です。 詳細については、「cgroup v1 インターフェイスの Memcg QoS 機能」をご参照ください。 | いいえ | memory.low |
memory.high | メモリ使用量の上限を指定します。 詳細については、「cgroup v1 インターフェイスの Memcg QoS 機能」をご参照ください。 | いいえ | memory.high |
memory.max | メモリ使用量のスロットル制限を指定します。 | いいえ | memory.max |
memory.swap.current | 使用中のスワップメモリをクエリします。 | いいえ | N/A |
memory.swap.high | cgroup で利用可能なスワップメモリ使用量の上限を指定します。 | いいえ | N/A |
memory.swap.max | スワップメモリのハードリミットを指定します。 | いいえ | N/A |
memory.swap.events | スワップメモリ使用量が上限に達したときに発生するイベントをクエリします。 | いいえ | N/A |
memory.oom.group | OOM エラーが発生した場合に memcg 内のすべてのタスクを終了できる OOM グループ機能が有効になっているかどうかを指定します。 | いいえ | memory.oom.group |
memory.wmark_ratio | memcg バックエンド非同期回収機能を制御し、非同期回収をトリガーする memcg メモリウォーターマークを設定します。単位: memcg メモリ上限のパーセント。有効な値: 0 から 100。
詳細については、「Memcg バックエンド非同期回収」をご参照ください。 | はい | memory.wmark_ratio |
memory.wmark_high | 読み取り専用インターフェイス。
詳細については、「Memcg バックエンド非同期回収」をご参照ください。 | はい | memory.wmark_high |
memory.wmark_low | 読み取り専用インターフェイス。
詳細については、「Memcg バックエンド非同期回収」をご参照ください。 | はい | memory.wmark_low |
memory.wmark_scale_factor | memory.wmark_high 値と memory.wmark_low 値の間の間隔を指定します。単位: memcg メモリ上限の 0.01 パーセント。有効な値: 1 から 1000。
詳細については、「Memcg バックエンド非同期回収」をご参照ください。 | はい | memory.wmark_scale_factor |
memory.wmark_min_adj | memcg グローバル最小ウォーターマーク評価機能で使用される係数。 このインターフェイスの値は、グローバル最小ウォーターマークに対するパーセンテージでの調整を示します。有効な値: -25 から 50。
詳細については、「Memcg グローバル最小ウォーターマーク評価」をご参照ください。 | はい | memory.wmark_min_adj |
memory.priority | memcg の優先度を指定します。このインターフェイスは、ビジネスをソートするための 13 の memcg OOM 優先度を提供します。有効な値: 0 から 12。値が大きいほど優先度が高くなります。親 cgroup の優先度は、その子孫 cgroup には継承されません。デフォルト値: 0。
詳細については、「Memcg OOM 優先度ポリシー」をご参照ください。 | はい | memory.priority |
memory.use_priority_oom | memcg OOM 優先度ポリシー機能を制御します。 詳細については、「Memcg OOM 優先度ポリシー」をご参照ください。 | はい | memory.use_priority_oom |
memory.use_priority_swap | cgroup の優先度に基づいてメモリがスワップされるかどうかを指定します。 詳細については、「Memcg OOM 優先度ポリシー」をご参照ください。 | はい | memory.use_priority_swap |
memory.direct_reclaim_global_latency | memsli 機能の直接グローバルメモリ回収のレイテンシを指定します。 | はい | memory.direct_reclaim_global_latency |
memory.direct_reclaim_memcg_latency | memsli 機能の直接 memcg メモリ回収のレイテンシを指定します。 | はい | memory.direct_reclaim_memcg_latency |
memory.direct_compact_latency | memsli 機能の直接メモリ圧縮のレイテンシを指定します。 | はい | memory.direct_compact_latency |
memory.direct_swapout_global_latency | memsli 機能の直接グローバルメモリスワップアウトのレイテンシを指定します。 | はい | memory.direct_swapout_global_latency |
memory.direct_swapout_memcg_latency | memsli 機能の直接 memcg メモリスワップアウトのレイテンシを指定します。 | はい | memory.direct_swapout_memcg_latency |
memory.direct_swapin_latency | memsli 機能の直接メモリスワップインのレイテンシを指定します。 | はい | memory.direct_swapin_latency |
memory.exstat | 拡張メモリと追加メモリに関する統計をクエリします。次の社内機能に関する統計が収集されます:
詳細については、「Memcg Exstat」をご参照ください。 | はい | memory.exstat |
memory.pagecache_limit.enable | ページキャッシュ制限機能を制御します。 詳細については、「ページキャッシュ制限機能」をご参照ください。 | はい | memory.pagecache_limit.enable |
memory.pagecache_limit.size | 制限されたページキャッシュのサイズを指定します。 詳細については、「ページキャッシュ制限機能」をご参照ください。 | はい | memory.pagecache_limit.size |
memory.pagecache_limit.sync | ページキャッシュ制限機能のモード (同期または非同期) を指定します。 詳細については、「ページキャッシュ制限機能」をご参照ください。 | はい | memory.pagecache_limit.sync |
memory.idle_page_stats | 各階層の個々の memcg の kidled メモリに関する統計をクエリします。 | はい | memory.idle_page_stats |
memory.idle_page_stats.local | 個々の memcg の kidled メモリに関する統計をクエリします。 | はい | memory.idle_page_stats.local |
memory.numa_stat | 匿名、ファイル、およびロックされたメモリの NUMA 統計をクエリします。 | はい | memory.numa_stat |
memory.reap_background | ゾンビ memcg リーパーがバックエンドの非同期方式で memcg のメモリを回収するかどうかを指定します。 | はい | memory.reap_background |
memory.stat | メモリ統計をクエリします。 | いいえ | memory.stat |
memory.use_priority_oom | memcg OOM 優先度ポリシー機能を制御します。 詳細については、「Memcg OOM 優先度ポリシー」をご参照ください。 | はい | memory.use_priority_oom |
cpuacct
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v2 インターフェイス |
cpuacct.usage | 使用された合計 CPU 時間をクエリします。単位: ナノ秒。 | いいえ | cpu.stat、同様のデータを表示 |
cpuacct.usage_user | ユーザーモードで使用された CPU 時間をクエリします。単位: ナノ秒。 | いいえ | |
cpuacct.usage_sys | カーネルモードで使用された CPU 時間をクエリします。単位: ナノ秒。 | いいえ | |
cpuacct.usage_percpu | 各 CPU の使用時間をクエリします。単位: ナノ秒。 | いいえ | |
cpuacct.usage_percpu_user | ユーザーモードでの各 CPU の使用時間をクエリします。単位: ナノ秒。 | いいえ | |
cpuacct.usage_percpu_sys | カーネルモードでの各 CPU の使用時間をクエリします。単位: ナノ秒。 | いいえ | |
cpuacct.usage_all | cpuacct.usage_percpu_user および cpuacct.usage_percpu_sys インターフェイスの概要をクエリします。単位: ナノ秒。 | いいえ | |
cpuacct.stat | ユーザーモードとカーネルモードで使用された CPU 時間をクエリします。単位: tick。 | いいえ | |
cpuacct.proc_stat | コンテナーレベルでの CPU 時間、平均負荷 (loadavg)、実行中のタスク数などのデータをクエリします。 | はい | |
cpuacct.enable_sli | コンテナーレベルで loadavg をカウントするかどうかを制御します。 | はい | N/A |
cpuacct.sched_cfs_statistics | cgroup のランタイムや、同じレベルまたは異なるレベルの cgroup の待機時間など、CFS に関する統計をクエリします。 | はい | cpu.sched_cfs_statistics |
cpuacct.wait_latency | キューで待機しているタスクのレイテンシをクエリします。 | はい | cpu.wait_latency |
cpuacct.cgroup_wait_latency | キューで待機している cgroup のレイテンシをクエリします。wait_latency インターフェイスはタスク SE のレイテンシをカウントし、cgroup_wait_latency インターフェイスはグループ SE のレイテンシをカウントします。 | はい | cpu.cgroup_wait_latency |
cpuacct.block_latency | 非 I/O 原因でブロックされたタスクのレイテンシをクエリします。 | はい | cpu.block_latency |
cpuacct.ioblock_latency | I/O 操作が原因でブロックされたタスクのレイテンシをクエリします。 | はい | cpu.ioblock_latency |
io.pressure | I/O パフォーマンス、メモリ、および CPU の PSI をクエリします。この情報はポーリングできます。詳細については、次のトピックをご参照ください。
| いいえ | N/A |
memory.pressure | いいえ | ||
cpu.pressure | いいえ |
freezer
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v2 インターフェイス |
freezer.state | 凍結ステータスを制御します。有効な値: | いいえ | cgroup.freeze |
freezer.self_freezing | cgroup が自身の凍結ステータスのために凍結されているかどうかをクエリします。 | いいえ | N/A |
freezer.parent_freezing | cgroup がその祖先が凍結されているために凍結されているかどうかをクエリします。 | いいえ | N/A |
ioasids
ioasids サブシステムの cgroup v1 インターフェイスと cgroup v2 インターフェイスは同じです。
インターフェイス名 | 目的 | 社内インターフェイス |
ioasids.current | 現在の cgroup に割り当てられている ioasid の数をクエリします。 | はい |
ioasids.events | 割り当て可能な ioasid の上限を超えたために発生したイベントの数をクエリします。 | はい |
ioasids.max | 現在の cgroup に割り当てることができる ioasid の総数をクエリします。 | はい |
net_cls and net_prio
インターフェイス名 | 目的 | 社内インターフェイス | 対応する cgroup v2 インターフェイス |
net_cls.classid | 現在の cgroup のネットワークパケットにタグを付けるクラス識別子を指定します。このインターフェイスは qdisc または iptable と連携します。 | いいえ | N/A 説明 対応するインターフェイスは cgroup v2 から削除されました。ebpf を使用してトラフィックをフィルターおよびシェーピングできます。 |
net_prio.prioidx | データ構造内の現在の cgroup のインデックス値をクエリします。このインターフェイスは読み取り専用で、カーネルによって内部的に使用されます。 | いいえ | |
net_prio.ifpriomap | 各ネットワークインターフェイスコントローラー (NIC) のネットワーク優先度値を指定します。 | いいえ |
perf_event
perf_event サブシステムはインターフェイスを提供しません。perf_event サブシステムは cgroup v2 でデフォルトで有効になっており、cgroup v1 の perf_event サブシステムと同じ機能を提供します。
pids
pids サブシステムの cgroup v1 インターフェイスと cgroup v2 インターフェイスは同じです。
インターフェイス名 | 目的 | 社内インターフェイス |
pids.max | cgroup 内のタスクの最大数を指定します。 | いいえ |
pids.current | cgroup 内の現在のタスク数をクエリします。 | いいえ |
pids.events | サポートされるタスクの最大数に達したために fork 操作が失敗したイベントの数をクエリします。fsnotify ライブラリは、イベントに関するファイルシステム通知を提供するためにサポートされています。 | いいえ |
rdma
rdma サブシステムの cgroup v1 インターフェイスと cgroup v2 インターフェイスは同じです。
インターフェイス名 | 目的 | 社内インターフェイス |
rdma.max | Remote Direct Memory Access (RDMA) アダプターのリソース使用量の上限を指定します。 | いいえ |
rdma.current | RDMA アダプターのリソース使用量をクエリします。 | いいえ |