Irqbalance seems to be doing a good enough job, but reason I installed was near everything seemed to start on cpu0
cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
9: 0 0 0 0 0 0 0 0 GICv3 25 Level vgic
11: 0 0 0 0 0 0 0 0 GICv3 30 Level kvm guest ptimer
12: 0 0 0 0 0 0 0 0 GICv3 27 Level kvm guest vtimer
13: 118390 151517 101039 106317 51717 22788 55563 43893 GICv3 26 Level arch_timer
14: 44070 13991 8033 19607 14779 12781 28246 11313 GICv3 321 Level rk_timer
15: 0 0 0 0 0 0 0 0 GICv3 23 Level arm-pmu
16: 2 0 0 0 93 0 0 0 GICv3 105 Level dmc
17: 108 0 0 0 0 0 1007 0 GICv3 126 Level fb000000.gpu
18: 2 0 0 0 0 0 0 0 GICv3 125 Level fb000000.gpu
19: 438 0 0 0 551155 0 0 0 GICv3 124 Level fb000000.gpu
20: 125 0 0 0 0 0 820 0 GICv3 247 Level ehci_hcd:usb1
21: 0 0 0 0 0 0 0 0 GICv3 248 Level ohci_hcd:usb3
22: 0 0 0 0 0 0 0 0 GICv3 250 Level ehci_hcd:usb2
23: 0 0 0 0 0 0 0 0 GICv3 251 Level ohci_hcd:usb4
24: 0 0 0 0 0 0 0 0 GICv3 425 Level rockchip_usb2phy
25: 2 0 0 0 0 0 0 0 GICv3 423 Level rockchip_usb2phy
26: 1 0 0 0 0 0 1 0 GICv3 424 Level rockchip_usb2phy
27: 12136 0 0 0 0 0 0 0 GICv3 349 Level fd880000.i2c
28: 0 0 0 0 0 0 0 0 GICv3 142 Level fdab9000.iommu, fdab0000.npu
29: 0 0 0 0 0 0 0 0 GICv3 143 Level fdab9000.iommu, fdab0000.npu
30: 0 0 0 0 0 0 0 0 GICv3 144 Level fdab9000.iommu, fdab0000.npu
31: 0 0 0 0 0 0 0 0 GICv3 151 Level fdb50400.vdpu
32: 0 0 0 0 0 0 0 0 GICv3 150 Level fdb50800.iommu
33: 0 0 0 0 0 0 0 0 GICv3 146 Level fdb60f00.iommu, rga3_core0
34: 0 0 0 0 0 0 0 0 GICv3 147 Level fdb70f00.iommu, rga3_core1
35: 0 0 0 0 0 0 0 0 GICv3 148 Level rga2
36: 0 0 0 0 0 0 0 0 GICv3 161 Level fdb90000.jpegd
37: 0 0 0 0 0 0 0 0 GICv3 162 Level fdb90480.iommu
38: 0 0 0 0 0 0 0 0 GICv3 154 Level fdba0000.jpege-core
39: 0 0 0 0 0 0 0 0 GICv3 153 Level fdba0800.iommu
40: 0 0 0 0 0 0 0 0 GICv3 156 Level fdba4000.jpege-core
41: 0 0 0 0 0 0 0 0 GICv3 155 Level fdba4800.iommu
42: 0 0 0 0 0 0 0 0 GICv3 158 Level fdba8000.jpege-core
43: 0 0 0 0 0 0 0 0 GICv3 157 Level fdba8800.iommu
44: 0 0 0 0 0 0 0 0 GICv3 160 Level fdbac000.jpege-core
45: 0 0 0 0 0 0 0 0 GICv3 159 Level fdbac800.iommu
46: 0 0 0 0 0 0 0 0 GICv3 149 Level fdbb0800.iommu, fdbb0000.iep
47: 0 0 0 0 0 0 0 0 GICv3 133 Level fdbd0000.rkvenc-core
48: 0 0 0 0 0 0 0 0 GICv3 131 Level fdbdf000.iommu
49: 0 0 0 0 0 0 0 0 GICv3 132 Level fdbdf000.iommu
50: 0 0 0 0 0 0 0 0 GICv3 136 Level fdbe0000.rkvenc-core
51: 0 0 0 0 0 0 0 0 GICv3 134 Level fdbef000.iommu
52: 0 0 0 0 0 0 0 0 GICv3 135 Level fdbef000.iommu
53: 0 0 0 0 0 0 0 0 GICv3 127 Level fdc38100.rkvdec-core
54: 0 0 0 0 0 0 0 0 GICv3 128 Level fdc38700.iommu
55: 0 0 0 0 0 0 0 0 GICv3 129 Level fdc48100.rkvdec-core
56: 0 0 0 0 0 0 0 0 GICv3 130 Level fdc48700.iommu
57: 28446 0 0 0 0 0 0 0 GICv3 188 Level fdd97e00.iommu, fdd90000.vop
59: 0 0 0 0 0 0 0 0 GICv3 193 Level fde50000.dp
60: 0 0 0 0 0 0 0 0 GICv3 201 Level fde80000.hdmi
61: 0 0 0 0 0 0 0 0 GICv3 202 Level dw-hdmi-qp-cec
62: 0 0 0 0 0 0 0 0 GICv3 203 Level fde80000.hdmi
63: 645 0 0 0 0 0 129 0 GICv3 204 Level fde80000.hdmi
64: 0 0 0 0 0 0 0 0 GICv3 392 Level dw-hdmi-qp-hpd
65: 0 0 0 0 0 0 0 0 GICv3 285 Level pcie-sys
70: 1 0 0 0 0 0 0 0 GICv3 238 Level fe2b0000.spi
71: 32762 0 0 0 0 0 0 0 GICv3 235 Level dw-mci
72: 86 0 0 0 0 0 0 0 GICv3 236 Level dw-mci
73: 11 0 0 0 0 0 0 0 GICv3 237 Level mmc1
76: 20 0 0 0 0 0 0 0 GICv3 118 Level fea10000.dma-controller
77: 0 0 0 0 0 0 0 0 GICv3 119 Level fea10000.dma-controller
78: 0 0 0 0 0 0 0 0 GICv3 120 Level fea30000.dma-controller
79: 0 0 0 0 0 0 0 0 GICv3 121 Level fea30000.dma-controller
80: 63 0 0 0 0 0 0 0 GICv3 350 Level fea90000.i2c
81: 167 0 0 0 0 0 0 0 GICv3 353 Level feac0000.i2c
82: 109067 0 0 0 0 0 0 0 GICv3 360 Level feb20000.spi
85: 0 0 0 0 0 0 0 0 GICv3 429 Level rockchip_thermal
86: 3 0 0 0 0 0 0 0 GICv3 430 Level fec10000.saradc
87: 33 0 0 0 0 0 0 0 GICv3 355 Level fec80000.i2c
88: 412 0 0 0 398 0 0 0 GICv3 356 Level fec90000.i2c
89: 2 0 0 0 0 0 18 0 GICv3 122 Level fed10000.dma-controller
90: 0 0 0 0 0 0 0 0 GICv3 123 Level fed10000.dma-controller
96: 0 0 0 0 0 0 0 0 GICv3 426 Level rockchip_usb2phy
99: 0 0 0 0 0 0 0 0 GICv3 205 Level fdea0000.hdmi
100: 0 0 0 0 0 0 0 0 GICv3 206 Level dw-hdmi-qp-cec
101: 0 0 0 0 0 0 0 0 GICv3 207 Level fdea0000.hdmi
102: 0 0 0 0 0 0 0 0 GICv3 208 Level fdea0000.hdmi
103: 0 0 0 0 0 0 0 0 GICv3 393 Level dw-hdmi-qp-hpd
104: 0 0 0 0 0 0 0 0 GICv3 209 Level rk_hdmirx_cec
105: 0 0 0 0 2 0 0 0 GICv3 468 Level rk_hdmirx-hdmi
106: 0 0 0 0 0 0 0 0 GICv3 211 Level rk_hdmirx-dma
107: 1 0 0 0 0 0 0 0 GICv3 295 Level pcie-sys
117: 0 0 0 0 0 0 0 0 GICv3 455 Edge debug-signal
118: 0 0 0 0 0 0 0 0 GICv3 365 Level debug
119: 0 0 0 0 0 0 0 0 GICv3 140 Level av1d-master
120: 0 0 0 0 0 0 0 0 GICv3 139 Level irq_cache
122: 0 0 0 0 0 0 0 0 rockchip_gpio_irq 7 Level rk806
123: 0 0 0 0 0 0 0 0 rk806 0 Edge rk805_pwrkey_fall
124: 0 0 0 0 0 0 0 0 rk806 1 Edge rk805_pwrkey_rise
134: 0 0 0 0 0 0 0 0 ITS-MSI 8 Edge PCIe PME
135: 0 16 0 0 0 0 0 0 ITS-MSI 524288 Edge nvme0q0
136: 0 0 0 0 0 0 0 0 rk806 7 Level rk806_vb_low
138: 0 0 0 0 0 0 0 0 GICv3 254 Level xhci-hcd:usb5
139: 0 0 0 0 0 0 0 0 GICv3 253 Level xhci-hcd:usb7
140: 105 0 0 0 0 0 0 0 ITS-MSI 524289 Edge nvme0q1
141: 0 0 4 0 0 0 0 0 ITS-MSI 524290 Edge nvme0q2
142: 0 0 0 111 0 0 0 0 ITS-MSI 524291 Edge nvme0q3
143: 0 0 0 0 16 0 0 0 ITS-MSI 524292 Edge nvme0q4
144: 0 0 0 0 0 0 0 0 ITS-MSI 524293 Edge nvme0q5
145: 0 0 0 0 0 0 4 0 ITS-MSI 524294 Edge nvme0q6
146: 0 0 0 0 0 0 0 49 ITS-MSI 524295 Edge nvme0q7
147: 8 0 0 0 0 0 0 0 rockchip_gpio_irq 12 Level fsc_interrupt_int_n
148: 0 0 0 0 0 0 0 0 rockchip_gpio_irq 8 Level hym8563
149: 0 0 0 0 0 0 0 0 rockchip_gpio_irq 22 Edge rk_hdmirx-5v
150: 0 0 0 0 0 0 0 0 rockchip_gpio_irq 21 Edge bt_default_wake_host_irq
151: 0 0 0 0 0 0 0 0 rockchip_gpio_irq 29 Level headset_input
161: 0 0 0 0 0 0 0 0 ITS-MSI 570425352 Edge PCIe PME
162: 0 0 0 4531 0 0 0 0 ITS-MSI 570949632 Edge enP4p65s0-0
163: 0 0 0 0 0 0 0 0 ITS-MSI 570949633 Edge enP4p65s0-1
164: 0 0 0 0 0 0 0 0 ITS-MSI 570949634 Edge enP4p65s0-2
165: 0 0 0 0 0 0 0 0 ITS-MSI 570949635 Edge enP4p65s0-3
166: 0 0 0 0 0 0 0 0 ITS-MSI 570949636 Edge enP4p65s0-4
167: 0 0 0 0 0 0 0 0 ITS-MSI 570949637 Edge enP4p65s0-5
168: 0 0 0 0 0 0 0 0 ITS-MSI 570949638 Edge enP4p65s0-6
169: 0 0 0 0 0 0 0 0 ITS-MSI 570949639 Edge enP4p65s0-7
170: 0 0 0 0 0 0 0 0 ITS-MSI 570949640 Edge enP4p65s0-8
171: 0 0 0 0 0 0 0 0 ITS-MSI 570949641 Edge enP4p65s0-9
172: 0 0 0 0 0 0 0 0 ITS-MSI 570949642 Edge enP4p65s0-10
173: 0 0 0 0 0 0 0 0 ITS-MSI 570949643 Edge enP4p65s0-11
174: 0 0 0 0 0 0 0 0 ITS-MSI 570949644 Edge enP4p65s0-12
175: 0 0 0 0 0 0 0 0 ITS-MSI 570949645 Edge enP4p65s0-13
176: 0 0 0 0 0 0 0 0 ITS-MSI 570949646 Edge enP4p65s0-14
177: 0 0 0 0 0 0 0 0 ITS-MSI 570949647 Edge enP4p65s0-15
178: 0 1082 0 8 0 0 0 0 ITS-MSI 570949648 Edge enP4p65s0-16
179: 0 0 0 0 0 0 0 0 ITS-MSI 570949649 Edge enP4p65s0-17
180: 0 0 0 0 0 57 0 3357 ITS-MSI 570949650 Edge enP4p65s0-18
181: 0 0 0 0 0 0 0 0 ITS-MSI 570949651 Edge enP4p65s0-19
182: 0 0 0 0 0 0 0 0 ITS-MSI 570949652 Edge enP4p65s0-20
183: 1 0 0 0 0 0 0 0 ITS-MSI 570949653 Edge enP4p65s0-21
184: 0 0 0 0 0 0 0 0 ITS-MSI 570949654 Edge enP4p65s0-22
185: 0 0 0 0 0 0 0 0 ITS-MSI 570949655 Edge enP4p65s0-23
186: 0 0 0 0 0 0 0 0 ITS-MSI 570949656 Edge enP4p65s0-24
187: 0 0 0 0 0 0 0 0 ITS-MSI 570949657 Edge enP4p65s0-25
188: 0 0 0 0 0 0 0 0 ITS-MSI 570949658 Edge enP4p65s0-26
189: 0 0 0 0 0 0 0 0 ITS-MSI 570949659 Edge enP4p65s0-27
190: 0 0 0 0 0 0 0 0 ITS-MSI 570949660 Edge enP4p65s0-28
191: 0 0 0 0 0 0 0 0 ITS-MSI 570949661 Edge enP4p65s0-29
192: 0 0 0 0 0 0 0 0 ITS-MSI 570949662 Edge enP4p65s0-30
193: 0 0 0 0 0 0 0 0 ITS-MSI 570949663 Edge enP4p65s0-31
IPI0: 302340 353172 371588 329987 1986 16243 7952 8500 Rescheduling interrupts
IPI1: 207652 133181 190279 172301 146941 141856 288433 276009 Function call interrupts
IPI2: 0 0 0 0 0 0 0 0 CPU stop interrupts
IPI3: 0 0 0 0 0 0 0 0 CPU stop (for crash dump) interrupts
IPI4: 3550 2638 1772 3404 1430 2970 4601 3301 Timer broadcast interrupts
IPI5: 35307 15268 11870 11755 25266 14706 20207 18404 IRQ work interrupts
IPI6: 0 0 0 0 0 0 0 0 CPU wake-up interrupts
Err: 0
Seems fairly balanced for the irqs used now and don’t have to think of static requirements.
The default scheduling is just me musing how badly the ondemand scheduler does in regards to the running Glmark2 than running the performance scheduler.
Its ok if it hits a solid wall of load where the demand threshold is hit on a smaller it swaps out to big.
If you get varying load across cores then that sampling of starting on small at low frequency and ramping up then jumping to big and doing the same.
I was just sat here thinking why can it not start big and ramp down or if there was an implementation and how do you swap from the default CFS scheduler (we are using that?) to either
https://www.kernel.org/doc/html/latest/scheduler/sched-capacity.html
or
https://www.kernel.org/doc/html/latest/scheduler/sched-energy.html
Purely out of interest and wondered if you guys knew?
[edit]
The more I look and think about it, the more I don’t get big.Liitle especially when they are linked into profiles where all 4 cpu’s ramp up and down together, with 2 groups of big that ramp up together.
You can do something really weird and leave profile 0 as is but lower the /ondemand/up_threshold of the x2 big to some silly low value such as 3%.
Then when you run something like glmark2 you get a score near what a performance governor would give but also the cpu’s ramp down when not in use.
Also even though there is practically no load on profile 0 all 4 cpu’s are often ramping up to the top end opp frequencies, which prob makes sense on a phone but as a mains powered SBC it just confuses me.