IO请求的调度方法、装置、存储介质及电子设备制造方法及图纸

技术编号:26065127 阅读:22 留言:0更新日期:2020-10-28 16:37
本申请实施例公开了一种IO请求的调度方法、装置、存储介质及电子设备,其中,本申请实施例检测是否有空闲的第一类通道;若有空闲的第一类通道,则检测第一队列中是否有待分配的IO请求,第一类线程为执行用户交互事件中相关任务的线程;当第一队列中有待分配的IO请求时,将第一队列中的IO请求分配至第一类通道;当没有空闲的第一类通道或第一队列中没有待分配的IO请求时,将第二队列中的IO请求分配至第二类通道。基于此,不仅为执行用户交互事件中相关任务的第一类线程提供更多的通道数,而且会优先派发第一类线程,使得这类线程能够更快地获取到IO资源,从整体上提高存储器通道的分配效率,减少用户交互场景下的卡顿现象。

【技术实现步骤摘要】
IO请求的调度方法、装置、存储介质及电子设备
本申请涉及电子设备
,具体涉及一种IO请求的调度方法、装置、存储介质及电子设备。
技术介绍
随着电子设备的发展,电子设备如智能手机、平板电脑等,其系统中的存储器件大多可以支持多个物理通道。对于这种多通道存储器来说,常规的IO请求派发机制为:建立一个调度派发队列,按照先后顺序将IO请求加入该调度派发队列,并按照该队列中的顺序依次派发。
技术实现思路
本申请实施例提供一种IO请求的调度方法、装置、存储介质及电子设备,能够提高存储器通道分配效率,减少用户交互场景下的卡顿现象。第一方面,本申请实施例提供一种IO请求的调度方法,包括:检测是否有空闲的第一类通道,其中,根据线程类型的不同将存储器的通道分为至少两种类型的通道;若有空闲的第一类通道,则检测第一队列中是否有待分配的IO请求,其中,所述第一队列中的IO请求为第一类线程发送的IO请求,第一类线程为执行用户交互事件中相关任务的线程;当所述第一队列中有待分配的IO请求时,将所述第一队列中的IO请求分配至空闲的第一类通道;当没有空闲的第一类通道或所述第一队列中没有待分配的IO请求时,将第二队列中的IO请求分配至空闲的第二类通道,其中,所述第二队列中的IO请求为第二类线程发送的IO请求,所述第一类通道的数量大于所述第二类通道的数量。第二方面,本申请实施例还提供一种IO请求的调度装置,包括:第一检测模块,用于检测是否有空闲的第一类通道,其中,根据线程类型的不同将存储器的通道分为至少两种类型的通道;第二检测模块,用于若有空闲的第一类通道,则检测第一队列中是否有待分配的IO请求,其中,所述第一队列中的IO请求为第一类线程发送的IO请求,第一类线程为执行用户交互事件中相关任务的线程;请求分配模块,用于当所述第一队列中有待分配的IO请求时,将所述第一队列中的IO请求分配至空闲的第一类通道;以及,当没有空闲的第一类通道或所述第一队列中没有待分配的IO请求时,将第二队列中的IO请求分配至空闲的第二类通道,其中,所述第二队列中的IO请求为第二类线程发送的IO请求,所述第一类通道的数量大于所述第二类通道的数量。第三方面,本申请实施例还提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的IO请求的调度方法。第四方面,本申请实施例还提供一种电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本申请任一实施例提供的IO请求的调度方法。本申请实施例提供的技术方案,预先根据线程类型的不同将存储器的通道划分为至少两种类型的通道,其中,第一类通道用于第一类线程使用,第二类通道用于第二类线程使用。如果检测到有空闲的第一类通道,则检测第一队列中有待分配的IO请求,如果有,则优先将第一队列中IO请求分配至空闲的第一类通道,反之,如果没有空闲的第一类通道或者第一队列中没有待分配的IO请求,则可以对第二队列中的IO请求进行派发,将其分配至空闲的第二类通道处理,基于此,不仅为执行用户交互事件中相关任务的第一类线程提供更多的通道数,而且会优先派发第一类线程,使得这类线程能够更快地获取到IO资源,从整体上提高存储器通道的分配效率,减少用户交互场景下的卡顿现象。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的IO请求的调度方法的第一种流程示意图。图2为本申请实施例提供的IO请求的调度方法的第二种流程示意图。图3为本申请实施例提供的IO请求的调度方法的一种应用场景示意图。图4为本申请实施例提供的IO请求的调度装置的结构示意图。图5为本申请实施例提供的电子设备的第一种结构示意图。图6为本申请实施例提供的电子设备的第二种结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请的保护范围。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。本申请实施例提供一种IO请求的调度方法,该IO请求的调度方法的执行主体可以是本申请实施例提供的IO请求的调度装置,或者集成了该IO请求的调度装置的电子设备,其中该IO请求的调度装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑、或者台式电脑等设备。请参阅图1,图1为本申请实施例提供的IO请求的调度方法的第一种流程示意图。本申请实施例提供的IO请求的调度方法的具体流程可以如下:在101中,检测是否有空闲的第一类通道,其中,根据线程类型的不同将存储器的通道分为至少两种类型的通道。本申请实施例的方案可以应用于至少有三个以上IO通道的存储器的电子设备。例如,UFS存储器(UniversalFlashStorage,通用闪存存储)。下文以UFS存储器为例对本申请的实施例进行说明。UFS存储设备可以支持32个普通IO通道。相关技术中,电子设备对IO请求的调度策略一般为,从一个队列进行派发,按先到先派发的原则,依次分配IO请求至IO通道。但是,这种单一的调度策略容易出现交互场景的卡顿。比如后台应用在进行下载,这时后台的IO请求可能占满了UFS所有IO通道,如果这时一些与用户交互的线程,如微信线程的IO请求可能需要等待,从而导致了用户可感知的卡顿。本申请为了解决这一问题,将线程划分为多种类型的线程。为了避免交互场景下出现卡顿,就要识别出那些与用户体验相关线程,优先为这些线程分配IO资源。基于此,将电子设备的存储器的全部IO通道划分为至少两种类别的通道:第一类通道专为与用户体验相关的线程所使用,第二类通道专为除与用户体验相关的线程以外的其他线程所使用。其中,为了保证与用户体验相关的线程有足够的IO资源,第一类通道的数量大于第二类通道的数量。比如,第一类通道为22个,第二类通道为10个。此外,本申请实施例,对于每一类型的线程设置一个队列。例如,将与用户体验相关的线程发送的IO请求都添加至第一队列,将除与用户体验相关的线程以外的其他线程发送的IO请求都添加至第二队列。本申请实施例中,电子设备的操作系统可以是本文档来自技高网...

【技术保护点】
1.一种IO请求的调度方法,其特征在于,包括:/n检测是否有空闲的第一类通道,其中,根据线程类型的不同将存储器的通道分为至少两种类型的通道;/n若有空闲的第一类通道,则检测第一队列中是否有待分配的IO请求,其中,所述第一队列中的IO请求为第一类线程发送的IO请求,所述第一类线程为执行用户交互事件中相关任务的线程;/n当所述第一队列中有待分配的IO请求时,将所述第一队列中的IO请求分配至空闲的第一类通道;/n当没有空闲的第一类通道或所述第一队列中没有待分配的IO请求时,将第二队列中的IO请求分配至空闲的第二类通道,其中,所述第二队列中的IO请求为第二类线程发送的IO请求,所述第一类通道的数量大于所述第二类通道的数量。/n

【技术特征摘要】
1.一种IO请求的调度方法,其特征在于,包括:
检测是否有空闲的第一类通道,其中,根据线程类型的不同将存储器的通道分为至少两种类型的通道;
若有空闲的第一类通道,则检测第一队列中是否有待分配的IO请求,其中,所述第一队列中的IO请求为第一类线程发送的IO请求,所述第一类线程为执行用户交互事件中相关任务的线程;
当所述第一队列中有待分配的IO请求时,将所述第一队列中的IO请求分配至空闲的第一类通道;
当没有空闲的第一类通道或所述第一队列中没有待分配的IO请求时,将第二队列中的IO请求分配至空闲的第二类通道,其中,所述第二队列中的IO请求为第二类线程发送的IO请求,所述第一类通道的数量大于所述第二类通道的数量。


2.如权利要求1所述的IO请求的调度方法,其特征在于,所述存储器还包括第三类通道;所述将第二队列中的IO请求分配至空闲的第二类通道之前,还包括:
当没有空闲的第一类通道或所述第一队列中没有待分配的IO请求时,检测是否有空闲的第二类通道;
若有空闲的第二类通道,则检测第二队列中是否有待分配的IO请求;
当所述第二队列中有待分配的IO请求时,执行所述将第二队列中的IO请求分配至空闲的第二类通道;
当没有空闲的第二类通道或所述第二队列中没有待分配的IO请求时,检测是否有空闲的第三类通道,所述第二类通道的数量大于所述第三类通道的数量;
若有空闲的第三类通道,则将第三队列中的IO请求分配至空闲的第三类通道,其中,所述第三队列中的IO请求为第三类线程发送的IO请求。


3.如权利要求1或2所述的IO请求的调度方法,其特征在于,所述将所述第一队列中的IO请求分配至空闲的第一类通道,包括:
将所述第一队列中创建时间最早的IO请求分配至空闲的第一类通道,并返回执行检测是否有空闲的第一类通道。


4.如权利要求1或2所述的IO请求的调度方法,其特征在于,所述将所述第一队列中的IO请求分配至空闲的第一类通道,包括:
确定空闲的第一类通道的数量;
将所述第一队列中创建时间最早的所述数量的IO请求依次分配至空闲的第一类通道。


5.如权利要求2所述的IO请求的调度方法,其特征在于,还包括:
当接收到线程发送的IO请求时,获取所述IO请求携带的标签,并根据所述标签确定所述线程的目标类型;
将所述IO请求添加至与所述目标类型对应的请...

【专利技术属性】
技术研发人员:周华材张诗明郭健
申请(专利权)人:OPPO广东移动通信有限公司
类型:发明
国别省市:广东;44

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

1