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]/stat프로세스에 두 플래그가 모두 설정된 경우(9번째 인수는 0x30또는 10진수 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 가상 머신 내에서 실행되는 프로세스에 대한 설명이며 해당 프로세스는 가상 머신으로 활성화됩니다. 그것은소개하다가상 머신 내에서 실행되는 프로세스에 소요되는 시간과 가상 머신 자체에 소요되는 시간을 올바르게 추적합니다.

관련 정보