
irqbalance --debug
다음을 보여줍니다:
Package 0: Core 0, 2, 4, 6, 8, 10, 12, 14
Package 1: Core 1, 3, 5, 7, 9, 11, 13
네트워크 응용 프로그램을 실행하면 IRQ가 패키지 1에서 처리되는 것처럼 보이지만 smp_affinity
NIC에 대한 IRQ는 패키지 0에 있습니다.
irqbalance
구성 을 재정의 합니까smp_affinity
?irqbalance
IRQ 처리에 사용할 패키지를 어떻게 결정합니까 ?
답변1
딱히 큰 프로그램은 아니어서 그냥소스 확인 중좋은 생각인 것 같았습니다.
irqbalance
구성 을 재정의 합니까smp_affinity
?나는 대답이 '아니요'라고 믿습니다. 무엇이든 파일 시스템
smp_affinity
의 설정을 읽는 것을 명확하게 볼 수 있습니다./proc
activate.c
:sprintf(buf, "/proc/irq/%i/smp_affinity", info->irq); file = fopen(buf, "r"); if (!file) return 1; if (getline(&line, &size, file)==0) { free(line); fclose(file); return 1; } cpumask_parse_user(line, strlen(line), current_mask);
irqbalance
IRQ 처리에 사용할 패키지를 어떻게 결정합니까 ?물론 이것은 의 전체 요점이므로
irqbalance
다음 내용은 지나치게 단순화될 가능성이 높습니다.하지만 내가 읽은 바에 따르면 관련 기능은 다음과 같습니다.
placement.c
이라는 함수에서find_best_object_for_irq()
를 호출합니다find_best_object()
.크리티컬 라인은 다음과 같습니다.여기:
asign = place.least_irqs ? place.least_irqs : place.best;
이는 현재 가장 적은 IRQ가 할당된 장소(예: 패키지)에 IRQ가 할당되었음을 나타내는 것처럼 보입니다. 또는 그렇지 않은 경우 "최고" 위치로 이동합니다. 여기서 "최고"는 부하가 가장 낮은 곳입니다.
newload = d->load; if (newload < best->best_cost) { best->best = d; best->best_cost = newload; best->least_irqs = NULL; }