você sabe qual o significado das constantes é definido em linux/sched.h
:
#define PF_VCPU 0x00000010 /* I'm a virtual CPU */
#define PF_WQ_WORKER 0x00000020 /* I'm a workqueue worker */
O que significa quando um processo tem ambos os sinalizadores definidos (o nono parâmetro em /proc/[pid]/stat
is 0x30
ou decimal 48
)
Só achei comentários curtos depois das definições, mas não consigo imaginar nenhum sentido.
Responder1
Esta parte explica o propósito do PF_WQ_WORKER
.
excerto
A fila de trabalho gerenciada por simultaneidade precisa saber quando os trabalhadores vão dormir e acordar e, quando um trabalhador adormece, ser capaz de acordar outro trabalhador para manter a simultaneidade adequada. Este patch introduz
PF_WQ_WORKER
a identificação de trabalhadores da fila de trabalho e adiciona os dois ganchos a seguir.
wq_worker_waking_up()
: chamado quando um trabalhador é acordado.
wq_worker_sleeping()
: chamado quando um trabalhador vai dormir e pode retornar um ponteiro para uma tarefa local que deve ser despertada. A tarefa retornada é ativada usandotry_to_wake_up_local()
o que é simplificadottwu
e chamadorq lock
e só pode ativar tarefas locais.Ambos os ganchos estão atualmente definidos como
noop
emkernel/workqueue_sched.h
. A implementação posteriorcmwq
irá substituí-los pela implementação adequada.Esses ganchos são codificados, pois sempre estarão habilitados.
Responder2
OPF_VCPU
bandeira está colocada emguest_enter
que é chamado porkvm_guest_enter
que é chamado emkvm_arch_vcpu_ioctl_run
. Pelo que entendi, é uma anotação em um processo que está sendo executado dentro de uma máquina virtual KVM; no que diz respeito ao escalonador host, o processo está ativo sob a forma de sua máquina virtual. Eraintroduzidopara rastrear adequadamente o gasto em um processo em execução dentro de uma VM versus o tempo gasto pela própria VM.