| Les "sales cons" du logiciel libre ou pourquoi on ne peut pas accélérer NSS LDAP grâce à nscd |
|
|
|
| Ecrit par Farzad FARID | |
| 16-08-2006 | |
|
Cela fait plusieurs mois que je cherchais à comprendre pourquoi la librairie nss_ldap (qui permet sous Linux/Unix d'utiliser un annuaire LDAP pour gérer les utilisateurs, groupes et autres bases de données dynamiques) est très lente avec de gros volumes de données, même quand on active nscd . Aujourd'hui j'ai non seulement compris pourquoi, mais j'ai en plus cru trouver la solution miracle, avant d'avoir un gros coup de blues quand j'ai vu qu'un névrosé de chez Red Hat refuse que cette optimisation soit intégrée dans le code standard des librairies Linux L'histoire de ma déconvenue est une bonne occasion pour parler de quelques "sales cons" du logiciels libres, qui font avancer l'informatique libre d'un (grand) pas, avant qu'un aspect névrotique de leur personnalité ne nous fassent reculer de deux pas... LDAP, NSS et le système de cache NSCDSur un système comme Linux, il existe des bases de données qui stockent les informations d'authentifications ou d'identification des personnes ou ressources :
Dans une architecture de petite ou moyenne taille, ces bases peuvent être de simples fichiers plats, ou des bases séquentielles indexées (fichier DB, DBM, GDBM, etc.). Ces bases sont de plus locales à chaque machine. Pour un gros réseau, on voudra non seulement une base de données optimisée pour stocker un très grand volume de données, capable de répondre très rapidement à de nombreuses requêtes simultanées, mais qui en plus soit accessible en réseau par l'ensemble des serveurs Linux/Unix. Un serveur LDAP, comme OpenLDAP ou Fedora Directory Server , convient relativement bien pour cette tâche. Mais ... il reste encore un peu lent pour certains types de requêtes. Par exemple, si l'on se base sur le langage C :
Autant dire que ça peut être très lent, même avec un réseau et un annuaire rapide ! Heureusement, la librairie GNU Libc6 fournit un daemon du nom de nscd (Name Service Caching Daemon). Comme son nom l'indique, nscd va servir de cache local temporaire pour stocker les résultats de nos requêtes LDAP, et les resservir plus rapidement subséquemment. Mais, si nscd sait traiter et mettre en cache les requête de type getpwnam(), getgrgid(), (car elles retournent 0 ou 1 réponse à une requête), il ne sait pas traiter une requête getgrent() ou getpwent(), qui peuvent retourner de 0 à N réponse, avec N très grand. Nous sommes donc revenus à notre point de départ : nous somme passés de fichiers plats (/etc/passwd, /etc/shadow, /etc/group) ou DB (comme master.db sur les système *BSD) à une bases LDAP. nous avons créé des milliers d'entrées, et d'un seul coup notre serveur IMAP redevient très lent et génère des méga-octets de trafics inutiles lors du contrôle des droits d'accès La solution miracleAprès avoir correctement analysé le problème, et donc trouvé les bons mots clés à taper dans Google (vous savez, la future World Company), j'ai donc trouvé la solution : un ingénieur de Google (tient, encore eux, est-ce un hasard ?) a développé un patch pour nscd et la libc6 qui ajoute le support de get*ent à nscd ! Joie et bonheur dans les chaumières ! Il n'y a plus qu'à attendre qu'un patch officieux sorte, puis un patch officiel, qui sera finalement intégré dans la libc6, et donc dans toutes les distributions Linux. C'était sans compter sur la névrose de certains membre éminents du logiciel libre... La déconvenueLa réponse d'Ulrich Drepper , mainteneur officiel de la GNU libc6, éminent contributeur au logiciel libre et salarié Red Hat, fait froid dans le dos. En gros, pour résumer ce qui est sous-entendu dans ce commentaire lapidaire (il faut lire les autres commentaires pour avoir tout le contexte) :
Les névrosés du logiciel libreDans une certaine catégorie de personnes, quel que soit le mode de sélection, il y a toujours le même pourcentage d'individus nuisibles que partout ailleurs. Et, pour paraphaser un des directeurs de Polytechnique, plus on sélectionne ces individus, plus les cons deviennent dangereux. Voilà comment on se retrouve avec des types comme Ulrich Drepper. Il n'est malheureusement pas le seul dans ce cas, il ya a plusieurs exemples célèbres :
La liste est longue, mais sans doute incomplète. Il est amusant de constater à quel point Internet permet à des individus puérils et visiblement névrosés de se défouler sur les autres en toute impunité. L'internet fournit un certain anonymat, une distance par rapport à son interlocuteur, un écran au sens propre comme au figuré. Et puis, c'est bien connu, c'est toujours l'autre qui a tort ! Si vous vous reconnaissez dans ce type de personnalité, je ne peux que vous conseiller de faire un travail sur vous-même, de prendre un peu de recul pour analyser et comprendre vos propres faiblesse, et de respecter les autres si vous voulez vous-même être respecté(e). Je peux donner ce conseil d'autant plus gratuitement que, comme je le dis dans le chapitre précédent, je suis persuadé que personne ne se reconnaîtra dans ce modèle ! En attendant, c'est à cause de ce type d'individu pitoyable que je ne peux pas optimiser l'architecture système de mon client...
|
|
| Dernière mise à jour : ( 11-10-2007 ) |
| < Précédent | Suivant > |
|---|






