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]/stat
ist 0x30
oder 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_WORKER
die 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 istttwu
, was unter aufgerufen wirdrq lock
und nur lokale Aufgaben wecken kann.Beide Hooks sind derzeit wie
noop
in definiertkernel/workqueue_sched.h
. Späterecmwq
Implementierungen 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_VCPU
Flagge ist gesetzt inguest_enter
das heißtkvm_guest_enter
das 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.