知识卡片

让发送方不必等回执就能连续发送,异步通知能大幅提升吞吐量

专业/工作

内容

Xen的设备通信一开始如果采用同步通知(类似普通函数调用),前端发一个请求后必须干等后端处理完、等到自己被重新调度才能发下一个,这意味着单核环境下几乎是逐个请求排队等待,非常低效。改成事件通道的异步通知后,前端在自己被调度到的那段时间里可以一口气发出尽可能多的请求,完全不必等每一个都有回执才发下一个,后端被调度时再一次性批量处理并回复,两边各自忙自己的,中间不再互相阻塞。这提示一个判断”两个组件之间的交互是否值得改成异步”的信号:如果发送方大部分时间都在”等对方处理完”而不是在做有意义的工作,这种同步等待往往就是可以被消除的纯浪费。

参考来源

《架构之美》第7章《Xen和虚拟化之美》