[Kos-dev] Quelques idées

Thomas Petazzoni kos-dev@enix.org
Tue, 29 Apr 2003 14:37:29 +0200


This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig743E2BF49C8A43FECF426209
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

Hello,

Quelques idées en vrac :

 * Est-il possible d'utiliser un truc genre Valgrind [1] pour KOS ? Je
me fais souvent avoir par des données non initialisées, et je pense que
ça serait une bonne idée d'avoir un truc qui peut vérifier ça de manière
systématique. Je ne sais pas comment ça peut marcher, peut être en
plugin pour bochs ?

 * Kernel profiling. J'ai un peu étudié la question, puisque je voulais
faire du profiling sur l'OS de là où je travaille. J'ai donc regardé
comment fonctionnait le profiling dans gcc, et c'est pas très beau. En
bref, il insère un appel de fonction en début de chaque fonction, qui
permet de noter le nombre d'appels. Puis, pour savoir combien de temps
on passe dans chaque fonction, pendant l'éxécution, il se débrouille
pour lire souvent EIP, et ensuite retrouver dans quelle fonction il est.
A partir de ces nombreuses mesures, il fait des statistiques pour
déterminer là où on a passé le plus de temps. Plus d'infos sur [2]. J'ai
ensuite regardé les solutions de profiling pour le noyau Linux [3], mais
ça fonctionne de la même manière, ce qui est pas très très pratique.
Je trouverais nettement plus simple que gcc ajoute un appel de fonction
à chaque début de fonction, et un autre appel de fonction à chaque
retour de fonction (avant le 'ret'). A chaque fois, on récupère le
compteur de cycles, et hop à partir de là, on peut faire quelque chose
de précis. Quelqu'un a-t-il une idée pourquoi ce n'est pas fait comme ça
? Y-a-t-il un obstacle technique pour implémenter ma proposition ?

 * Avoir un truc pour détecter les fuites de mémoire : l'OS est petit
pour l'instant, ça serait intéressant de pouvoir tester si des scénarios
du type : construction team construction thread desctruction thread
destruction team engendrent des fuites mémoires.

Bonne journée,

Thomas

[1] Valgrind
http://developer.kde.org/~sewardj/
[2] Implementation of Profiling
http://www.fnal.gov/docs/products/gcc/v3_1/gprof.info,.Implementation.html
[3] Linux kernel profiling
http://oss.sgi.com/projects/kernprof/
-- 
PETAZZONI Thomas - thomas.petazzoni@enix.org - UIN : 34937744
Web: http://www.enix.org/~thomas/
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7

--------------enig743E2BF49C8A43FECF426209
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQE+rnIJ9lPLMJjT96cRAs3CAJ4mJFfrdPKAUpc3Dp5hCNAAyNeBswCeNDeW
2lEotmoU4ZNj+LMNt8ywBs4=
=pD7Z
-----END PGP SIGNATURE-----

--------------enig743E2BF49C8A43FECF426209--