Significado de PF_VCPU e PF_WQ_WORKER

1

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 é 0x30 ou decimal 48 )

Eu só encontrei esses curtos comentários após os definidos, mas não consigo imaginar nenhum sentido.

    
por Christoph 19.06.2014 / 11:50

2 respostas

1

Este bit explica a finalidade de PF_WQ_WORKER .

trecho

Concurrency managed workqueue needs to know when workers are going to sleep and waking up, and, when a worker goes to sleep, be able to wake up another worker to maintain adequate concurrency. This patch introduces PF_WQ_WORKER to identify workqueue workers and adds the following two hooks.

  • wq_worker_waking_up(): called when a worker is woken up.

  • wq_worker_sleeping(): called when a worker is going to sleep and may return a pointer to a local task which should be woken up. The returned task is woken up using try_to_wake_up_local() which is simplified ttwu which is called under rq lock and can only wake up local tasks.

Both hooks are currently defined as noop in kernel/workqueue_sched.h. Later cmwq implementation will replace them with proper implementation.

These hooks are hard coded as they'll always be enabled.

Fonte: [PATCH 4/4] sched : adicione ganchos para a fila de trabalho

    
por 19.06.2014 / 15:10
1

O sinalizador PF_VCPU está definido em guest_enter que é chamado por kvm_guest_enter que é chamado em kvm_arch_vcpu_ioctl_run . Tanto quanto eu entendo, é uma anotação em um processo que está sendo executado dentro de uma máquina virtual KVM; No que diz respeito ao agendador de host, o processo está ativo sob o disfarce de sua máquina virtual. Foi introduzido para rastrear adequadamente o gasto em um processo executado em uma VM versus tempo gasto pela própria VM.

    
por 20.06.2014 / 03:23