PF_VCPU 및 PF_WQ_WORKER의 의미

PF_VCPU 및 PF_WQ_WORKER의 의미

상수의 의미가 무엇인지 알고 있습니까 linux/sched.h?

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

프로세스에 두 플래그가 모두 설정되어 있는 경우( /proc/[pid]/statis 0x30또는 소수 의 9번째 매개변수 48) 는 무엇을 의미합니까?

나는 정의 후에 짧은 코멘트를 찾았지만 어떤 의미도 상상할 수 없습니다.

답변1

이 비트는 의 목적을 설명합니다 PF_WQ_WORKER.

발췌

동시성 관리 작업 대기열은 작업자가 언제 잠에 들고 깨어나는지 알아야 하며, 작업자가 잠에 들면 다른 작업자를 깨워 적절한 동시성을 유지할 수 있어야 합니다. 이 패치에서는 PF_WQ_WORKER작업 대기열 작업자를 식별하고 다음 두 가지 후크를 추가합니다.

  • wq_worker_waking_up(): 작업자가 깨어났을 때 호출됩니다.

  • wq_worker_sleeping(): 워커가 잠들 때 호출되며 깨워야 하는 로컬 작업에 대한 포인터를 반환할 수 있습니다. 반환된 작업은 아래에서 호출되는 try_to_wake_up_local()단순화된 작업을 사용하여 깨어나 며 로컬 작업만 깨울 수 있습니다.ttwurq lock

두 후크 모두 현재 noop에서 와 같이 정의되어 있습니다 kernel/workqueue_sched.h. 나중에 cmwq구현하면 적절한 구현으로 대체됩니다.

이러한 후크는 항상 활성화되므로 하드 코딩되어 있습니다.

원천: [패치 4/4] sched: 작업 대기열용 후크 추가

답변2

그만큼PF_VCPU플래그가 설정되어 있습니다.guest_enter에 의해 호출됩니다kvm_guest_enter에서 호출되는 것kvm_arch_vcpu_ioctl_run. 내가 아는 한 이는 KVM 가상 머신 내부에서 실행되는 프로세스에 대한 주석입니다. 호스트 스케줄러에 관한 한 프로세스는 가상 머신으로 가장하여 활성화됩니다. 그것은소개VM 내부에서 실행되는 프로세스에 소요되는 시간과 VM 자체에서 소요되는 시간을 올바르게 추적합니다.

관련 정보