TacOS-team / tacos

Système d'exploitation / Operating System
GNU General Public License v3.0
9 stars 4 forks source link

Optimisation add_event ? #231

Closed MaximeCheramy closed 9 years ago

MaximeCheramy commented 9 years ago

Actuellement add_event repose sur une sorte de liste chaînée (basée sur des tableaux) qui permet de faire des insertions triées. Il faudrait voir combien il y a d'éléments en moyenne pour savoir si cela ne serait pas plus efficace d'utiliser un tas binaire (implémentation à base de tableau aussi). Si on reste sur la liste, il faut vraiment s'assurer que c'est assez rapide. Est-ce qu'on a vraiment besoin de tout l'overhead lié au chaînage pour avoir une liste triée ? Ou est-ce qu'on peut se permettre de tout reparcourir à chaque fois qu'on en a besoin ?

Cela me parait important car add_event est appelé par l'ordo toutes les 5ms et par tous les process qui ont besoin de délais.

NicolasFloquet commented 9 years ago

A priori dans cette liste il devrait y avoir les ordonnancements, et les sleep, ça devrait pas représenter grand chose de manière générale. Après effectivement, si les seules opérations qu'on fait sur cette structure c'est des insertions et pop le plus petit élément, c'est un tas qu'il nous faut.

MaximeCheramy commented 9 years ago

Lorsque j'ai créé ce ticket, je faisais fasse à un gros problème de performance que j'ai depuis réglé : lorsque le système était très chargé, et compte tenu qu'on bloque parfois les interruptions, on se retrouvait avec une accumulation d'events. J'avais une centaine d'éléments et ça empirait avec le temps jusqu'au freeze.

Maintenant je pense qu'il doit il y avoir 2 éléments tout au plus... Mais le ticket reste valide : actuellement la liste utilisée est inutilement complexe.