Entre ma vie, la migration de Bearnaise (qui tarde un peu trop d’ailleurs, merci Free.), et le projet scolaire que je dois terminer pour la rentrée, je m’ennuyais un peu. Alors j’ai décidé de reprendre un vieux projet que j’avais entamé il y a fort longtemps avec Swater : un analyseur de logs de serveurs HTTP.
L’idée est de faire un analyseur de logs extremement modulaire afin de pouvoir ajouter ou retirer à souhait les traitements qui seront effectués sur les fichiers. Pour résumer le fonctionnement, il y a d’un coté des modules d’analyse genre “visiteurs”, “referers”, “hits”, etc. qui s’occupent de collecter des données sur chaques lignes des fichiers de logs. De l’autre coté, un module de rendu (genre “html”, “mail”, “texte”) qui lui s’occupe comme son nom l’indique si bien, du rendu du rapport de résultats.
Le projet est déjà bien entamé, et je compte releaser une première version très bientôt. J’ai fais quelques tests de performances pour avoir une idée (pour l’instant, ce n’est pas optimisé). Condition des tests : sur mon portable, Core Duo 1.66Ghz, 1Go de RAM (mais l’utilisation par le programme de la ram était minime), fichiers de logs du serveur http de Bearnaise, un peu plus d’un an pour 1231699 lignes.
Test #1
Traitement des lignes relatives au domaine “inaps.org” avec un seul module d’analyse actif et en mode verbeux : time python s.py -m inaps.org -d 01012006 -e 99999 -v html visitors logs/*
Résultat : 132.91user 0.58system 2:16.75elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k
Test #2
Traitement des lignes relatives a tous les domaines avec un seul module d’analyse actif et en mode verbeux : time python s.py -d 01012006 -e 99999 -v html visitors logs/*
Résultat : 144.67user 4.52system 2:33.67elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k
Test #3
Traitement des lignes relatives a tous les domaines avec deux modules d’analyse actifs et en mode verbeux : time python s.py -d 01012006 -e 99999 -v html visitors,referers logs/*
Résultat : 168.98user 5.69system 3:05.21elapsed 94%CPU (0avgtext+0avgdata 0maxresident)k
Test #4
Traitement des lignes relatives a tous les domaines avec deux modules d’analyse actifs et en mode silencieux : time python s.py -d 01012006 -e 99999 -q html visitors,referers logs/*
Résultat : 155.58user 0.24system 2:35.86elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
Même si ces tests ne sont pas hyper démonstratifs (ils dépendent des modules activés), ils donnent quand même une idée de la vitesse d’exécution du truc (il faudrait que je regarde ce qui se fait à coté).
Si certains ont des suggestions, elles sont les bienvenues…

Antoine
BatchyX
avril 27th, 2008 at 7:33ça donne quoi le profilage ?