Performance and capacity
How many calls a computer can make or answer with SIP Inspector depends on the computer: the processor above all, and the network. This chapter shows what was measured on real computers and how to measure your own with the same method: test/capacity.py of the source distribution and the scenarios Perf_cps_client/server and Perf_rtp_client/server.
What is measured
- Calls per second - short calls without media: INVITE, 100, 180, 200, ACK, one second, BYE, 200. The call rate is raised step by step, each step a minute of calls, until a step fails its limits. This is the signalling a computer can carry.
- Calls with audio at the same time - calls with G.711 (PCMU, 20 ms packets, 50 packets a second) both ways, from
pcap/test.pcap. The number of calls is raised step by step; in a step all the calls are up together for a minute. Each call is two RTP streams, one each way, so 100 calls are 100 streams sent and 100 received by each computer. A stream is 80 kbit/s at the IP level (200 bytes 50 times a second), about 95 kbit/s on Ethernet: 100 calls are about 9.5 Mbit/s each way, far below what a 1 Gbit/s network carries.
One computer makes the calls and the other answers; then they change roles. The weaker computer limits each run, so the CPU load of both is sampled every two seconds: it shows which one ran out.
The limits a step must keep
| Limit | Meaning |
|---|---|
asr>=99.5 | Answer-seizure ratio: of the calls attempted, at least 99.5 % were answered (99 % in the audio test). |
p95<=500 | 95 % of the SIP requests got their response within 500 ms. |
loss<=0.5 | At most 0.5 % of the RTP packets that should have come did not arrive. |
mos>=4.0 | The estimated voice quality (MOS, 1 to 4.5, calculated from loss and jitter) is at least 4.0. G.711 without loss is 4.4. |
A step passes when the runs on both computers keep their limits: the caller checks the answers and the audio it receives, the answerer the audio it receives. The limit reported is the highest step that passed, narrowed down between it and the first that failed.
Measuring your own computers
- On both computers start SIP Inspector as a service, with the address the other computer reaches it at:
SIPInspDlxCLI -api 8080 -apiHost 0.0.0.0 -apiToken <token> -lip <address> -lp 5060 -lrtp 10000 -np. The program folder needs onlypcap/test.pcapand the licence; the script sends the scenarios. - Where Python 3 runs (either computer or a third one):
test/capacity.py --a http://<A>:8080 --b http://<B>:8080 --token <token> --a-name Laptop --b-name Server --repeat 3. - The results are in
capacity_<date>/:summary.mdhas the tables,steps.csvevery step with its numbers and CPU load.
-Xmx2g).