무슨 뜻인가요?complete on same CPU-group
? 두 줄의 코드가 표시됩니다.
#define QUEUE_FLAG_SAME_COMP 9 /* complete on same CPU-group */
#define QUEUE_FLAG_SAME_FORCE 18 /* force complete on same CPU */
CPU-group
동일한 CPU
? force complete
이들그리고 그리고 의 차이점은 무엇인가요 non-force complete
?
답변1
그게 차이점이에요
#define QUEUE_FLAG_SAME_COMP 9 /* complete on same CPU-group */
#define QUEUE_FLAG_SAME_FORCE 18 /* force complete on same CPU */
이제 동일한 CPU 그룹을 다음과 같이 정의할 수 있습니다.
CPU가 동일한 클러스터(예: CPU 그룹) 아래에 있는 경우 완료를 위해 선호되는 CPU는 해당 클러스터의 첫 번째 CPU가 되고, 그렇지 않으면 해당 클러스터의 온라인 CPU가 됩니다. 이는 5.9 미만의 커널에 주로 적용됩니다. 예를 들어, CPU[0-8]에서 CPU[0-4] 아래의 모든 CPU 유형이 동일하면 동일한 CPU 그룹이라고 합니다.
또는 모든 CPU가 동일한 L3 캐시를 공유합니다. 그러면 이들은 동일한 CPU 그룹의 일부가 됩니다. 예를 들어, 시스템에 CPU0-8이 있고 동일한 L3 캐시가 있는 경우 동일한 CPU 세트라고 합니다.
이제 두 번째 쿼리는 다음과 같습니다.QUEUE_FLAG_SAME_COMP, 동일한 CPU 그룹에 속한 CPU에서 요청이 완료됩니다. CPU3이 CPU0으로부터 인터럽트 요청을 받았다고 가정하면, CPU0과 CPU 3은 동일한 그룹에 있으므로 irq를 완료하는 동일한 CPU가 소프트 인터럽트/요청 완료를 트리거합니다.
하지만 당신은 그것을 선택적으로 하도록 강요해요QUEUE_FLAG_SAME_FORCE, 위쪽 절반이 처리된 후 아래쪽 절반은 요청을 시작한 동일한 CPU에 강제로 적용됩니다. 위의 예에서는 CPU 3이라고 가정합니다. 그러면 요청은 CPU3에서 완료됩니다. 따라서 대부분의 블록 계층 및 SCSI 중간 계층 완료 작업을 IPI를 통해 제출 CPU(예: cpu3)로 다시 푸시할 수 있습니다.