传统的poll机制通过持续的poll操作,可以提高诸如高IO throughput设备的IO性能,例如NVME设备。但是持续的poll一个设备,会过度的占用CPU,有时可能使IO性能更糟糕,为了解决这种传统poll过度占用CPU的问题,内核引入了hybird poll,与传统的poll在IO提交后就立即poll不同,在hybird poll机制中引入了poll delay。
假定后端设备要用10微秒才能完成一个IO,当我们在用submit_bio提交io后就开始poll,前面几us的poll就是白白浪费cpu了,一个更有效率的办法是在submit_bio提交io后就先sleep几个微秒,然后被唤醒在IO将要完成前的几个微秒开始poll,这样在IO提交后的前期就不需要白白占用着cpu做徒劳的poll了(消耗CPU),这种机制就是hybird poll,其poll cycle被划分为两部分:1,前期执行sleep;2,后期执行传统poll。