CPU affinity 是一种调度属性(scheduler property),它可以将一个进程"绑定" 到一个或一组CPU上. 在SMP(Symmetric Multi-Processing对称多处理)架构下,Linux调度器(scheduler)会根据CPU affinity的设置让指定的进程运行在"绑定"的CPU上,而不会在别的CPU上运行. Linux调度器同样支持自然CPU亲和性(natural CPU affinity...
that support "Round Robin" interrupt distribution.] smp_affinity_list:是一个alternative方式去设置CPU affinity, 是一个可以handler这个IRQ的CPU list。 spurious:可以获得该irq被处理和未被处理的次数的统计信息。 此外/proc/irq/default_smp_affinity里面记录了对于未激活(non-allocated/activated) 的IRQ的CPU aff...
CPU affinity 是一种调度属性(scheduler property), 它可以将一个进程"绑定" 到一个或一组CPU上. 在SMP(Symmetric Multi-Processing对称多处理)架构下,Linux调度器(scheduler)会根据CPU affinity的设置让指定的进程运行在"绑定"的CPU上,而不会在别的CPU上运行. Linux调度器同样支持自然CPU亲和性(natural CPU affini...
Smp_affinity是Linux内核提供的一个功能,可以将特定的CPU核心绑定到特定的硬件设备或者中断处理程序上。通过这种方式,可以提高系统的性能和效率,尤其是在多核CPU系统中。通过设置smp_affinity,可以将特定的CPU核心与特定的任务相关联,从而避免不必要的上下文切换和缓存失效,提高系统的整体性能。 在Linux中,smp_affinity通...
在SMP(Symmetric Multi-Processing对称多处理)架构下,Linux调度器(scheduler)会根据CPU affinity的设置让指定的进程运行在"绑定"的CPU上,而不会在别的CPU上运行. Linux调度器同样支持自然CPU亲和性(natural CPU affinity): 调度器会试图保持进程在相同的CPU上运行, 这意味着进程通常不会在处理器之间频繁迁移,进程迁移...
而/proc/irq/{IRQ}/smp_affinity和/proc/irq/{IRQ}/smp_affinity_list指定了哪些CPU能够关联到一个给定的IRQ源。RPS只是单纯把数据包均衡到不同的cpu,这个时候如果应用程序所在的cpu和软中断处理的cpu不是同一个,此时对cpu cache的影响会很大。目前大多数SMP系统会使用smp_affinity功能,默认不启用RPS。
smp_affinity_list 与不带list的功能类似。但是使用的是十进制进行表示使用个cpu,所以可读性更好些。 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. hex与binary: https://cs.uwaterloo.ca/~brecht/servers/apic/SMP-affinity.txt ...
从上图明显可以看出,对于44、47号这种外设的中断,Linux内核把smp_affinity设置为了FB(11111011),明显避开了CPU2,所以,实际外设中断也不会在CPU2发生,除非我们强行给中断绑核,比如让44号中断绑定到CPU2: 复制 echo 2 >/proc/irq/44/smp_affinity_list ...
而默认情况,一般对应中断的smp_affinity会被设置为ff,即该中断可以被分发到所有核心上。这时候,看上去所有队列中断都可以被分发到任意核心,理论上似乎可以做得比上面指定核心更好。然而实际效果往往不是如此。这取决于硬件和OS的实现,在笔者的经历中,还没有遇到smp_affinity设置为ff后,硬中断负载很均衡的情况。一般...
echo 2 》/proc/irq/44/smp_affinity_list 之后,我们发现44号中断在CPU2可以发生: 但是,系统的timer中断、IPI,由于是Linux系统的运行基石,实际还是要在CPU2上面运行的。这里面最可能给任务带来延迟抖动的,自然是timer tick。 下面我们重点探讨下tick的问题,由于Linux一般情况下,已经配置IDLE状态的NO_HZ tickless,...