From: Fanton F. <fa...@ks...> - 2004-05-20 09:26:46
|
Prendendo esempio da Amavis, ho aggiunto il modulo Opec::Timing che = consente di aggiungere dei "paletti" nel codice e in fondo riportare il = tempo totale e i vari intertempi anche in percentuale. Ecco i risultati ottenuti con una mail di 4721768 BYTE: - FIRMA init: 1 (0%),=20 IN::SMTP: 1150 (12%) sanity_check: 5 (0%) ldap_validateRecipt: 161 (2%) gen_AcceptanceReceipt: 29 (0%) sign_AcceptanceReceipt: 95 (1%) del_AcceptanceReceipt: 385 (4%) gen_DocTransport: 38 (0%) sign_DocTransport: 5500 (56%) del_DocTransport: 2519 (25%) corePec: 13 (0%) rundown: 2 (0%) - VERIFICA TIMING [total 62159 ms] - init: 6 (0%) IN::SMTP: 1314 (2%) --> verify: 48549 (78%) <-- gen_LoadReceipt: 39 (0%) sign: 79 (0%) delivery: 229 (0%) del_DocTransp: 1605 (3%) gen_DeliveryReceipt: 31 (0%) sign: 7772 (13%) del_AcceptReceipt: 2533 (4%) corePec: 1 (0%) rundown: 2 (0%) * del_: delivery gen_: generazione Queste info mi sembrano + significative; da notare: . quanto incide la verifica in confronto con la firma . ricevere una mail costa meno che spedirla: qualcosa da migliorare? . altro? Direi di aggiungere alla distribuzione ufficiale Opec::Timing: che ne = dite? Mi pare un'ottima idea anche per valutare le prestazioni sulla macchina = d'installazione. flazan -----Messaggio originale----- Da: Fanton Flavio=20 Inviato: gioved=EC 20 maggio 2004 10.44 A: ope...@li... Oggetto: R: [Openpec-devel] Profiling: howto In realta' quello che mi interessava era analizzare il tempo impiegato = dalla firma/verifica rispetto al resto ma non ho pensato che queste = ultime vengono chiamate come processo esterno e DProf rimane nel parent = in waitpid: da Opec::Sign::_exec() defined($child =3D open(OUT, '-|')) or return (-1); if($child) { $res =3D join('', <OUT>); close(OUT) or not $! or return(-1); } else { select(STDERR); $| =3D 1; select(STDOUT); $| =3D 1; open(STDERR, ">&STDOUT") or die "Impossibile redirigere STDERR = su STDOUT"; exec(@arg) or die "Impossibile eseguire exec"; } return($?, $res); Per non complicarmi troppo la vita direi di aggiungere dei "bookmark" = nei punti caldi del codice e alla fine calcolare il tempo trascorso fra = due "bookmark" consecutivi. flazan |