RH 442攻略のリソース制限
ここでは前置きは必要ありません.
limit.conf#パスpam_limit.soリソース制限時に使用するプロファイル
kernelのオンデマンド遅延割り当て技術のため、プログラムが申請したダミーメモリサイズは、必ずしも実際のメモリ割り当てサイズに等しくない.
rss(Resident Set Size)メモリ常駐サイズ、kernelが実際に割り当てたメモリサイズ.トップコマンドのRESに対応します.
pamのlimit.を通ってconfは現在rssサイズを制限できません
As(Address Size)はアドレス空間を虚存し、プログラムが使用するメモリ空間の大きさである.トップコマンドのVIRTに対応します.
現在のユーザーのlimit制限をulimitクエリーで変更すると、一般ユーザーはソフトウェア制限のみを変更でき、rootユーザーはlimit.を変更できます.confによりhard制限を変更
limit.conf制限CPU時間単位は分、ulimitは秒単位で調整します.
ulimitとlimitはディスクI/Oを制限することができなくて、CPUとメモリの制限に対して基礎を比較します
---------------------
cgroupはシステムをcpu,memory,blkioなどの複数のcontrollerに分ける
プロセスはcgredサービスによってcgroupサブシステムに定義され、制限の目的を達成する.
cgconfigサービスが開始されると、ルートディレクトリの下に/cgroupディレクトリが生成され、各コントローラは個別にフォルダ(cgroupサブシステム)に対応します.現在のcontrollerとサブシステムフォルダの対応関係はlssubsys-mで表示できます.
コントロールが生成するディレクトリは/etc/cgconfigに基づいている.confは、同じコントローラが1つのフォルダにしか対応できないことを生成し、同じフォルダが複数のコントローラに対応できることを生成します.
cgroupの構成は/etc/cgconfigに保存する.conf、カスタムcgroupもここで構成します
cgexec指定コマンドでcgroupを呼び出します.
以下はメモリ制限の書き方です
このcgroupを適用するプログラムが制限を超えるメモリを使用すると、プロセスはkillされます.
次はディスクI/O制限の書き方です
cgroupのルール構成は/etc/cgrulesに書き込まれる.conf、プロファイルの書き方とlimit.confファイル類似
user:program controller cgroupサブシステム
構成が完了したら、サービスcgred restartでこのプロファイルを再ロードします.
cgroupは、指定されたプロセスをフリーズすることもできます.構成の書き方は次のとおりです.
limit.conf#パスpam_limit.soリソース制限時に使用するプロファイル
kernelのオンデマンド遅延割り当て技術のため、プログラムが申請したダミーメモリサイズは、必ずしも実際のメモリ割り当てサイズに等しくない.
rss(Resident Set Size)メモリ常駐サイズ、kernelが実際に割り当てたメモリサイズ.トップコマンドのRESに対応します.
pamのlimit.を通ってconfは現在rssサイズを制限できません
As(Address Size)はアドレス空間を虚存し、プログラムが使用するメモリ空間の大きさである.トップコマンドのVIRTに対応します.
現在のユーザーのlimit制限をulimitクエリーで変更すると、一般ユーザーはソフトウェア制限のみを変更でき、rootユーザーはlimit.を変更できます.confによりhard制限を変更
limit.conf制限CPU時間単位は分、ulimitは秒単位で調整します.
ulimitとlimitはディスクI/Oを制限することができなくて、CPUとメモリの制限に対して基礎を比較します
---------------------
cgroupはシステムをcpu,memory,blkioなどの複数のcontrollerに分ける
プロセスはcgredサービスによってcgroupサブシステムに定義され、制限の目的を達成する.
cgconfigサービスが開始されると、ルートディレクトリの下に/cgroupディレクトリが生成され、各コントローラは個別にフォルダ(cgroupサブシステム)に対応します.現在のcontrollerとサブシステムフォルダの対応関係はlssubsys-mで表示できます.
コントロールが生成するディレクトリは/etc/cgconfigに基づいている.confは、同じコントローラが1つのフォルダにしか対応できないことを生成し、同じフォルダが複数のコントローラに対応できることを生成します.
cgroupの構成は/etc/cgconfigに保存する.conf、カスタムcgroupもここで構成します
#cgroup
cgroup lesscpu{
#lesscpu cgroup
cpu{
#controller cpu , cpu
cpu.shares = 100;
#cpu , controller , controller
}
}
cgroup morecpu{
cpu{
cpu.shares = 300;
# , lesscpu, cpu ,morecpu cpu
}
}
cgexec指定コマンドでcgroupを呼び出します.
cgexec -g cpu:lesscpu command
# cgroup 。
以下はメモリ制限の書き方です
cgroup lessmem{
memory{
memory.limit_in_bytes = 536870912;
# 512M , 。
memory.memsw.limit_in_bytes = 536870912;
# + 512M , ,
}
}
このcgroupを適用するプログラムが制限を超えるメモリを使用すると、プロセスはkillされます.
次はディスクI/O制限の書き方です
group lowio{
blkio{
blkio.weight=100;
#blkio.weight cfq ,
}
}
group highio{
blkio{
blkio.weight=200;
}
}
group ddio{
blkio{
blkio.throttle.read_bps_device="8:0 1000000";
# scsi 1m(ll /dev/sda 8:0 )
}
}
cgroupのルール構成は/etc/cgrulesに書き込まれる.conf、プロファイルの書き方とlimit.confファイル類似
user:program controller cgroupサブシステム
vim /etc/cgrules.conf
cat /etc/cgrules.conf
john:dd blkio ddio/
*:dd blkio ddio/
john:* cpu lesscpu/
構成が完了したら、サービスcgred restartでこのプロファイルを再ロードします.
cgroupは、指定されたプロセスをフリーズすることもできます.構成の書き方は次のとおりです.
group stopit{
freezer{
}
}
#freezer
echo pid > /cgroup/freezer/stopit/tasks
# tasks
echo FROZEN > /cgroup/freezer/stopit/freezer.state
# , tasks
echo THAWED > /cgroup/freezer/stopit/freezer.state
#