|
|
Stress Tests con Asterisk
Ho voluto effettuare una serie di stress tests con Asterisk allo scopo di ottenere informazioni utili sulle performances ottenibili in certe circostanze e con varie tra le possibili tecnologie che esso mette a disposizione.
In particolare l'obiettivo dello stress test era costituito dall'ottenimento del maggior numero possibile di channels IAX e calls attive contemporaneamente.
Inizialmente l'intenzione era quella di utilizzare Astertest (www.astertest.com), un piccolo tool che gira sotto Windows e interagisce via porta TCP 5038 con due server Asterisk distinti, raccogliendo le informazioni che le servono per graficizzare in tempo reale i risultati tramite due applicazioni Asterisk che rendono necessaria la ricompilazione di quest'ultimo.
Le due applicazioni in questione si chiamano CPUinfo e ServerLoad, la prima utilizza /proc/cpuinfo mentre l'altra rileva ogni secondo le percentuali relative all'impegno della CPU in kernel mode, user mode. e idletime.
La prima delle due macchine funziona (dovrebbe) da terminatore per le chiamate, e la seconda essere quindi la vera piattaforma di test.
Il fatto è che la generazione delle chiamate non funziona, e secondo me non esiste neppure, mentre la rappresentazione grafica è invece operativa. Ma allora tanto vale fare tutto a mano e trattare poi i dati con un buon foglio di calcolo.
A questo punto ho mantenuto comunque la configurazione del testbed (eliminando però la macchina Windows, che, tanto per cambiare, non sarebbe servita a niente).
Descrizione del testbed
Avendo mantenuto lo schema dei due server Asterisk ho utilizzato come partner un Laptop con CPU Pentium4 a 2.8GHz, 256MB di RAM. Come software di base Slackware 9.1 con kernel 2.6.11.3 e Asterisk 1.0.7, mentre, come macchina di test un Tower con CPU AMD64, 256 MB di RAM. Anche in questo caso la distribuzione utilizzata era la Slackware 9.1, ma con Kernel 2.6.12.5 e Asterisk CVS-HEAD del 12/8/2005.
Le due piattaforme erano ovviamente comunicanti via TCP/IP tramite link Ethernet diretto FullDuplex 100Mb (cross cable). Alla prima è stato assegnato l'indirizzo IP 10.0.0.2, mentre alla seconda l'indirizzo IP 10.0.0.1
Questa la configurazione software delle due macchine:
Macchina target (laptop)
- /etc/asterisk/iax.conf
[general]
.....
allow=all
jitterbuffer=yes
dropcount=2
.....
[guest]
type=user
trunk=yes
context=terminator
- /etc/asterisk/extensions.conf
.....
[terminator]
exten => s,1,Answer
exten => s,2,Wait(120)
exten => s,3,Hangup
;test altenativo
;exten => s,1,Answer
;exten => s,2,Echo(0)
;exten => s,3,Hangup
Asterisk veniva lanciato dopo il caricamento dei moduli zaptel e ztdummy (essendo il laptop sprovvisto di hardware Digium in funzione di Timer).
Macchina di test (Tower)
- /etc/asterisk/iax.conf
[testgsm]
type=friend
host=10.0.0.2
trunk=yes
context=astertest
disallow=all
allow=gsm
[testulaw]
type=friend
host=10.0.0.2
trunk=yes
context=astertest
disallow=all
allow=ulaw
[testalaw]
type=friend
host=10.0.0.2
trunk=yes
context=astertest
disallow=all
allow=alaw
- /etc/asterisk/extensions.conf
.....
[astertest]
exten => test01,1,Answer();
exten => test01,2,Wait(10000);
exten => test01,3,Hangup();
exten => test02gsm,1,Answer();
exten => test02gsm,2,Playback(ast-test-gsm);
exten => test02gsm,3,Hangup();
exten => test02ulaw,1,Answer();
exten => test02ulaw,2,Playback(ast-test-ul);
exten => test02ulaw,3,Hangup();
exten => test02alaw,1,Answer();
exten => test02alaw,2,Playback(ast-test-al);
exten => test02alaw,3,Hangup();
- E' stato raddoppiato il numero massimo di open files con:
# ulimit -n 4096 (dal valore iniziale 2048
- E' stato ricompilato Asterisk dopo aver modificato la direttiva:
#define MAX_TRUNKDATA 640 * 200
(presente in $ASTERISK_SOURCE/channels/chan_iax2.c) in
#define MAX_TRUNKDATA 640 * 800
|