|
Posta Elettronica Certificata
|
|
|
|
Convegni e seminari |
:: Perl WorkShop 2004 - Flavio Fanton (pdf - html)
:: SALPA 2004 - Luca De Santis (pdf)
:: SALPA 2004 Call for paper - Luca De Santis (pdf)
:: Bologna 2004 - Giovanni Faglioni (pdf)
:: Formia 2005 - Flavio Fanton (pdf)
:: Governance e open source (Pisa 2006) - Umberto Ferrara (pdf)
:: ICT & Security (Pisa 2007) - Umberto Ferrara (pdf)
:: Convegno OS e riuso (Univ. Pisa 2008) - Umberto Ferrara (pdf)
:: Convegno TOSSlab (Navacchio 2008) - Umberto Ferrara (pdf)
:: Seminario TOSSlab (Univ. Pisa 2009) - Umberto Ferrara (pdf1 pdf2)
|
|
|
|
|
|
|
Le macchine
opec1 |
opec2 |
- model name : 1 CPU Pentium III (Katmai)
- cpu MHz : 501.148
- cache size : 512 KB
- RAM Memory : 192 MB
- Hard Disk EIDE FUJITSU MPC3102AT E - 256K Cache 5400rpm UATA
|
- model name : 1 CPU Pentium III (Katmai)
- cpu MHz : 547.626
- cache size : 512 KB
- RAM Memory : 256 MB
- Hard Disk EIDE 10GB WDC WD100BA - 2MB Cache 7200rpm UDMA/66
|
prestazioni (fonte: hdparm) |
- Timing buffer-cache reads: 568 MB in 2.00 seconds = 284.00 MB/sec
- Timing buffered disk reads: 38 MB in 3.10 seconds = 12.26 MB/sec
|
- Timing buffer-cache reads: 580 MB in 2.01 seconds = 288.56 MB/sec
- Timing buffered disk reads: 72 MB in 3.05 seconds = 23.61 MB/sec
|
|
|
Lo scopo è stimare il carico massimo sopportabile da OpenPec
(non del sistema nel suo complesso) in termini di numero di mail elaborate
per unità di tempo in funzione del numero dei processi.
In questa prima sessione di test abbiamo preferito separare i casi di firma
(mail in arrivo dal client e da deliverare esternamente) da quelli di verifica
(mail in formato "documento di trapsorto" da deliverare localmente verso i server LMTP)
così da capire quanto incidono singolarmente.
Modalità di esecuzione
Abbiamo installato il sistema completo (Postfix - OpenPec - Cyrus) su due macchine,
opec1 e opec2, e utilizzato altre due per spedire posta. Per facilitare le
operazioni di spedizione abbiamo configurato i Postfix in modo da fare relay
anche sul SMTP non sicuro.
Ad ogni mailer (noi abbiamo utilizzato mailer.pl incluso nella distribuzione) sono
stati messi a disposizione 18 messaggi vari da, complessivamente 22525 Kbytes con
l'header (From e To) opportunamente modificato in modo da essere conforme all'envelop.
Per ogni prova abbiamo modificato il numero di processi di OpenPec e di Postfix (transport).
Architettura di rete:
Architettura software per server:
Descrizione
- Entrambe le macchine devono avere Postfix up con code vuote e OpenPec down.
- Spedire le mail a opec2.
- Tirare su OpenPec su opec2, quindi eseguire il "flush" dei messaggi in coda a Postfix (postfix -f).
- Monitorare i vari parametri (cpu, tempo di esecuzione, etc.).
- Eseguire quanto al punto 3 per opec1.
- Monitorare i parametri su opec1.
Risultati
opec2 - firma + ricevute |
Processi |
Tempi |
1 |
Test completato in 46'' -
Media: 2,6 sec/mail |
2 |
Test completato in 46'' -
Media: 2,6 sec/mail |
4 |
Test completato in 46'' -
Media: 2,6 sec/mail |
8 |
Test completato in 46'' -
Media: 2,6 sec/mail |
16 |
Test completato in 46'' -
Media: 2,6 sec/mail |
opec1 - verifica + ricevute |
Processi |
Tempi |
1 |
Test completato in 3'55'' -
Media: 14 sec/mail |
2 |
Test completato in 4'46'' secondi -
Media: 15 sec/mail |
4 |
Test completato in 4'46'' secondi -
Media: 15 sec/mail |
8 |
Test completato in 4'50'' -
Media: 15 sec/mail |
16 |
- |
Conclusioni
Opec1 ha tempi di elaborazione molto maggiori di Opec2, questo ci conferma,
che l'operazione di verifica è più onerosa della firma di quasi
un'ordine di grandezza (anche se dobbiamo dire che il disco di opec1 è
inferiore a quello di opec2).
Ma la cosa maggiormente importante è che la configurazione più
efficente è con un solo processo per server nel caso di macchine ad un
solo processore.
Osservazioni
- Quanto incide la firma e la verifica sul tempo di elaborazione medio della mail?
Abbiamo rifatto i test modificando il codice in modo che non venisse eseguita solo la chiamata
ad openssl ed abbiamo ottenuto:
per la sola firma il test si è concluso in 39'' (al post dei 46'');
per la verifica il test si è concluso in 1' e 42'' (al post dei 4' e 46'').
- Quanto incide il disco rigido?
Abbiamo rifatto i test scambiando le macchine (dato che il dico di opec2 è più
performante) ed il risultato è un divario di crica un quarto del tempo:
per la firma il test è stato completato in 32'' (al posto di 46'').
Questo significa che la scelta del disco è fondamentale al fine di aumentare le prestazioni.
|
|
Lo scopo è stimare il carico massimo sopportabile da un sistema completo
di PEC di esempio che utilizza OpenPec in termini di numero di mail elaborate
per unità di tempo.
Modalità di esecuzione
Abbiamo installato il sistema completo (Postfix - OpenPec - Cyrus) su due macchine,
opec1 e opec2, e utilizzato una terza per spedire posta. Per facilitare le
operazioni di spedizione abbiamo configurato i Postfix in modo da fare relay
anche sul SMTP non sicuro.
La spedizione di massa delle mail è stata effettuata da due istanze del semplice
mailer allegato alla distribuzione (mailer.pl), una per ogni server. Ad ogni istanza
sono state affidate una serie di mail di vario tipo con i campi From, To e Cc modificati
coerentemente con l'envelop.
In particolare:
- opec1
dominio: domaincert1.openpec.org
utenti locali:
user1@domaincert1.openpec.org
user2@domaincert1.openpec.org
- opec2
dominio: domaincert2.openpec.org
utenti locali:
user1@domaincert2.openpec.org
user2@domaincert2.openpec.org
- terza macchina
- mailer 1:
794 messaggi - 44.216KB totale
cmd: mailer.pl user1@domaincert1.openpec.org user2@domaincert2.openpec.org path_mail_1 1 opec1
- mailer 2:
1226 messaggi - 96.968KB totale
cmd: mailer.pl user1@domaincert2.openpec.org user2@domaincert1.openpec.org path_mail_2 1 opec2
Risultati
Messaggi elaborati raggruppati per tipo di elaborazione
- opec1 - tempo totale - 161' 34"
- 96.968KB di messaggi verificati (documenti di trasporto da Opec2)
- 193.936KB di messaggi firmati (presa in carico e avvenuta consegna a Opec2)
- 44.226KB di messaggi firmati (accettazione a Opec1)
- opec2 - tempo totale - 151' 03"
- 44.226KB di messaggi verificati (documenti di trasporto da Opec1)
- 88.452KB di messaggi firmati (presa in carico e avvenuta consegna a Opec1)
- 96.968KB di messaggi firmati (accettazione a Opec2)
Messaggi totali elaborati/generati
- opec1
- 794 - 44.226KB ric. acc.
- 794 - 44.226KB doc. di trasp. generati
- 1226 - 96.968KB doc. di trasp. ricevuti
- 1226 - 96.968KB ric. presa in car.
- 1226 - 96.968KB ric. di consegna
- totale elaborato: 5266 - 379.336KB
- opec2 - tempo totale - 151' 03"
- 1226 - 96.968KB ric. acc.
- 1226 - 96.968KB doc. di trasp. generati
- 794 - 44.226KB doc. di trasp. ricevuti
- 794 - 44.226KB ric. presa in car.
- 794 - 44.226KB ric. di consegna
- totale elaborato: 4834 - 326.604KB
|
|
Lo scopo è sottoporre il sistema ad un carico consistente e analizzare
le mailbox degli utenti di prova per verificare le relazioni fra le varie tipologie di mail.
1 mail da server PEC1 a server PEC2 si traduce in:
1 documento di trasporto
1 ricevuta di accettazione
1 ricevuta di presa in carico
1 ricevuta di avvenuta consegna
Modalità di esecuzione
Abbiamo installato il sistema completo (Postfix - OpenPec - Cyrus) su due macchine,
opec1 e opec2, e utilizzato una terza per spedire posta e scaricare le caselle via pop3
da entrambi i server. Per facilitare le
operazioni di spedizione abbiamo configurato i Postfix in modo da fare relay
anche sul SMTP non sicuro.
La spedizione di massa delle mail è stata effettuata da due istanze del semplice
mailer allegato alla distribuzione (mailer.pl) con un attesa fra una spedizione e l'altra
di un tempo da 1 a 15 sec, una per ogni server. Ad ogni istanza
sono state affidate una serie di mail di vario tipo con i campi From, To e Cc modificati
coerentemente con l'envelop.
In particolare:
- opec1
dominio: domaincert1.openpec.org
utenti locali:
user1@domaincert1.openpec.org
user2@domaincert1.openpec.org
- opec2
dominio: domaincert2.openpec.org
utenti locali:
user1@domaincert2.openpec.org
user2@domaincert2.openpec.org
- terza macchina
- mailer 1:
794 messaggi - 44.216KB totale
cmd: mailer.pl user1@domaincert1.openpec.org user2@domaincert2.openpec.org path_mail_1 1 opec1
- mailer 2:
1226 messaggi - 96.968KB totale
cmd: mailer.pl user1@domaincert2.openpec.org user2@domaincert1.openpec.org path_mail_2 1 opec2
Risultati
Messaggi ricevuti dagli utenti di test raggruppati per tipo
- opec1
794 ricevute di accettazione
794 ricevute di presa in carico
794 ricevute di avvenuta consegna
1225 documenti di trasporto
- opec2
1225 ricevute di accettazione
1225 ricevute di presa in carico
1225 ricevute di avvenuta consegna
794 documenti di trasporto
1 Undeliverable Mail
* Il messaggio "Undeliverable Mail" è stato causato da un header non coerente
e quindi gestito conformemente alle specifiche.
** Il test è stato svolto con la versione 0.9.7d di openssl.
*** Da sottolineare che entrambi i server OpenPec erano al massimo livello di log
su file ed hanno prodotto un file maggiore di 250MB ognuno.
Osservazioni
Il test si è svolto precedentemente con la versione 0.9.7a di openssl e ha
evidenziato dei problemi (non particolarmente preoccupanti):
su 1226 mail venivano generate un numero variabile (intorno a 20) di anomalie
di trasporto. Ciò era dovuto al fallimento della verifica del documento
di trasporto correttamente firmato. Abbiamo approfondito la cosa assicurandoci che
la verifica falliva erroneamente: veniva ritornato il codice d'errore 11 senza nessun
codice o messaggio su STDERR o STDOUT; numerose prove hanno dimostrato la casualità
del problema.
Il problema non è perchè al mittente non veniva spedita nessuna ricevuta
quindi, nel contesto PEC, sapeva che la mail non era stata consagnata.
Il problema è stato risolto con l'aggiornamento di openssl alla versione 0.9.7d.
|
|
Questo test è la copia del "test di carico - sessione 1" ma eseguito
su una macchina multiprocessore per quantificare il guadagno di una soluzione
più costosa e magari evidenziare possibili migliorie del codice.
Modalità di esecuzione
Abbiamo installato il sistema completo (Postfix - OpenPec - Cyrus) su due macchine,
opec3 e opec2, e utilizzato altre due per spedire posta. Per facilitare le
operazioni di spedizione abbiamo configurato i Postfix in modo da fare relay
anche sul SMTP non sicuro.
Ad ogni mailer (noi abbiamo utilizzato mailer.pl incluso nella distribuzione) sono
stati messi a disposizione 18 messaggi vari da, complessivamente 22525 Kbytes con
l'header (From e To) opportunamente modificato in modo da essere conforme all'envelop.
Per ogni prova abbiamo modificato il numero di processi di OpenPec e di Postfix (transport).
Macchina utilizzata:
opec3 |
- model name : 2 CPU Pentium III (Katmai)
- cpu MHz : 499.192
- cache size : 512 KB
- RAM Memory : 384 MB
- Hard Disk SCSI HP 9.10GB A 80-SA40
|
prestazioni (fonte: hdparm) |
- Timing buffer-cache reads: 512 MB in 2.00 seconds = 255.62 MB/sec
- Timing buffered disk reads: 78 MB in 3.09 seconds = 25.24 MB/sec
|
|
Risultati
opec3 - firma + ricevute |
Processi
|
Tempi
|
1
|
Test completato in 46'' -
Media: 2,6 sec/mail
|
2
|
Test completato in 29'' -
Media: 1,6 sec/mail
|
4
|
Test completato in 29'' -
Media: 1,6 sec/mail
|
8
|
Test completato in 29'' -
Media: 1,6 sec/mail
|
16
|
Test completato in 29'' -
Media: 1,6 sec/mail
|
|
opec3 - verifica + ricevute |
Processi
|
Tempi
|
1
|
Test completato in 3'20'' -
Media: 11,11 sec/mail
|
2
|
Test completato in 2'11'' secondi -
Media: 7,28 sec/mail
|
4
|
Test completato in 2' secondi -
Media: 6,67 sec/mail
|
8
|
Test completato in 1'55'' -
Media: 6,39 sec/mail
|
16
|
Test completato in 1'55'' -
Media: 6,39 sec/mail
|
Conclusioni
Come ci aspettavamo le prestazioni sono aumentate in maniera tangibile (30% circa) passando
da 1 a 2 processi (pari al numero di processori) per poi stabilizzarsi;
si nota comunque una lieve deriva sulla prova riguardante la verifica.
Durante il test con 8 processi (ne segue quello con 16) l'osservazione con
watch -n 1 "ps ax|grep opec" ha mostrato che non vengono utilizzati più di
6 processi contemporaneamente.
A questo punto, tenendo conto di eventuali ritardi di risposta con i componenti
di rete esterni a OpenPec (server LDAP, MTA e LMTP server), la configurazione
più efficiente sembra seguire la regola:
in /etc/opec.conf
$maxServers = <(num. processori * 2) + x>
x è un intero che deve tener conto delle caratteristiche della macchina in
generale ma soprattutto dei dischi: più è performante maggiore
è il suo valore (tipicamente da 1 a 3).
|
|