1. はじめに
Alix上で動作するAsteriskベースのIP-PBXアプライアンスVoyage Oneの性能評価を実施し、その内容をまとめた。
テスト環境は以下図の通りとする。
Voyage Oneのインストールについては「Voyage OneのALIXへのインストール手順」を参照ください。
2. 性能評価の概要
本評価では、基本性能の評価として、同時通話可能なSIP端末数を調べる。
性能評価は、SIPpツールを用いて同時擬似呼を発生させる評価環境を作成し、対象機にに負荷をかけた状態で、以下の2項目をモニタリングすることで行う。
- CPU/Memory 使用率
- SIPpログ
あわせて、通話品質の評価は、実際に耳で聴く主観評価と、音声パケットの評価で行う。
主観評価
- 音声の途切れ
- 音声の揺らぎ
- 音声の遅延
音声パケット評価
- パケットロス値
3. 評価結果
試験1
本評価では、SIPpによる同時通話数10/50/100の環境を作成、2分間実施した。その時のSIPpログとAlixのCPU/Memory使用率(vmstatコマンド)をモニタリングした。
また、この時にSIP端末同士の通話を行い、音声品質評価を実施した。
・モニタリング 結果
同時100通話環境時にSIPpログにエラーが記録された。エラー内容は以下の通りである。
sipp: The following events occured:
2011-xx-xx 18:00:00: Discarding message which can’t be mapped to a known SIPp call:
SIP/2.0 401 Unauthorized
このときのvmstat値は以下の通りとなった。
procs ———–memory———- —swap– —–io—- -system– —-cpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 161396 872 58016 0 0 10 0 1008 81 1 1 98 0
0 0 0 158768 872 58016 0 0 0 0 1060 276 3 2 95 0
0 0 0 157508 872 58068 0 0 0 0 1098 533 13 4 83 0
0 0 0 155340 872 58132 0 0 0 0 1102 559 15 5 80 0
0 0 0 153992 872 58208 0 0 0 0 1111 538 15 5 80 0
si(スワップin)値もso(スワップout)値の双方が0であることから、メモリー容量不足による問題ではないと考えた。
CPUについてもid(アイドル)値が高く、wa(ウェイト)値が0であることから、CPUの処理による問題でもないと考えた。
ちなみに同時10通話の時のvmstat値は以下の通りとなった。
procs ———–memory———- —swap– —–io—- -system– —-cpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 167036 872 57564 0 0 11 0 1007 77 1 1 98 0
0 0 0 166844 872 57568 0 0 0 0 1008 101 0 0 99 0
0 0 0 166852 872 57572 0 0 0 0 1012 113 1 0 98 0
0 0 0 166852 872 57584 0 0 0 0 1020 113 1 1 98 0
0 0 0 166604 872 57584 0 0 0 0 1014 109 1 0 98 0
・音声品質評価結果
主観評価
主観評価について、各同時通話(10/50/100)のいずれも問題はなく音質は良好であった。
# | 同時通話環境 | 音声の途切れ | 音声の揺らぎ | 音声の遅延 | 備考 |
1 | 同時10通話 | 全くない | 全くない | 全くない | |
2 | 同時50通話 | 全くない | 全くない | 全くない | |
3 | 同時100通話 | 全くない | 全くない | 全くない |
音声パケット評価
パケット評価においても、パケットロスは発生しておらず音声品質には問題ないとの結果を得た。
# | 同時通話環境 | Dst | Packets | Lost | MaxJitter(ms) | MeanJitter(ms) | 備考 |
1 | 同時10通話 | VoyageOne | 2243 | 0(%) | 0.10 | 0.03 | |
2 | SIP端末 | 2231 | 0(%) | 1.19 | 0.30 | ||
3 | 同時50通話 | VoyageOne | 1781 | 0(%) | 1.34 | 0.18 | |
4 | SIP端末 | 1768 | 0(%) | 1.98 | 0.49 | ||
5 | 同時100通話 | VoyageOne | 2116 | 0(%) | 1.25 | 0.16 | |
6 | SIP端末 | 2104 | 0(%) | 1.96 | 0.66 |
試験2
Asteriskサービスの起動直後の試験では、196通話まで可能かつ、エラーが発生しない。
この時にSIP端末同士の通話を行い、音声品質評価テストを実施した。
・音声品質評価 結果
主観評価
主観評価について、問題はなく音質は良好であった。
# | 同時通話環境 | 音声の途切れ | 音声の揺らぎ | 音声の遅延 | 備考 |
1 | 同時196通話 | 全くない | 全くない | 全くない |
音声パケット評価
パケット評価についても、パケットロスは発生しておらず音声品質には問題ないとの結果を得た。
# | 同時通話環境 | Dst | Packets | Lost | MaxJitter(ms) | MeanJitter(ms) | 備考 |
1 | 同時195通話 | VoyageOne | 1557 | 0(%) | 1.43 | 0.11 | |
2 | SIP端末 | 1545 | 0(%) | 0.70 | 0.19 |
考察
ここまでの試験結果を受けて、SIPpのエラー発生原因はCPU/Memory不足ではないと判断した。
調査の結果、Voyage OneのOS上のファイルディスクリプタがデフォルトの上限値に達していることが原因であった。
上記結果を受けて、ファイルディスクリプタ上限値を変更した場合の挙動確認を追加で行った。
・ ファイルディスクリプタ上限値 確認
# ulimit -n 1024
・ ファイルディスクリプタ上限値 変更
# ulimit -n 2048
上記実行後、SIPpによる同時通話試験を実施した結果、同時401通話まで可能なことを確認した。
試験3
ファイルディスクリプタ制限を「2048」に変更した環境での同時401通話環境を作成し、そのときのvmstat値をモニタリングした。
併せて音声品質の評価を実施する。
・モニタリング 結果
このときのvmstat値は以下の通り。
procs ———–memory———- —swap– —–io—- -system– —-cpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 150140 3000 62248 0 0 28 0 1045 235 5 2 93 0
0 0 0 143716 3000 62252 0 0 0 0 1043 201 3 2 96 0
0 0 0 137096 3000 62252 0 0 0 0 1048 191 4 2 95 0
0 0 0 130236 3000 62252 0 0 0 0 1044 186 5 1 94 0
0 0 0 124080 3000 62256 0 0 0 0 1041 173 5 2 93 0
si(スワップin)値もso(スワップout)値の双方が0であることから、メモリー容量不足は発生していない。
CPUについてもid(アイドル)値が高く、wa(ウェイト)値が0であることから、CPU処理にも問題はない。
・音声品質評価 結果
主観評価
主観評価について、401同時通話においても問題はなく音質は良好だった。
# | 同時通話環境 | 音声の途切れ | 音声の揺らぎ | 音声の遅延 | 備考 |
1 | 同時401通話 | 全くない | 全くない | 全くない |
音声パケット評価
パケット評価についても、問題ない結果であった。
# | 同時通話環境 | Dst | Packets | Lost | MaxJitter(ms) | MeanJitter(ms) | 備考 |
1 | 同時401通話 | VoyageOne | 1587 | 0(%) | 1.35 | 0.10 | |
2 | SIP端末 | 1579 | 0(%) | 0.81 | 0.31 |
3. まとめ
結果は以下の通りとなった。
- デフォルト設定での同時通話数は、およそ196通話まで可能。ただし、ファイルディスクリプタの開放タイミングによってはエラーが発生する。
- 196同時通話時、音声品質は問題ない。
- ファイルディスクリプタ制限値をデフォルトの2倍(1024→2048)に変更した時は401同時通話が可能になる。この時の音声品質も問題ない。