Asterisk/VoIP

Alix VoyageOne 性能評価

1. はじめに

Alix上で動作するAsteriskベースのIP-PBXアプライアンスVoyage Oneの性能評価を実施し、その内容をまとめた。

テスト環境は以下図の通りとする。
test_kousei

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同時通話が可能になる。この時の音声品質も問題ない。