http://alban.apinc.org/blog/2010/09/15/d-bus-in-the-kernel-f(...)
Voici un nouveau type de socket proche des sockets Unix et ayant pour but d'améliorer les perfs de Dbus.
Le but est de ne plus utiliser dbus-daemon pour faire transiter les messages, son role sera alors d'activer le système d'IPC et d'authentifier les applications (si j'ai bien compris).
Voila, le gain de performance n'est pas extraordinaire mais bon, c'est déjà ça de pris!
# Perfs smartphones
Posté par flagos . Évalué à 6.
Faire un gain x3 sur N900 (et cela doit etre comparable sur Android), c'est quelque chose qui va vraiment dans le bon sens.
[^] # Re: Perfs smartphones
Posté par Adrien BUSTANY (site web personnel) . Évalué à 10.
Il y a aussi d'autres optimisations qui pourraient rentrer dans DBus, par exemple passer les messages en petits morceaux entre le serveur et le client (pour l'instant, DBus alloue un buffer de la taille du message, ce qui fait très mal sur des très gros messages). J'en profite pour me faire de la pub (honteusement) pour un rapport sur les perfs de DBus que j'avais publié il y a quelque temps: http://blogs.gnome.org/abustany/2010/05/20/ipc-performance-t(...)
Le projet kdbus en est au stade de prototype, j'espère que ça finira un jour en production!
[^] # Re: Perfs smartphones
Posté par reno . Évalué à 2.
Ca doit dépendre de la version de l'ARM, non?
Suivant qu'ils aient un "tagged TLB" ou pas, je pense..
Parce que sinon je ne vois pas pourquoi les changement de contexte couteraient plus cher sur un ARM que sur un x86, mis à part peut-être le nombre de registres (et encore c'est du 32*32bit alors que pour un x86 ça peut être du 16*64bit == égalité).
[^] # Re: Perfs smartphones
Posté par calandoa . Évalué à 3.
Sinon j'aimerais bien connaitre aussi le pourquoi de la différence entre les changements de contexte.
[^] # Re: Perfs smartphones
Posté par reno . Évalué à 2.
Décidèment j'aime de moins en moins le jeux d'instruction ARM:
-toujours pas de 64bit juste une variante de PAE,
-pas de TRAP sur dépassement entier comme le MIPS..
[^] # Re: Perfs smartphones
Posté par windu.2b . Évalué à 4.
Merci.
[^] # Re: Perfs smartphones
Posté par claudex . Évalué à 5.
Le trap en MIPS, c'est, si je me souviens bien, un mécanisme du processeur (pas d'un langage) qui permet de générer une exception en cas d'overflow.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Perfs smartphones
Posté par reno . Évalué à 5.
1) avant les ARMs étaient limités à 4Go de mémoire totale, maintenant avec la dernière variante de leur jeux d'instruction ARMv7 ils sont uniquement limités à 4Go par processus, mais ils peuvent avoir jusqu'à 256Go de mémoire totale (40bit).
Ce qui fait que s'ils veulent vraiment cibler les serveurs, il faudra qu'ils changent encore leur jeu d'instruction pour autoriser plus de 4Go par processus..
2) le MIPS possède 2 variantes de chaque instruction entières une avec ou sans TRAP en cas de débordement entier.
Le TRAP est grosso-modo l'équivalent d'une exception mais gérée directement par le CPU.
L'avantage est que, en Ada par exemple, cela permettrait de générer une exception en cas de débordement entier sans avoir à rajouter de code dans le chemin 'normal' (sans débordement): gain en efficacité..
Et je trouve que le comportement d'Ada bien plus sain que celui du C qui peut causer des problèmes de sécurité, donc j'aime bien le MIPS..
[^] # Re: Perfs smartphones
Posté par calandoa . Évalué à 3.
Pour les débordements, il est assez simple de le faire en assembleur ARM, par ex en rajoutant un SWIVS après une addition (enfin, je crois... essayez de tester avant si vous devez l'intégrer au contrôleur de vol d'Ariane). Et c'est vrai qu'en C, l'absence de vérification intégrée au langage manque cruellement ; à ma connaissance, il n'existe par exemple aucune extension digne de ce nom à gcc (il y a bien -trapv, mais il n'est pas possible de gérer au cas par cas).
[^] # Re: Perfs smartphones
Posté par reno . Évalué à 2.
Mais ils augmentent la taille du code, utilisent des ressources pas beaucoup étant non pris normalement), le coté élégant du MIPS est que cela ne coute rien (*)!
*: enfin dans le cas normal de non-débordement.
[^] # Re: Perfs smartphones
Posté par Antoine . Évalué à 2.
Agrandir le jeu d'instructions juste pour faciliter l'optimisation d'un langage hyper-marginal ? Étonnant qu'ils n'aient pas pris cette décision, en effet...
[^] # Re: Perfs smartphones
Posté par reno . Évalué à 3.
Une bonne idée est une bonne idée, quelque soit le nombre d'utilisateurs!
Le comportement du C de masquer les débordements entier est une connerie, j'espère que le langage qui le remplacera un jour ne reproduira pas cette erreur..
[^] # Re: Perfs smartphones
Posté par windu.2b . Évalué à 10.
Comme d'hab', on voit que l'innovation vient de KDE !
====>[]
[^] # Re: Perfs smartphones
Posté par Moonz . Évalué à 0.
# Microkernel ?
Posté par benoar . Évalué à 1.
Je veux dire, un système de messages inter-processus (IPC) dans le kernel « normalisé » pour tout l'OS, c'est quand même plutôt typique du microkernel.
C'est marrant l'évolution de l'informatique, des fois !
[^] # Re: Microkernel ?
Posté par KiKouN . Évalué à 5.
[^] # Re: Microkernel ?
Posté par Pierre Carrier . Évalué à 10.
Je doute qu'on puisse raisonnablement en conclure qu'on tend vers du microkernel.
La caractéristique des micro-noyaux ce n'est pas d'avoir un système d'IPC, puisque tous les noyaux en ont un ; c'est que :
- ce soit l'une des rares fonctionnalités offertes ("idéalement" le noyau ne fait que gérer les contextes d'exécution, donc ordonnancement des processus, communication entre les processus et gestion de l'addressage mémoire) ;
- qu'elle soit performante (puisque les tâches habituellement effectuées par le noyau le seront par une flotte de processus qui en aura donc beaucoup beaucoup besoin, des IPCs).
Je ne trollerai ni sur le nombre de fonctionnalités traînant dans le noyau, ni sur les performances de D-Bus.
Ceci dit ici le leitmotiv du changement c'est que le context switching coûte trop cher.
C'est en partie dû au design du noyau Linux.
Au contraire, les micro-noyaux :
- utilisent énormément de context switching puisqu'un tas de processus sont impliqués pour fournir une fonctionnalité qui est classiquement entièrement gérée en kernel space ;
- sont donc logiquement conçus pour être les plus efficaces possibles en la matière.
[^] # Re: Microkernel ?
Posté par auve . Évalué à 8.
Je ne suis pas d'accord : dans un micro-noyau, il y a l'idée de minimiser le code résidant en mode noyau et d'écrire tout ce qu'on peut sous forme de processus utilisateurs asynchrones communicant par passage de message. En l'occurrence on fait à peu près l'inverse : au lieu de déplacer ce qui devrait traditionnellement être en espace noyau (pilotes, FS...) vers l'espace utilisateur, on remonte une couche plutôt applicative (un bout de DBus) dans le noyau !
Je veux dire, un système de messages inter-processus (IPC) dans le kernel « normalisé » pour tout l'OS, c'est quand même plutôt typique du microkernel.
Et les sockets de grand-papa alors, certes plus bas niveau que DBus, elles comptent pour du beurre ?
# socket
Posté par M . Évalué à 3.
[^] # Re: socket
Posté par Gof (site web personnel) . Évalué à 1.
Voir les commentaires du blog.
[^] # Re: socket
Posté par Pierre Carrier . Évalué à 2.
http://dbus.freedesktop.org/doc/dbus-specification.html#tran(...)
Et sur http://dbus.freedesktop.org/doc/dbus/api/html/group__DBusCon(...) :
dbus_bool_t dbus_connection_get_socket(DBusConnection * connection, int * fd)
Ceci dit, oui, les performances sont désastreuses. Et les déploiements de sssd pour remplacer nscd+nss_ldap+pam_ldap+pam_krb5+pam_ccreds vont probablement s'en retrouver limités (sssd repose entièrement sur dbus).
[^] # Re: socket
Posté par Alban Crequy (site web personnel) . Évalué à 4.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.