IRQ affinity
Select best CPU for QEMU¶
sigma_ibo@pamhal:$ cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq
5000000
5000000
5000000
4000000
4000000
4000000
4000000
4000000
4000000
4000000
4000000
5000000
5000000
5000000
5200000
5200000
5200000
5200000 -> 17
5000000
5000000
Check which IRQs use CPU x¶
./check_smp_affinity.sh 19
CPU 19 IRQ affinity:
0
2
3
4
5
6
7
10
11
13
15
131
172
188
189
192
Check the mask of IRQ¶
The mask for IRQ0 for example would be:
cat /proc/irq/0/smp_affinity
fffff
Change permissions for the IRQs¶
In order to change the mask, first give permissions:
sudo chmod 777 /proc/irq/*/smp_affinity
Change Mask of IRQ¶
Then change the mask with
sudo echo 7ffff > /proc/irq/0/smp_affinity
Check again the changed mask of IRQ¶
cat /proc/irq/0/smp_affinity
dffff
Check again which IRQs use CPU 19¶
CPU19 is being used by IRQs with check_smp_affinity.sh (IRQ0 is not listed anymore):
0
2
3
4
5
6
7
10
11
12
13
15
133
172
173
189
191
Batch change permissions¶
sudo chmod 777 /proc/irq/0/smp_affinity
sudo chmod 777 /proc/irq/2/smp_affinity
sudo chmod 777 /proc/irq/3/smp_affinity
sudo chmod 777 /proc/irq/4/smp_affinity
sudo chmod 777 /proc/irq/5/smp_affinity
sudo chmod 777 /proc/irq/6/smp_affinity
sudo chmod 777 /proc/irq/7/smp_affinity
sudo chmod 777 /proc/irq/10/smp_affinity
sudo chmod 777 /proc/irq/11/smp_affinity
sudo chmod 777 /proc/irq/12/smp_affinity
sudo chmod 777 /proc/irq/13/smp_affinity
sudo chmod 777 /proc/irq/15/smp_affinity
sudo chmod 777 /proc/irq/133/smp_affinity
sudo chmod 777 /proc/irq/172/smp_affinity
sudo chmod 777 /proc/irq/173/smp_affinity
sudo chmod 777 /proc/irq/189/smp_affinity
sudo chmod 777 /proc/irq/191/smp_affinity
Batch cat IRQ smp_affinity¶
cat /proc/irq/0/smp_affinity # -> fffff
cat /proc/irq/2/smp_affinity # -> fffff
cat /proc/irq/3/smp_affinity # -> fffff
cat /proc/irq/4/smp_affinity # -> fffff
cat /proc/irq/5/smp_affinity # -> fffff
cat /proc/irq/6/smp_affinity # -> fffff
cat /proc/irq/7/smp_affinity # -> fffff
cat /proc/irq/10/smp_affinity # -> fffff
cat /proc/irq/11/smp_affinity # -> fffff
cat /proc/irq/12/smp_affinity # -> fffff
cat /proc/irq/13/smp_affinity # -> fffff
cat /proc/irq/15/smp_affinity # -> fffff
cat /proc/irq/133/smp_affinity # -> fffff
cat /proc/irq/172/smp_affinity # -> 80000
cat /proc/irq/173/smp_affinity # -> fffff
cat /proc/irq/189/smp_affinity # -> 80000
cat /proc/irq/191/smp_affinity # -> fffff
Batch change IRQ smp_affinity of fffff¶
sudo echo 7ffff > /proc/irq/0/smp_affinity
sudo echo 7ffff > /proc/irq/2/smp_affinity # stays fffff
sudo echo 7ffff > /proc/irq/3/smp_affinity
sudo echo 7ffff > /proc/irq/4/smp_affinity
sudo echo 7ffff > /proc/irq/5/smp_affinity
sudo echo 7ffff > /proc/irq/6/smp_affinity
sudo echo 7ffff > /proc/irq/7/smp_affinity
sudo echo 7ffff > /proc/irq/10/smp_affinity
sudo echo 7ffff > /proc/irq/11/smp_affinity
sudo echo 7ffff > /proc/irq/12/smp_affinity
sudo echo 7ffff > /proc/irq/13/smp_affinity
sudo echo 7ffff > /proc/irq/15/smp_affinity
sudo echo 7ffff > /proc/irq/133/smp_affinity # stays 80000
sudo echo 7ffff > /proc/irq/172/smp_affinity # stays 80000
sudo echo 7ffff > /proc/irq/173/smp_affinity # stays fffff
sudo echo 7ffff > /proc/irq/189/smp_affinity # stays fffff
sudo echo 7ffff > /proc/irq/191/smp_affinity # stays fffff
COULD NOT BE CHANGED¶
2
172
173
189
191
VALUES¶
cat /proc/irq/2/smp_affinity #-> fffff
cat /proc/irq/172/smp_affinity #-> 80000
cat /proc/irq/173/smp_affinity #-> 80000
cat /proc/irq/189/smp_affinity #-> fffff
cat /proc/irq/191/smp_affinity #-> fffff