web-dev-qa-db-fra.com

Différence entre SoftRQs et Tasklets

Lors de l'étude de la gestion des interruptions de Linux, j'ai constaté que les groupes de tâches et SoftRQ sont deux méthodes différentes d'exécution de la "moitié inférieure" (travail de priorité inférieure). Je comprends cela (besoin assez authentique).

La différence étant, Sofirqs sont re-adtars pendant qu'un tâche n'est pas. Le même SoftRQ peut fonctionner sur différents processeurs pendant que ce n'est pas le cas avec les tâches.

Bien que je comprenne cela de la surface, mais je manque de comprendre les exigences des deux caractéristiques. Dans quels cas nous pouvons utiliser ces installations? Comment reconnaître que je devrais utiliser des groupes de tâches maintenant et Sofirqs alors.

De plus, qu'entendons-nous par les tâches de tâches sont faites sur SoftRQS? Dans l'un des livres que j'ai lu dans LKML, il y avait des débats sur l'enlèvement des tâches. Je me suis complètement confus pourquoi on apporterait une telle caractéristique? Une manifestation de manœuvre (aucune infraction signifiait)?

Tous les pointeurs sur cela aideront beaucoup.

21
ultimate cause

Les sofirqs sont ré-entrants, c'est-à-dire que les différents processeurs peuvent prendre le même Softirq et l'exécuter pendant que les tâches sont sérialisées qui est la même CPU qui exécute le Tasklet a le droit de le compléter, aucun autre processeur ne peut le prendre (au cas où de planification). Reportez-vous ceci excellent article.

Vous pouvez également activer/désactiver le traitement de differt à l'aide de la CPU locale_bh_enable () sur la CPU locale qui fait en réalité le _ _local_bh_count non nul.

Aussi Lisez ce livre (téléchargeable gratuitement) Numéro 131 - qui explique la différence ainsi que l'explication à l'aide de l'exemple de code avec un faux ou un rouleau.

11
Raulp

Les Sofirqs sont statilement alloués à la compilation. Contrairement aux tâches des tâches, vous ne pouvez pas vous enregistrer de manière dynamique et détruire SoftRQs.Tasklets est similaire à SoftRQS (fonctionnel) Toutefois, ils ont une interface plus simple. Les Sofirqs ne sont requis que pour des utilisations très élevées et très filetées, tandis que les groupes de tâches fonctionnent parfaitement dans tout autre cas.

2
Tejas

Les groupes de tâches sont implémentés au-dessus de SoftRQ, de sorte qu'ils sont SoftRQ. Ils sont représentés par la différence "Hi_SoftRQ & Tasklet_SofTriq" de SoftRQ, c'est la priorité. Même s'ils sont mis en œuvre au-dessus de SoftRQ, ils diffèrent dans:

  • Les groupes de tâches peuvent être créés/détruits de manière statique ou dynamique, mais les SoftRQ ne sont que par voie statique.

  • Deux tâches différentes peuvent fonctionner simultanément sur le même processeur. Mais deux du même type de tâches ne peuvent pas fonctionner sur la même processeur. ATTENDU QUE SoftRQ sont de l'autre sens.

SoftRQ est réservé à la plupart des temps critiques et importants de la demi-transformation du système sur le système.

1
Nagi