Significado de PF_VCPU y PF_WQ_WORKER

Significado de PF_VCPU y PF_WQ_WORKER

¿Sabes cuál se define el significado de las constantes en linux/sched.h:

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

¿Qué significa cuando un proceso tiene ambas banderas configuradas (el noveno parámetro en /proc/[pid]/statis 0x30o decimal 48)?

Solo encontré comentarios breves después de la definición, pero no puedo imaginar ningún sentido.

Respuesta1

Este bit explica el propósito de PF_WQ_WORKER.

extracto

La cola de trabajo administrada por simultaneidad necesita saber cuándo los trabajadores van a dormir y cuándo se despertarán y, cuando un trabajador se va a dormir, poder despertar a otro trabajador para mantener una simultaneidad adecuada. Este parche introduce PF_WQ_WORKERla identificación de trabajadores de la cola de trabajo y agrega los dos ganchos siguientes.

  • wq_worker_waking_up(): se llama cuando se despierta a un trabajador.

  • wq_worker_sleeping(): se llama cuando un trabajador se va a dormir y puede devolver un puntero a una tarea local que debe despertarse. La tarea devuelta se activa mediante try_to_wake_up_local()el método simplificado ttwuque se llama a continuación rq locky solo puede activar tareas locales.

Ambos ganchos están actualmente definidos como noopen kernel/workqueue_sched.h. La implementación posterior cmwqlos reemplazará con una implementación adecuada.

Estos ganchos están codificados de forma rígida, ya que siempre estarán habilitados.

Fuente: [PATCH 4/4] programado: agregar ganchos para la cola de trabajo

Respuesta2

ElPF_VCPUla bandera está colocada enguest_enterque es llamado porkvm_guest_enterque se llama enkvm_arch_vcpu_ioctl_run. Hasta donde tengo entendido, es una anotación sobre un proceso que se ejecuta dentro de una máquina virtual KVM; En lo que respecta al programador del host, el proceso está activo bajo la apariencia de su máquina virtual. Fueintroducidopara realizar un seguimiento adecuado del tiempo invertido en un proceso que se ejecuta dentro de una VM frente al tiempo invertido por la propia VM.

información relacionada