Pourquoi choisir un noyau à faible temps de latence plutôt qu’un noyau générique ou en temps réel?


105

Après avoir installé Ubuntu Studio 12.04, j'ai découvert qu'il utilise un noyau à faible latence. J'ai cherché pourquoi et comment revenir à un temps réel ou générique. Mais on dirait que cette partie de Linux n’a pas été autant couverte.

Q: Pourquoi choisir un noyau à faible temps de latence plutôt qu’un noyau générique ou en temps réel?

PS: J'ai déjà lu les réponses de cette question et de ce post.


3
+1 parce que ce doit être une très bonne question si tout le monde est perplexe. Je ne connais TOUJOURS pas la différence entre les noyaux à faible temps de latence, génériques et en temps réel. Si -realtimeest en temps réel, alors que signifie -rt? Et quoi de neuf avec le -preemptnoyau? Je remercierai gemue2010, il a fait un très bon travail pour l'expliquer, mais cela n'explique toujours pas tout.
Hitechcomputergeek

Réponses:


61

Voici quelques instructions simples fournies pour vous aider à comprendre quel noyau et dans quel ordre vous devez tester pour vous adapter à votre cas d'utilisation.

  • Si vous n’avez pas besoin d’une faible latence pour votre système, veuillez utiliser le noyau générique.
  • Si vous avez besoin d’un système à faible temps de latence (par exemple, pour l’enregistrement audio), veuillez utiliser le noyau -preempt en premier lieu. Cela réduit la latence mais ne sacrifie pas les fonctionnalités d'économie d'énergie. Il est disponible uniquement pour les systèmes 64 bits (également appelé amd64).
  • Si le noyau -preempt ne fournit pas assez de latence faible pour vos besoins (ou si vous avez un système 32 bits), vous devriez essayer le noyau -lowlatency.
  • Si le noyau -lowlatency ne suffit pas, vous devriez essayer le noyau -rt
  • Si le noyau -rt n'est pas assez stable pour vous, vous devriez essayer le noyau -realtime

Source d'aide Ubuntu

Cela dépend donc de ce que vous ferez avec votre distro de studio. Pour la plupart des utilisateurs ayant besoin du temps de réponse utilisateur final rapide, générique convient parfaitement, pour les autres qui ont besoin de faire de l'édition vidéo professionnelle où même une simple suppression d'image est inacceptable, le noyau temps réel est nécessaire.

Pour un article de blog plus exhaustif et facile à comprendre, lisez ce lien


1
J'ai déjà lu l'article précédent que vous avez posté. À propos de la seconde, dans quelle mesure ces faits sont-ils fiables?
Starx le

Eh bien, les tests mentionnés ici parlent par eux-mêmes. Si l'équipe Ubuntu a choisi la latence en premier lieu, ce doit être une raison. Vous vouliez donc connaître les différences, maintenant vous le faites. Problème résolu ?
fan ubuntu

5
Non .. Je ne pense pas que le problème est résolu. Si votre réponse fait quelque chose, cela augmente encore plus ma curiosité.
Starx

9
Est-ce que cela est toujours vrai en 2015? Les -preempt, -rt, et les -realtimenoyaux sans plus existent
naught101

51

Je suis l'auteur de l'article de blog lié par un fan d'ubuntu: http://sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/

Ce billet de blog ne présente aucun fait, ce n'est que de la théorie . En fait, c'est ainsi que fonctionne le processeur: le processeur "s'arrête" plus souvent pour voir si certains processus nécessitent une attention immédiate. Cela signifie que ces processus seront exécutés avant les autres, vous ne passerez donc pas d'images lors de l'encodage, ni de longs délais entre les clics de souris et les morts de l'ennemi. Cela ne signifie pas que tous les processus se termineront plus tôt: en réalité, le processeur perd une plus grande partie de son temps à décider quel processus sera exécuté ensuite et à effectuer le changement de contexte. Le temps total d’exécution est donc plus long, raison pour laquelle personne n’exécute de noyau préemptible sur les serveurs de serveur Web ou de base de données. Mais un noyau préemptible de 300 Hz (voire de 1000 Hz) est le meilleur pour les serveurs de jeux.

Mais de nos jours, les processeurs ont plusieurs cœurs. Ainsi, lorsque peu de processus requièrent une attention particulière, ils peuvent facilement être attribués à un cœur différent plutôt que d’attendre qu’un cœur le prenne.

(stackexchange me demande références / expérience personnelle: je suis un ingénieur électronicien, un noobgamer sanguinaire possédant plusieurs serveurs de jeu sur http://www.gamezoo.it ).

Donc, en règle générale, je dirais: si votre processeur est un quad-core haute fréquence puissant et encombrant ET que vous n'ouvrez généralement pas des tonnes de pages Web lors du codage / décodage / jeu (hein), vous pourriez essayez simplement le noyau générique (ou i686, ou amd64 s’ils existent) et obtenez le débit le plus élevé possible (c’est-à-dire que le processeur peut effectuer le traitement brut des chiffres). Si vous rencontrez des problèmes (ils devraient vraiment être mineurs) ou si votre machine est légèrement moins puissante que le haut du marché, optez pour la prévention.

Si vous êtes sur une machine bas de gamme qui n’est équipée que d’un ou deux cœurs, essayez -lowlatency. Vous pouvez également essayer le -realtime, mais vous constaterez qu'il tend à bloquer les processus jusqu'à ce que ceux "en temps réel" aient terminé leur travail. Je crois que le noyau temps réel n’est pas le noyau "vanille", mais a le correctif CONFIG_PREEMPT_RT appliqué. Je pense que les noyaux temps réel ne sont destinés qu'à ceux qui doivent créer une seule application sur des systèmes embarqués. Par conséquent, les utilisateurs de bureau classiques ne devraient pas bénéficier d'avantages réels, car ils exécutent généralement un nombre non négligeable d'applications.

Enfin, les options de noyau les plus pertinentes si vous souhaitez recompiler vous-même votre noyau afin de disposer d’un bureau à faible latence sont les suivantes:

PREEMPT=y

et:

CONFIG_1000_HZ=y

Pour ajouter un peu d'économie d'énergie, vous pouvez vérifier celui-ci:

CONFIG_NO_HZ=y

J'ai remarqué que vous avez mentionné la maintenance des serveurs. J'essaie de trouver le meilleur noyau pour le serveur dédié à source de vanne (CSGO en particulier). la plupart des threads CS que je trouve sont liés à goldsrc qui nécessitait un noyau de 1000Hz. Avec srcds, la lowlatency est-elle mauvaise? si cela ne fait rien, je vais rester fidèle à la lowlatency, comme c'est ce que j'ai actuellement (j'isole les cœurs de processeur pour 128 serveurs srcds, car cela ne profite pas vraiment du multi-threading de toute façon).
Vincent De Smet

Utile pour connaître ces astuces, je vais totalement changer en préempt. Je ne suis pas si pressé que je veux que mon noyau agisse comme un sale pirate.
utilisateur du

4

Extrait du document cité ci-dessus ( http://www.versalogic.com/mediacenter/whitepapers/wp_linux_rt.asp )

  1. un système en temps réel mou donnera une latence moyenne réduite mais pas un temps de réponse maximum garanti.
  2. Un système en temps réel difficile respecte les délais souhaités à tout moment (100%), même lorsque la charge du système est la plus défavorable.
  3. Selon Yaghmour [4], "Le traitement en temps réel des garanties, pas de la vitesse brute".

L'article indique que, pour le noyau dur en temps réel, la propriété la plus importante est la propriété la plus importante. Par conséquent, ils retardent parfois les activités non critiques qui entraînent un retard, mais pour le noyau de faible latence ou un autre noyau temps réel souple, essayez de réduire la latence générale, ce qui est utile dans la plupart des cas. En raison de la latence réduite, le système semble être rapide. Lisez attentivement l'article.


C'est vrai, mais nous avons besoin de savoir quelle variante de noyau correspond à quelle «dureté» du système en temps réel.
Melebius

0

J'ai ce vieil ordinateur portable avec double AMD A6-4400M à 1600 MHz, que j'utilise avec parcimonie lorsque je ne suis pas au bureau, principalement pour lire des courriels et naviguer sur des sites Web occasionnels. Il y avait quelque chose, peut-être lié aux mises à jour logicielles, qui le rend insensible. Quelque chose comme taper une douzaine de caractères sans voir le premier. Souvent, le widget me demande si je devrais forcer un processus à quitter.

Après sudo apt-get install linux-lowlatencyet redémarrer, il est devenu lisse et réactif. (uname -r 5.0.0-20-lowlatency.) Merveilleux, j'aurais dû changer d'années. Permettez-moi d'insister sur la réponse de Seven: à moins que vous ne vouliez utiliser le maximum d'un serveur pour calculer les numéros, optez pour l'option -preempt !

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.