OpenVZのリソース制限
OpenVZ
/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スケジューラ機能が実装されるようだ。



