一种AIO请求处理的方法、系统及设备技术方案

技术编号:19933783 阅读:37 留言:0更新日期:2018-12-29 04:24
本申请公开了一种AIO请求处理的方法,包括:接收用户输入的AIO请求;判断该AIO请求与底层驱动是否兼容;若是,则根据该AIO请求构建SCSI请求,并将该SCSI请求加入请求队列;根据该请求队列中的SCSI请求构造SCSI命令;将该SCSI命令发送至底层驱动,以使底层驱动执行该SCSI命令完成对AIO请求的处理。本申请所提供的技术方案,省略了现有技术中通用块层对AIO进行合并和排序并提交给专门的处理线程进行下发的过程,避免了线程切换和调度算法的开销,降低了CPU占用率,并降低了AIO请求的处理延迟。本申请同时还提供了一种AIO请求处理的系统、设备及计算机可读存储介质,具有上述有益效果。

【技术实现步骤摘要】
一种AIO请求处理的方法、系统及设备
本申请涉及AIO请求处理领域,特别涉及一种AIO请求处理的方法、系统、设备及计算机可读存储介质。
技术介绍
目前,在linux系统中,针对于用户提交的异步非阻塞IO请求(AsynchronousInput/Output,AIO),能够通过在内核构造阻塞式IO请求(BlockInputOutput,BIO)请求异步提交。BIO请求是linux内核中通用块层的一个核心数据结构,它描述了块设备的I/O操作,联系了内存缓冲区与块设备BIO请求是通用块层向底层提交IO请求的一种通用描述,BIO请求的引入,能够统一不同块设备的IO接口。因为需要兼顾各种块设备的兼容性要求,通过通用块层的IO请求有着非常复杂的处理流程。通用块层会使用NOOP,CFQ等多种调度算法对IO进行合并和排序,并将IO提交给专门的处理线程进行下发。这样,就存在线程切换和调度算法的开销,导致CPU占用率大大上升,并加大了IO延迟,针对于某些对于延迟很敏感的操作来说,例如对文件系统元数据的操作,以及流媒体应用等,若再经过通用块层提交IO,则会带来较大的性能损失。因此,如何降低AIO请求的处理本文档来自技高网...

【技术保护点】
1.一种AIO请求处理的方法,其特征在于,包括:接收用户输入的AIO请求;判断所述AIO请求与底层驱动是否兼容;若是,则根据所述AIO请求构建SCSI请求,并将所述SCSI请求加入请求队列;根据所述请求队列中的SCSI请求构造SCSI命令;将所述SCSI命令发送至所述底层驱动,以使所述底层驱动执行所述SCSI命令完成对所述AIO请求的处理。

【技术特征摘要】
1.一种AIO请求处理的方法,其特征在于,包括:接收用户输入的AIO请求;判断所述AIO请求与底层驱动是否兼容;若是,则根据所述AIO请求构建SCSI请求,并将所述SCSI请求加入请求队列;根据所述请求队列中的SCSI请求构造SCSI命令;将所述SCSI命令发送至所述底层驱动,以使所述底层驱动执行所述SCSI命令完成对所述AIO请求的处理。2.根据权利要求1所述的方法,其特征在于,在将所述SCSI命令发送至底层驱动之后,还包括:判断所述底层驱动对所述AIO请求的处理是否出现错误;若是,则获取错误类型,并执行所述错误类型对应的修复策略。3.根据权利要求2所述的方法,其特征在于,在执行所述错误类型对应的修复策略之后,还包括:记录所述错误类型及所述修复策略的执行时间,并输出至指定位置。4.根据权利要求1所述的方法,其特征在于,当所述AIO请求与底层驱动不兼容时,在将所述SCSI命令发送至底层驱动之前,还包括:在AIO内核接口中构建块设备的BIO请求,并将所述BIO请求加入BIO请求队列;根据所述BIO请求队列中的BIO请求构造SCSI命令。5.一种AIO请求处理的系统,其特征在于,包括:接收模块,用于接收用户输入的AIO请求;第一判断模块,用于判断所述AIO请求与底层驱动是否兼容;第一请求构建模块,用于当所述AIO请求与所述底层驱动兼容时,根据所述AIO请求构建SCSI请求,并将所述SCSI请求加入请求队列;第...

【专利技术属性】
技术研发人员:陈思聪
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1