Selon C10k y cet article En effet, le débit des serveurs à 1 thread par connexion se dégrade au fur et à mesure que les clients se connectent et que les threads sont créés. Selon ces deux sources, cela est dû au fait que plus il y a de threads, plus le temps passé à changer de contexte est important par rapport au travail réel effectué par ces threads. Les serveurs Evented ne semblent pas souffrir autant de la dégradation des performances lorsque le nombre de connexions est élevé.
Cependant, les serveurs événementiels effectuent également des changements de contexte entre les clients, ils le font simplement dans l'espace utilisateur.
- Pourquoi ces commutations de contexte en espace utilisateur sont-elles plus rapides que les commutations de contexte des threads du noyau ?
- Que fait exactement un commutateur de contexte du noyau qui est tellement plus cher ?
- Quel est le coût exact d'un commutateur de contexte du noyau ? Combien de temps cela prend-il ?
- Le temps de changement de contexte du noyau dépend-il du nombre de threads ?
Je suis surtout intéressé par la façon dont le noyau Linux gère la commutation de contexte, mais les informations sur les autres systèmes d'exploitation sont également les bienvenues.