virtio-2-日常汇总
1. virtio绑核
virtqueue_set_affinity() 本质上是通过设置中断亲和性来间接控制处理 virtqueue 事件的线程,其核心作用对象是中断。virtio 设备的每个 virtqueue 通常对应一个独立的中断向量。当设备产生 I/O 事件时,会触发对应中断,内核随后会调度中断处理线程在绑定的 CPU 核心上执行。通过此函数设置的 CPU 掩码,实际上是修改了该中断向量的 irq_desc->affinity 属性,强制中断只能在指定 CPU 上触发和处理。
设置中断CPU亲和性不仅限制了中断可以在哪些CPU上触发,也限制了中断线程能在哪些CPU上执行。
示例:
cpumask_var_t mask; cpumask_clear(mask); for (cpu = 4; cpu < 8; cpu++) cpumask_set_cpu(cpu, mask); virtqueue_set_affinity(vi->rq[i].vq, mask); virtqueue_set_affinity(vi->sq[i].vq, mask);
posted on 2025-12-30 17:53 Hello-World3 阅读(0) 评论(0) 收藏 举报
浙公网安备 33010602011771号