リソース制限

/etc/sysconfig/vz-scripts配下にあるリソース制限設定ファイルについて調べてみたときのメモです。自分なりにCでせこせこプログラムを書いて検証してみましたが、なにぶん勉強不足なので意味のわからない記述があるかもしれません。調査中となっているところは、そのうち調べようと思っています。

numproc 最大プロセス数 上限を超えると「Cannot allocate memory」。
numtcpsock 最大TCPソケット数 PF_INETドメイン and SOCK_STREAM タイプ。上限を超えるとsocket()実行時)にエラー「No buffer space available」
numothersock その他のソケットの最大ソケット数 上限を超えるとsocket()実行時)にエラー「Cannot allocate memory」
vmguarpage 最低保証メモリ 調査中
kmemsize 最大カーネルメモリサイズ ユーザプロセスはある程度のカーネルメモリ(low memory)を消費するらしい。だいたい16-50KBらしい。
tcpsndbuf TCP Socket Send Bufferサイズ setsockoptは制限以上に設定してもエラーを返さない。バッファに制限値以上書き込む際にfailcntにカウントされる。エラーになってもプログラムは終了しない。上限はバッファの総合。
tcprcvbuf TCP Socket Receive Bufferサイズ 同上
dgramrcvbuf datagram socket receive Bufferサイズ 同上
othersockbuf その他のソケットのBufferサイズ 調査中
oomguarpages OOM killの保証値 調査中
lockedpages mlock(2)の最大ページ数 上限を越えると、mlockが失敗する。RSS自体は確保できる。
privvmpages 総プライベートページ数 全てのプロセスの仮想メモリの総合が上限を越えると、mallocが失敗した。
shmpages IPC SHMのセグメントサイズの最大数 調査中
numfile 最大オープンファイル数 -
numflock 最大flock -
numpty 最大pty数 -
numsiginfo siginfo構造体の数 調査中
dcachesize ファイルシステム関連のキャッシュサイズ ファイル操作によってメモリ不足を生じて、アプリケーションにerrnoを返し、致命的なオペレーションの間にメモリ不足がおきないための制限らしい。
numiptent 最大iptablesチェイン数 「numiptent - 10」が作成できるチェイン数になる。上限を超えると「iptables: Memory allocation problem」とエラーになる。
physpages 物理メモリページ数 今のところ制限はできず、使用量を見ることができるだけ。将来実装予定。
cpuunits CPUの最低保障値 調査中
cpulimit CPUの使用率 調査中
cpus CPUの仮想化 VE内で確認できるCPU数を制限できる
meminfo VE内の/proc/meminfo 仮想化 vzctl-3.0.17以降はデフォルト値がprivvmpages:1
iptables iptablesモジュールの種類 -
diskspace ディスクサイズ -
diskinodes inode数 -
quotatime quotatime -
quotaugidlimit user/group Idの最大数 VE内でquotaを使用する場合はこの設定が必要
  • セマフォは各VEごとに分離されているが、設定ファイルでの制限はなかった。VE内の/proc/sys/kernel/semで値を変えることができた。セマフォの値を増やすとkmemsizeにカウントされた。
  • devel版kernelではVEごとのIOアカウンティング機能があるようなので、将来的にはIOスケジューラ機能が実装されるようだ。