Je ne connais pas specialement KSE (le mecanisme pour la gestion des threads dans FreeBSD), mais je connais le mecanisme de scheduler activations sur lequel il est base (et qui permet le M:N scheduling); et les schedulers activations permettent de gerer les contentions sur un lock (dans un meme espace d'adressage) sans aucun appel au noyau. Si il y a un fort taux de contention dans MySQL les performances seront donc meilleures sous FreeBSD que sous Linux.
Pour donner un exemple, imaginons qu'un thread (a) prenne un mutex et que son timeslice se termine avant qu'il le deverouille; sous Linux (on me corrigera) mais a priori tout le monde est bloque tant qu'il est pas reveille.
Avec les scheduler activations, il est possible qu'un autre kernel thread (b) qui attendait pour le mem lock reprenne l'execution du thread (a) la ou elle en etait, jusqu'a ce qu'il sorte du lock; et la continue l'execution normale du thread (b). D'ou des excellents temps de latence a attendre le lock.
Attention, ce mecanisme de scheduler activation est tres judicieux pour un programme multithread au sein d'un meme espace d'adressage; on ne peut pas faire ca pour des threads situes dans des processus differents.
[^] # Re: Re:
Posté par Matthieu Lemerre . En réponse au journal Un benchmark FreeBSD 7 (CURRENT) et Fedora Core 6. Évalué à 3.
Pour donner un exemple, imaginons qu'un thread (a) prenne un mutex et que son timeslice se termine avant qu'il le deverouille; sous Linux (on me corrigera) mais a priori tout le monde est bloque tant qu'il est pas reveille.
Avec les scheduler activations, il est possible qu'un autre kernel thread (b) qui attendait pour le mem lock reprenne l'execution du thread (a) la ou elle en etait, jusqu'a ce qu'il sorte du lock; et la continue l'execution normale du thread (b). D'ou des excellents temps de latence a attendre le lock.
Attention, ce mecanisme de scheduler activation est tres judicieux pour un programme multithread au sein d'un meme espace d'adressage; on ne peut pas faire ca pour des threads situes dans des processus differents.