Bedeutung von PF_VCPU und PF_WQ_WORKER

Bedeutung von PF_VCPU und PF_WQ_WORKER

wissen Sie, was die Bedeutung der Konstanten hier definiert ist linux/sched.h:

  #define PF_VCPU       0x00000010  /* I'm a virtual CPU */
  #define PF_WQ_WORKER  0x00000020  /* I'm a workqueue worker */

Was bedeutet es, wenn ein Prozess beide Flags gesetzt hat (der neunte Parameter in /proc/[pid]/statist 0x30oder dezimal 48)

Ich habe nur die kurzen Kommentare nach den Definitionen gefunden, kann mir aber keinen Sinn darin vorstellen.

Antwort1

In diesem Abschnitt wird der Zweck von erläutert PF_WQ_WORKER.

Auszug

Die parallel verwaltete Arbeitswarteschlange muss wissen, wann die Arbeiter schlafen gehen und aufwachen, und wenn ein Arbeiter schlafen geht, muss sie in der Lage sein, einen anderen Arbeiter aufzuwecken, um eine angemessene Parallelität aufrechtzuerhalten. Dieser Patch führt PF_WQ_WORKERdie Identifizierung von Arbeitern in der Arbeitswarteschlange ein und fügt die folgenden zwei Hooks hinzu.

  • wq_worker_waking_up(): wird aufgerufen, wenn ein Arbeiter aufgeweckt wird.

  • wq_worker_sleeping(): wird aufgerufen, wenn ein Worker in den Ruhezustand geht, und kann einen Zeiger auf eine lokale Aufgabe zurückgeben, die geweckt werden soll. Die zurückgegebene Aufgabe wird mithilfe von geweckt, try_to_wake_up_local()was vereinfacht ist ttwu, was unter aufgerufen wird rq lockund nur lokale Aufgaben wecken kann.

Beide Hooks sind derzeit wie noopin definiert kernel/workqueue_sched.h. Spätere cmwqImplementierungen werden sie durch eine ordnungsgemäße Implementierung ersetzen.

Diese Hooks sind fest codiert, da sie immer aktiviert sind.

Quelle: [PATCH 4/4] sched: Hooks für Arbeitswarteschlange hinzufügen

Antwort2

DerPF_VCPUFlagge ist gesetzt inguest_enterdas heißtkvm_guest_enterdas heißt inkvm_arch_vcpu_ioctl_run. Soweit ich es verstehe, handelt es sich um eine Anmerkung zu einem Prozess, der in einer virtuellen KVM-Maschine ausgeführt wird. Für den Host-Scheduler ist der Prozess in Gestalt seiner virtuellen Maschine aktiv. Es wareingeführtum die Zeit, die für einen in einer VM ausgeführten Prozess aufgewendet wird, im Vergleich zur von der VM selbst aufgewendeten Zeit richtig zu verfolgen.

verwandte Informationen