I'm using the same FreeBSD kernel on ARM based instance and Intel based instance.
ARM based instance uname:
Intel based instance uname:
For the Intel based instance, I want to see the affinity of the hardware interrupts so I run the following:
Now after I run cpuset I get:
However on ARM instance I do the same and get the following:
After running cpuset:
Why are the interrupts name are different in ARM/Intel and how can I get the interrupts affinity in ARM systems?
Followup question:
Upon printing the cpu on which the HW interrupts are received (curcpu parameter within the msix interrupt handler) on ARM systems I can see that all interrupts are received on CPU 0. Why is that?
Is it an acceptable practice in FreeBSD to spread the interrupt affinity upon different cores by default using bus_bind_intr() calls?
ARM based instance uname:
Code:
uname -a
FreeBSD freebsd 13.2-RELEASE FreeBSD 13.2-RELEASE releng/13.2-n254617-525ecfdad597 GENERIC arm64
Code:
uname -a
FreeBSD freebsd 13.2-RELEASE FreeBSD 13.2-RELEASE releng/13.2-n254617-525ecfdad597 GENERIC amd64
For the Intel based instance, I want to see the affinity of the hardware interrupts so I run the following:
Code:
$ vmstat -i
interrupt total rate
.
.
irq41: ena0 137 4
irq42: ena0 97 3
irq43: ena0 18 1
irq44: ena0 5254 159
Code:
$ cpuset -g -x 44
irq 44 mask: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
However on ARM instance I do the same and get the following:
Code:
$ vmstat -i
interrupt total rate
gic0,p11:-ic_timer0 44021813 503
..
its0,75: ena0 580 0
its0,76: ena0 2943 0
its0,77: ena0 586 0
Code:
$ cpuset -g -x 75
cpuset: getaffinity: No such process
Why are the interrupts name are different in ARM/Intel and how can I get the interrupts affinity in ARM systems?
Followup question:
Upon printing the cpu on which the HW interrupts are received (curcpu parameter within the msix interrupt handler) on ARM systems I can see that all interrupts are received on CPU 0. Why is that?
Is it an acceptable practice in FreeBSD to spread the interrupt affinity upon different cores by default using bus_bind_intr() calls?