web-dev-qa-db-fra.com

Pourquoi quelqu'un choisirait-il de ne pas utiliser le noyau à faible latence?

Je ne trouve aucune bonne information sur les noyaux rt et lowlatency Linux.

Je me demande pourquoi quelqu'un voudrait pas vouloir utiliser un noyau à faible latence.

De plus, si quelqu'un peut dire quelles sont les différences spécifiques, ce serait bien aussi.

45
Startec

Les différentes configurations, "générique", "à faible latence" (comme configuré dans Ubuntu) et RT, sont toutes sur l'équilibre entre le débit et la latence. Les noyaux génériques privilégient le débit sur la latence, les autres privilégient la latence sur le débit. Ainsi, les utilisateurs qui ont besoin d'un débit supérieur à celui d'une faible latence ne choisiraient pas un noyau à faible latence.

Par rapport à la configuration générique, le noyau à faible latence modifie les paramètres suivants:

  • Les IRQ sont enfilés par défaut, ce qui signifie que davantage d'IRQ (toujours pas tous IRQ) peuvent être anticipés, et ils peuvent également être hiérarchisés et avoir leur CPU affinité contrôlée;
  • la préemption est activée dans tout le noyau ( CONFIG_PREEMPT au lieu de CONFIG_PREEMPT_VOLUNTARY );
  • les outils débogage de latence sont activés, afin que l'utilisateur puisse déterminer quelles opérations du noyau bloquent la progression;
  • la fréquence de la minuterie est réglée sur 1000 Hz au lieu de 250 Hz .

Les noyaux RT ajoutent n certain nombre de correctifs au noyau principal, et quelques autres ajustements de configuration. Le but de la plupart de ces correctifs est de permettre plus de possibilités de préemption, en supprimant ou en fractionnant les verrous, et de réduire le temps que le noyau passe à gérer des tâches ininterrompues (notamment en améliorant les mécanismes de journalisation et en les utilisant moins) . Le but de tout cela est de permettre au noyau de respecter les délais , ie de s'assurer que, quand il est nécessaire de gérer quelque chose , il n'est pas occupé à faire autre chose; ce n'est pas la même chose qu'un débit élevé ou une faible latence, mais la résolution des problèmes de latence aide.

Les noyaux génériques, tels qu'ils sont configurés par défaut dans la plupart des distributions, sont conçus pour être un compromis "raisonnable": ils essaient de garantir qu'aucune tâche ne peut monopoliser le système pendant trop longtemps, et que les tâches peuvent changer assez fréquemment, mais sans compromettre le débit - parce que plus le noyau passe de temps à considérer s'il faut changer de tâche (à l'intérieur ou à l'extérieur du noyau), ou à gérer les interruptions, moins le système dans son ensemble peut passer "à travailler". Ce compromis n'est pas suffisant pour les charges de travail sensibles à la latence telles que le traitement audio ou vidéo en temps réel: pour ceux-ci, les noyaux à faible latence fournissent des latences plus faibles au détriment d'un certain débit. Et pour les besoins en temps réel, les noyaux en temps réel suppriment autant de bloqueurs à faible latence que possible, au détriment de plus de débit.

Les distributions de flux principal de Linux sont principalement installées sur des serveurs, où la latence n'a généralement pas été considérée comme très importante (bien que si vous effectuez une analyse des performances des centiles et que vous vous souciez des performances du centile supérieur, vous pourriez ne pas être d'accord), de sorte que les noyaux par défaut sont assez conservateur. Les utilisateurs de bureau devraient probablement utiliser les noyaux à faible latence, comme le suggère la propre documentation du noyau. En fait, plus les noyaux à faible latence sont utilisés, plus il y aura de rétroaction sur leur pertinence, ce qui permet d'obtenir des améliorations généralement applicables dans les configurations de noyau par défaut; il en va de même pour les noyaux RT (de nombreux correctifs RT sont destinés, à un moment donné, au noyau traditionnel).

Cette présentation sur le sujet fournit beaucoup de contexte.

60
Stephen Kitt

Stephen Kitt a expliqué les configurations et balances et tout Nice dans les paramètres techniques. Je voudrais offrir juste une petite distinction intuitive:

  • Vous êtes en safari, parcourez le terrain en jeep. Votre proie court. Lorsque la proie est en croix, vous appuyez sur la gâchette et le fusil tire - le calcul est simple - la proie en croix = a frappé, la proie n'est pas en croix = manquez - vous avez désespérément besoin faible latence - vous récupérez ensuite , recharger le fusil, trouver une autre proie - pas besoin de vitesse supplémentaire, pas besoin de régularité. Latence est tout.

  • Vous convertissez une vidéo de ce safari. C'est long, ça prend des heures. Peu vous importe, quand un cadre particulier est traité et si certains cadres prennent plus de temps à traiter que d'autres. Vous devez terminer le processus le plus rapidement possible - mieux débit signifie moins d'heures, rien d'autre n'a d'importance

  • Vous obtenez un télégraphe - juste des shorts, des longs et des espaces - Morse est facile à déchiffrer et vous n'avez pas besoin exactement quand chaque Pulse a commencé ou s'est terminé, mais vous avez besoin d'un garantie, que vous faites ne manquez pas l'un d'eux - vous avez besoin en temps réel (il peut être lent, le télégraphe n'est pas si rapide, mais il doit être régulier

Dans ces trois exemples, vous sélectionnez clairement l'un des latence, débit ou régularité, sacrifiant les deux autres - pour des raisons évidentes. Et seulement dans un seul, vous voulez vraiment une faible latence, si vous ne pouvez pas avoir les trois en même temps.

22
gilhad

Parce qu'il y a un compromis. La commutation de processus ou l'entrée/la sortie d'interruptions prend du temps. Par exemple, si vous exécutez le planificateur à 1 000 Hz au lieu de 250 Hz, vous aurez une interruption de minuterie et vous pourrez potentiellement changer de processus quatre fois plus souvent. Cela peut permettre à un processus de réagir plus rapidement car il est plus régulièrement autorisé à s'exécuter. Cependant, en tant qu'humain, vous ne remarquerez probablement aucune différence (250 Hz signifie toutes les 4 ms, ce qui est déjà beaucoup plus rapide que tout temps de réaction humain).

La quantité totale de puissance de traitement ou de débit d'E/S est limitée et appeler le planificateur le plus souvent signifie seulement que vous en gaspillerez une partie.

3
Michael

En termes simples:

  • Si vous ne donnez pas régulièrement du travail à votre PC, le noyau à faible latence est fait pour vous.
  • Si vous donnez constamment à votre PC des tâches gourmandes en CPU, le noyau générique est fait pour vous.
  • Si vous êtes simplement occasionnel d'utiliser votre PC pour naviguer, lire des vidéos, de la musique ... alors une faible latence est pour vous.
  • Si vous jouez, la différence théorique entre faible latence et générique serait qu'une faible latence gagnerait dans tous les scénarios sauf un; niveau de chargement, mais cela dépend davantage de la possession ou non d'un SSD, et de la qualité du SSD, car votre SSD de base fonctionne à une vitesse 1X, tandis que votre SSD PCI-Express le plus élevé est à une vitesse 6X. Un disque dur traditionnel a une vitesse de 0,1X. Alors oui, un SSD peut être 60 fois plus rapide qu'un disque dur traditionnel.

Fondamentalement, le noyau générique obtient le plus de travail dans les plus brefs délais tandis que le noyau à faible latence rend le PC le plus réactif; en supposant qu'aucun bogue ne soit rencontré dans le noyau ou le système.

Pour la plupart des gens, le noyau à faible latence est le plus logique. Mais si vous donnez toujours beaucoup de travail à votre PC, le noyau générique est fait pour vous.

Une autre façon de dire que si 90% du temps votre charge CPU sur tous les cœurs est <60%, alors le noyau à faible latence est fait pour vous. Si, en revanche, votre charge CPU sur tous les cœurs est supérieure à 80%, 90% ou plus du temps, alors le noyau générique est fait pour vous.

Quiz: Quel noyau aurait un meilleur score dans un benchmark? Tant que la latence est ignorée comme paramètre de référence, le générique gagne toujours la course, mais une faible latence, c'est comme avoir une pieuvre à vos côtés prête à déléguer.

0
Thmtrhxsu