Não é um programa particularmente grande, portanto, apenas verificação das fontes pareceu uma boa ideia.
-
A configuração
irqbalance
overridesmp_affinity
?Eu acredito que a resposta é não. Se houver alguma coisa, você pode vê-lo claramente lendo a configuração
smp_affinity
de o sistema de arquivos/proc
emactivate.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);
-
Como o
irqbalance
decide qual pacote usar para lidar com IRQs?Isso, claro, é o ponto inteiro de
irqbalance
, então o que segue é provável que seja uma simplificação excessiva.Mas, da minha leitura, a função relevante está em
placement.c
em um função chamadofind_best_object_for_irq()
, que por sua vez chamafind_best_object()
.A linha crítica parece estar aqui :
asign = place.least_irqs ? place.least_irqs : place.best;
O que parece indicar que o IRQ é atribuído a esse local (por exemplo, pacote) que atualmente possui o menor número de IRQs atribuídos; ou se não, para o "melhor" lugar, onde "melhor" é o que tem o carga mais baixa:
newload = d->load; if (newload < best->best_cost) { best->best = d; best->best_cost = newload; best->least_irqs = NULL; }