Journal : Linux: Une Décennie De Coeurs Gaspillés Posté Par Pmoret (Page Perso) Le 08/04/16 À 09:30
Total Page:16
File Type:pdf, Size:1020Kb
Journal : Linux: une décennie de coeurs gaspillés Posté par pmoret (page perso) le 08/04/16 à 09:30. Licence CC by-sa Tags : linux, scheduler D'aucuns pensaient que l'ordonnancement (scheduling) était un problème résolu ou presque. Linus Torvals disait en 2001: And you have to realize that there are not very many things that have aged as well as the scheduler. Which is just another proof that scheduling is easy. Vous devez réaliser que peu de choses ont aussi bien vieilli que l'ordonnanceur. Ce qui constitue une preuve de plus que l'ordonnancement est facile. L'implémentation pratique d'un algorithme pour les systèmes multi-coeurs est cependant loin d'être triviale. La publication qui donne lieu à ce journal The Linux Scheduler: a Decade of Wasted Cores l'illustre sur plusieurs points. La parution de ce journal un vendredi est bien entendu une pure coïncidence. En résumé, la problématique est que le coût de transfert d'un process vers un autre coeur est potentiellement élevé, et dépend entre autre de la structure des mémoires cache. L'agrégation des données de charge entre les coeurs/processeurs doit aussi être réfléchie, il y a un équilibre à trouver entre trop partager entre les coeurs et ralentir le système et risquer de prendre des décisions d'ordonnancement basées sur des informations partielles. Il y a donc recours à des heuristiques et optimisations qui ne fonctionnent pas dans tous les cas: dans la publication il est montré que certains coeurs sont inactifs pour de longues période alors que des processus prêts à tourner attendent ailleurs. L'article se lit bien et est agrémenté de citations de notre cher Linus qui n'a pas toujours raison… Energy waste is proportional. Posté par mh-cbon le 08/04/16 à 10:13. Évalué à -8 (+11/-15). +1 à main levée, comme je n'ai plus de droit de vote ; ) Re: Energy waste is proportional. Posté par Dr. Frank N. Furter le 08/04/16 à 10:21. Évalué à 8 (+6/-0). https://linuxfr.org/aide#aide-karma -- Depending on the time of day, the French go either way. Re: Energy waste is proportional. Posté par mh-cbon le 08/04/16 à 10:29. Évalué à -6 (+4/-6). Pour pouvoir écrire un journal, dans le wiki ou sur la tribune, il faut avoir un karma supérieur strictement à 0 (sources journal, wiki, tribune). autant dire que c'est mort pour moi pour le moment :D Et bon bah, je ne te mettrais pas +1 pour contribuer à ton karma vu que je ne peux plus voter :=/ J'aimerais bien connaitre ma valeur de karma. Pour en revenir sur le papier, on s'amuse beaucoup à lire les citations ;) Par contre la partie explicative de l’ordonnancement en multi-coeur nécessitera plus d'une re-lecture, donc au moins 3 lectures en ce qui me concerne. Re: Energy waste is proportional. Posté par Dr. Frank N. Furter le 08/04/16 à 10:48. Évalué à 9 (+7/-0). […]Le karma augmente donc lorsque l'on reçoit des notes « pertinent » (quel que soit le type de contenu ou le commentaire noté) ou que l'on publie des dépêches. J'aimerais bien connaitre ma valeur de karma. https://linuxfr.org/users/mh-cbon 3eme boite sur la gauche. -- Depending on the time of day, the French go either way. Ouai... Posté par barmic le 08/04/16 à 10:20. Évalué à 10 (+7/-0). D'aucuns pensaient que l'ordonnancement (scheduling) était un problème résolu ou presque. Linus Torvals disait en 2001: Puis en 2007, le noyau a totalement changé de scheduler pour passer à CFS (les cgroups, LXC, Docker, systemd, ça parle à des gens ? ;) ) et c'était tellement limpide qu'il y toujours eu un concurrent de CFS : BFS (pour Brain Fuck Scheduler W). D'après son maintenant, quand tu a moins de 16 cores son truc est mieux (j'en profite pour découvrir que c'est encore maintenu ce qui est cool :). J'ai pas lu l'article mais par rapport à ce que tu dis. Grosso modo le problème des schedulers, c'est qu'ils doivent prendre en un temps très réduit une décision sans pour autant avoir toutes les informations dont ils ont besoin à disposition. Le noyau a toujours (ou depuis très longtemps) eu de quoi interagir avec l'ordonnanceur depuis le userspace (avec cpuset par exemple), mais CFS via les cgroups a apporté beaucoup plus de finesse dans cela. Pour rappel 3 ans après sont introduction, on a eu une nouvelle option dans le noyau qui montrait bien l'intérêt de CFS : http://www.computerworld.com/article/2469655/desktop-apps/the-linux-desktop-may-soon-be-a-lot-faster.html Bref en 2001, il restait encore beaucoup à faire ! :) -- Les logiciels sous licence GPL forcent leurs utilisateurs à respecter la GPL (et oui, l'eau, ça mouille). However, they must be able to steal from the more loaded cores on other nodes. Posté par mh-cbon le 08/04/16 à 10:40. Évalué à -9 (+1/-6). Why is this not the case? Remember that to limit algorithmic complexity, the load balancing algorithm uses a hierarchical design. When a core attempts to steal work from another node, or, in other words, from another scheduling group, it does not examine the load of every core in that group, it only looks at the group’s average load (line 11 of Algorithm 1). If the average load of the victim scheduling group is greater than that of its own, it will attempt to steal from that group; otherwise it will not. This is the exact reason why in our situation the underloaded cores fail to steal from the overloaded cores on other nodes. They observe that the average load of the victim node’s scheduling group is not any greater than their own. The core trying to steal work runs on the same node as the high-load R thread; that thread skews up the average load for that node and conceals the fact that some cores are actually idle. At the same time, cores on the victim node, with roughly the same average load, have lots of waiting threads. Re: However, they must be able to steal from the more loaded cores on other nodes. Posté par ʭ ☯ (page perso) le 08/04/16 à 10:51. Évalué à -2 (+0/-4). Même traduit automatiquement ça ne devient pas compréhensible en français ;-) Pourquoi est-ce pas le cas? Rappelez-vous que pour limiter la complexité algorithmique, la charge algorithme d'équilibrage utilise une conception hiérarchique. Quand un noyau les tentatives de voler le travail d'un autre noeud, ou, en d'autres termes, d'un autre groupe de planification, il ne porte pas sur la charge de chaque noyau de ce groupe, il ne regarde que le groupe de charge moyenne (ligne 11 de l'algorithme 1). Si la charge moyenne du groupe de planification de la victime est supérieure à celle de son propre, il va tenter de voler de ce groupe; sinon ne sera pas. Ceci est la raison exacte pour laquelle dans notre situation, la noyaux sous-charge ne parviennent pas à voler les noyaux surchargés sur d'autres nœuds. Ils observent que la charge moyenne de la victime noeuds groupe de planification est pas plus grande que leur posséder. Le noyau essayant de voler le travail fonctionne sur le même noeud le R-fil de charge élevée; ce fil biaise la moyenne charger pour ce noeud et cache le fait que certains noyaux sont effectivement ralenti. Dans le même temps, les noyaux sur le noeud victime, avec à peu près la même charge moyenne, ont beaucoup d'attente threads. -- ⚓ À g'Auch TOUTE! http://agauch.online.fr Re: However, they must be able to steal from the more loaded cores on other nodes. Posté par mh-cbon le 08/04/16 à 11:13. Évalué à -7 (+1/-4). oui, et puis je ne m'y tenterais pas. Le portage de certaines dénominations de la langue anglaise vers la langue française sont vraiment insupportable. Mon plus bel exemple étant celui ci Projects each element of an observable sequence into a new sequence of observable sequences by incorporating the element's index and then transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence. tenter le en traduisant observable par sujet, vous allez voir c'est pas fun ; ) Ceci dit, c'était surtout pour réagir à ceci, mais la citation était mal choisie. Le noyau a toujours (ou depuis très longtemps) eu de quoi interagir avec l'ordonnanceur depuis le userspace (avec cpuset par exemple), mais CFS via les cgroups a apporté beaucoup plus de finesse dans cela. Je saute aux conclusions (j'avoue je n'ai pas lu tous les bugs), le problème n'est pas le manque d'outils existant ou d'algo, mais leurs intégrations dans un système fiable et cohérent. All of these algorithms (le papier en cite plusieurs pour diverses optimisations) showed positive benefits, either in terms of performance or power, for some real applications. However, few of them were adopted in mainstream operating systems, mainly because it is not clear how to integrate all these ideas in scheduler safely. Pour réussir ce véritable défi, le papier préconise de commencer par se doter d'outils de visualisation. Another lesson we learned as a result of this work is the crucial importance of visualization tools.