一种IO请求处理方法及系统技术方案

技术编号:31014927 阅读:20 留言:0更新日期:2021-11-30 02:54
本申请公开了一种IO请求处理方法,包括Virtio设备将Block层下发的IO请求存储至发送队列;控制端从所述发送队列获取所述IO请求,对所述IO请求进行处理获得IO处理结果,并将所述IO处理结果存储至完成队列;所述Virtio设备从所述完成队列获取所述IO处理结果,并将所述IO处理结果反馈至所述Block层;该IO请求处理方法可以在不牺牲时延、不复杂化开发流程的前提下,去掉软中断带来的CPU资源消耗。本申请还公开了一种IO请求处理系统,也具有上述有益效果。果。果。

【技术实现步骤摘要】
一种IO请求处理方法及系统


[0001]本申请涉及计算机
,特别涉及一种IO请求处理方法,还涉及一种IO请求处理系统。

技术介绍

[0002]Virtio是一种I/O(Input/Output,输入/输出)虚拟化框架,符合该框架的设备则称为Virtio设备。通常,在Virtio设备驱动的实现过程中,IO请求流程为:Block层(块层)

Virtio驱动

后端;应答流程为:后端

Virtio驱动

Block层。其中,在应答流程中,后端通过注入软中断的方式通知内核态Virtio设备进行下一步处理,然而,在系统负载很高时,处理软中断要消耗大量CPU资源,并且,还会降低CPU缓存命中率,导致业务线程性能下降。
[0003]为解决上述问题,可以先由后端合并多个IO完成通知,再在IO数量或时延达到一定阈值后,注入一个软中断通知内核态Virtio设备,从原理上看,该方法能够将软中断数量降低到原来的1/N(N即为合并的IO数量),但是,这是以牺牲时延为代价的,业务处理本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种IO请求处理方法,其特征在于,包括:Virtio设备将Block层下发的IO请求存储至发送队列;控制端从所述发送队列获取所述IO请求,对所述IO请求进行处理获得IO处理结果,并将所述IO处理结果存储至完成队列;所述Virtio设备从所述完成队列获取所述IO处理结果,并将所述IO处理结果反馈至所述Block层。2.根据权利要求1所述的IO请求处理方法,其特征在于,所述Virtio设备从所述完成队列获取所述IO处理结果,包括:利用轮询线程对所述完成队列进行轮询,获得所述IO处理结果。3.根据权利要求2所述的IO请求处理方法,其特征在于,所述将所述IO处理结果反馈至所述Block层之前,还包括:根据所述IO处理结果计算所述轮询线程的当前负载;若所述当前负载达到预设负载上限,则开启新的轮询线程;若所述当前负载未达到所述预设负载上限,则执行所述将所述IO处理结果反馈至所述Block层的步骤。4.根据权利要求3所述的IO请求处理方法,其特征在于,所述开启新的轮询线程之前,还包括:统计所述轮询线程的启动数量;判断所述启动数量是否达到预设数量上限,若否,则执行所述开启新的轮询线程的步骤。5.根据权利要求4所述的IO请求处理方法,其特征在于,还包括:若所述启动数量达到所述预设数量上限,则发出告警提示。6.根据权利要求3所述的IO请求处理方法,其特征在于,若所述当前负载未达到所述预设负载上限,则所述执行所述将所述IO处理结果反馈至所述Block层的步骤之前,还包括:判断所述当前负载是否低于预设负载下限;若所述当前负...

【专利技术属性】
技术研发人员:李养兆仇锋利
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1