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)    收藏  举报

导航