2013-08-19 20 views
11

Jestem początkującym kierowcą urządzenia linuksowego i chcę poznać dokładne różnice między tasklet i workqueue. Dodatkowo mam następujące wątpliwości też:Jaka jest różnica między tasklet a workqueue

  1. Które stosu jądra zrobić przerwania, tasklet i workqueue zastosowanie podczas pracy w kontekście procesów/przerwania?
  2. W jakim priorytecie uruchomi się tasklet i kolejkę roboczą i czy możemy zmienić jego priorytet?
  3. Czy jeśli zaimplementuję własną listę kolejki pracy, czy mogę zaplanować/ustawić priorytety niezależnie?

Odpowiedz

13

Tasklets:

  • są stare (około 2,3 wierzę)
  • mieć prosty, prostego API
  • przeznaczone są do niskiej latencji
  • nie mogą spać (run atomicznie w miękkim kontekście IRQ i gwarantuje się, że nigdy nie będzie działać na więcej niż jednym procesorze danego procesora, dla danego zadania)

kolejek zadań:

  • są niedawno (wprowadzono 2,5)
  • posiada elastyczne API (więcej opcji/flagi oparte)
  • są zaprojektowane dla wyższej opóźnienia
  • może spać

Dolna linia to: użyj zadań do zadań atomowych o niskim opóźnieniu, które nadal muszą być wykonywane poza twardym kontekstem IRQ.

Możesz kontrolować pewien poziom priorytetu za pomocą zadań przy użyciu tasklet_hi_enable/tasklet_hi_schedule (zamiast ich odpowiednich wersji nr _hi). Z this IBM page:

Harmonogram normalnym priorytecie jest wykonywana przez softirq TASKLET_SOFTIRQ poziomu, w którym priorytet jest przez softirq HI_SOFTIRQ poziomu.

...

Tasklets z wysokim priorytecie wektora obsługiwane są najpierw, a następnie tych, na wektora normalnego. Zauważ, że każdy procesor utrzymuje swoje własne wektory softirq o normalnym i wysokim priorytecie.

Z kolejek roboczych, przy tworzeniu jednego, będziesz korzystać alloc_workqueue (create_workqueue jest przestarzałe) i can pass a flag prosić o wyższym priorytecie:

WQ_HIGHPRI:

przedmioty dziełem WQ highpri są w kolejce do puli wątków highpri z docelowy gcwq.Pule wątków Highpri są obsługiwane przez wątki robocze z podniesionym, ładnym poziomem.

Należy pamiętać, że pule wątków normalnych i o wysokiej wartości nie wchodzą w interakcje z każdym innym innym. Każdy z nich utrzymuje oddzielną pulę pracowników i wdraża zarządzanie współbieżnością wśród swoich pracowników.

Nie mogę odpowiedzieć na wszystkie pytania, ale mam nadzieję, że i tak to pomoże.