メモリcgroup(めもりしーじーるーぷ)
最終更新:2026/4/28
メモリcgroupは、Linuxカーネルにおけるメモリ資源を制御・制限するための機能であり、プロセスグループ単位でメモリ使用量を管理する。
別名・同義語 cgroupメモリ制限
ポイント
メモリcgroupを用いることで、システム全体のメモリ使用量を効率的に管理し、特定のプロセスが過剰なメモリを消費することを防ぐことができる。コンテナ技術などでも利用される。
メモリcgroupの概要
メモリcgroupは、LinuxカーネルのControl Groups(cgroup)機能の一つであり、プロセスグループに対してメモリ使用量を制限したり、優先度をつけたりすることを可能にします。これにより、システム全体のメモリ資源を効率的に管理し、安定性を向上させることができます。
メモリcgroupの仕組み
メモリcgroupは、以下の要素を中心に構成されています。
- メモリ制限 (memory.limit_in_bytes): cgroup内で使用できる最大メモリ量を設定します。
- スワップ制限 (memory.memsw.limit_in_bytes): cgroup内で使用できる最大メモリ量(RAM + スワップ)を設定します。
- カーネルメモリ制限 (memory.oom_control): cgroup内でOOM Killer(Out Of Memory Killer)が動作するかどうかを制御します。
- メモリノード (memory.node): NUMA(Non-Uniform Memory Access)環境において、cgroupが使用するメモリノードを指定します。
これらの要素を適切に設定することで、cgroup内のプロセスが過剰なメモリを消費することを防ぎ、システム全体の安定性を維持することができます。
メモリcgroupの利用例
- コンテナ技術: DockerやKubernetesなどのコンテナ技術では、メモリcgroupを用いてコンテナごとにメモリ使用量を制限し、リソースの公平な分配を実現しています。
- データベース: データベースサーバーのメモリ使用量を制限し、他のアプリケーションへの影響を抑制します。
- Webサーバー: Webサーバーのメモリ使用量を制限し、DoS攻撃などによるメモリ枯渇を防ぎます。
メモリcgroupの設定方法
メモリcgroupの設定は、/sys/fs/cgroup/memoryディレクトリ以下のファイルを通じて行います。例えば、memory.limit_in_bytesファイルに値を書き込むことで、cgroupのメモリ制限を設定することができます。
注意点
メモリcgroupの設定を誤ると、アプリケーションが正常に動作しなくなる可能性があります。設定を行う際には、十分な理解と注意が必要です。