一种输入输出处理方法和电子设备与流程

文档序号:30059622发布日期:2022-05-17 21:05阅读:126来源:国知局
一种输入输出处理方法和电子设备与流程

1.本技术涉及终端领域,尤其涉及一种输入输出处理方法和电子设备。


背景技术:

2.系统中,电子设备处理经过文件系统和不经过文件系统,以及经过不同文件系统的输入输出(input-output,io)请求的耗时有差异,从而导致对于相同时延要求的io请求而言,电子设备执行上述io请求的响应时间也具有较大差异。
3.在进程同时发起多个相同时延要求的io请求的过程中,响应时间过长的io请求会影响进程的执行状态,甚至,系统会因某一个时延较大的io请求延迟导致用户操作卡顿现象,影响用户体验。


技术实现要素:

4.本技术提供了一种输入输出io处理方法和电子设备。该方法可应用于手机、平板电脑等等具备存储能力的且需要进行频繁的读写操作的电子设备。实施上述方法,电子设备可以根据电子设备处理io请求之前的耗时确定该io请求的处理优先级,从而使得上述耗时长的io请求具有较短的等待时间,进而均衡各个io请求的响应时间。
5.第一方面,本技术提供了一种输入输出io处理方法,应用于电子设备,该方法包括:电子设备检测到第一io业务的到来;确定电子设备处理第一io业务的第一时延;比较第一io业务与第二io业务的第一时延,第二io业务是在等待io处理的io业务,如果第一io业务的第一时延大于第二io业务的第一时延,则电子设备将第一io业务的io处理优先级设置为高于第二io业务的io处理优先级,io处理优先级高的io业务会被优先写入或读出io处理优先级高的io业务的目标存储空间。
6.实施第一方面提供的方法,在检测到应用程序下发的io业务后,电子设备可以确定该io业务在被底层存储设备处理之前的耗时。然后,电子设备可提升上述耗时长的io业务的优先级,使得在传达过程中上述耗时长的io业务可以被优先处理,进而降低该io业务的总的响应时间,均衡各个io请求的响应时间。
7.结合第一方面的一些实施例,在一些实施例中,第一时延包括后端时延,后端时延是指第一io业务被处理成第一目标存储空间可写入或读出的数据的耗时,第一目标存储空间是第一io业务的目标存储空间。
8.实施上述实施例提供的方法,电子设备可以确定该io业务的后端时延,即io业务根据作用的文件系统不同产生的时延。进而,电子设备可根据io业务的后端时延的大小,确定不同io业务的处理优先级。电子设备可提升后端时延长的io业务的处理优先级,进而降低该io业务的等待时间,从而达到均衡各个io请求的响应时间的目的。
9.结合第一方面的一些实施例,在一些实施例中,确定电子设备处理第一io业务的第一时延,具体包括:确定电子设备处理第一io业务的后端时延。
10.结合第一方面的一些实施例,在一些实施例中,确定电子设备处理第一io业务的
后端时延,具体包括:识别第一io业务的类型,类型包括:经过文件系统处理的io业务、不经过文件系统处理的io业务中的一个;利用多个第三io业务的平均后端时延,确定第一io业务的后端时延,第三io业务是指电子设备已经处理过的,与第一io业务类型相同的io业务。
11.实施上述实施例提供的方法,电子设备可根据io业务所作用的文件系统的类型对不同的io业务进行分类。在确定io业务的后端时延的过程中,电子设备可同一类型的其他io业务的后端时延,确定当前io业务的后端时延。
12.结合第一方面的一些实施例,在一些实施例中,经过文件系统处理的io业务包括:经过闪存日志型文件系统jaff的io业务、经过另一种闪存文件系统yaffs的io业务、经过闪存友好型文件系统f2fs的io业务、经过可扩展只读文件系统erofs的io业务,或经过第四代扩展文件系统ext4的io业务中的一个。
13.结合第一方面的一些实施例,在一些实施例中,电子设备中预设有后端时延表,后端时延表用于记录不同类型的io业务的平均后端时延,其特征在于,利用多个第三io业务的平均后端时延,确定第一io业务的后端时延,具体包括:查询后端时延表,确定第一io业务所属的类型的平均后端时延为第一io业务的后端时延,平均后端时延是多个第三io业务的后端时延的平均值。
14.实施上述实施例提供的方法,电子设备可在直接从表中查询与当前io业务相同类型的io业务的平均后端时延,然后将该平均后端时延确定为当前io业务的后端时延。
15.结合第一方面的一些实施例,在一些实施例中,第一时延还包括等待时延,等待时延是指第一io业务被处理成第一目标存储空间可写入或读出的数据之后,第一目标存储空间开始写入或读出数据之前的耗时。
16.实施上述实施例提供的方法,电子设备可根据io业务的后端时延和等待时延,确定电子设备处理该io业务的优先级。这样可以避免在后端时延小的io业务一直处于等待状态,从而引起堵塞的问题。
17.结合第一方面的一些实施例,在一些实施例中,确定电子设备处理第一io业务的第一时延,还包括:确定电子设备处理第一io业务的等待时延。
18.结合第一方面的一些实施例,在一些实施例中,比较第一io业务与第二io业务的第一时延,具体包括:比较第一io业务与第二io业务的总时延,总时延为电子设备处理io业务的后端时延与等待时延的和。
19.结合第一方面的一些实施例,在一些实施例中,电子设备包括调度队列,调度队列是用于缓存io业务的存储空间;第二io业务是在等待io处理的io业务,具体包括:第二io业务是在调度队列中等待io处理的io业务。
20.实施上述实施例提供的方法,按照队列排列在前先被处理的规则,电子设备可根据调度队列中各io业务的排列顺序,依次处理各io业务指示的输入输出操作。先被处理io业务即具有较高的优先级。
21.结合第一方面的一些实施例,在一些实施例中,将第一io业务的io处理优先级设置为高于第二io业务的io处理优先级,具体包括:将第一io业务插入到第二io业务之前,使得第一io业务先于第二io业务被发送到第一io业务的目标存储器。
22.实施上述实施例提供的方法,在将第一io业务插入到第二io业务之前后,第一io业务会先于第二io业务被电子设备处理,即电子设备处理第一io业务的优先级高于第二io
业务。
23.结合第一方面的一些实施例,在一些实施例中,第一io业务与第二io业务的时延要求相同,或时延要求等级相同。
24.第二方面,本技术提供了一种电子设备,该电子设备包括一个或多个处理器和一个或多个存储器;其中,一个或多个存储器与一个或多个处理器耦合,一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,使得电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
25.第三方面,本技术提供一种计算机可读存储介质,包括指令,当上述指令在电子设备上运行时,使得上述电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
26.第四方面,本技术提供一种包含指令的计算机程序产品,当上述计算机程序产品在电子设备上运行时,使得上述电子设备执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
27.可以理解地,上述第二方面提供的电子设备、第三方面提供的计算机存储介质、第四方面提供的计算机程序产品均用于执行本技术所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
28.图1是本技术实施例提供的一种电子设备的软件结构示意图;
29.图2是本技术实施例提供的一种电子设备的硬件结构示意图;
30.图3a-图3b是本技术实施例提供的一组用户界面示意图;
31.图4a-图4c是本技术实施例提供的一组采用不同调度策略的调度示意图;
32.图5是本技术实施例提供的一种电子设备确定io请求的后端时延的流程图;
33.图6是本技术实施例提供的一种电子设备的工作流程图。
具体实施方式
34.本技术以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本技术的限制。
35.电子设备上可运行多个应用程序。应用程序可发起多个进程。进程可根据自身运行的状态发起io请求。响应上述io请求,电子设备的存储设备可执行该io请求指示的输入输出操作。
36.由于不同进程是相互独立的,电子设备可同时接受到多个io请求。一般的,时延要求高的进程发起的io请求的优先级(时延要求优先级)会高于时延要求低的进程发起的io请求。电子设备会先处理优先级高的io请求,而优先级低的io请求则会处于等待状态。
37.对于时延要求优先级相同的多个io请求而言,电子设备则会按照检测到上述io请求的先后顺序,依次执行上述io请求指示的输入输出操作。
38.这里,时延要求优先级相同包括:各io请求的时延要求相等,和各io请求的时延要求所属的等级相同。例如,两个io请求的最长响应时间均为5ms,则上述两个io请求可视为
时延要求相同的io请求。此外,在响应时间为5ms~7ms为一个时延要求等级的情况下,一个io请求的最长响应时间为5ms,另一个io请求的最长响应时间为7ms,则上述两个io请求也可视为时延要求相同的io请求。
39.在时延要求优先级相同的情况下,对于一些io请求而言,该io请求不需要经过文件系统,就可直接传达到存储设备,使该存储设备执行相应地输入输出操作。例如,指示内存(memory)从交换分区(swap)读取数据的io请求。
40.对于另一些io请求而言,该io请求需要经过文件系统的处理,使通过该io请求写入或读取的数据符合该文件系统的格式。
41.例如,在io请求写入或读取的数据以可扩展只读文件系统(extendable read-only file system,erofs)的方式存储时,在写入数据时,erofs需要对被写入的数据进行压缩和/或校验;在读取数据时,erofs需要对被写入的数据进行解和/或校验。例如,在io请求写入或读取的数据以闪存友好型文件系统(flash-friendly file system,f2fs)的方式存储时,在写入数据时,f2fs需要对被写入的数据进行加密;在读取数据时,f2fs需要需要对被写入的数据进行解密。这是由于不同文件系统组织和管理文件系统的形式不同导致的。
42.因此,在时延要求优先级相同的情况下,电子设备处理经过文件系统和不经过文件系统,以及经过不同文件系统的io请求的时间也存在显著的差异,即响应时间存在较大的差异。
43.上述io请求从发起到处理为该io请求的目标存储空间可操作的数据之间的耗时可称为后端时延。一般的,经过复杂文件系统的io请求的后端时延较长,不经过文件系统的io请求的后端时延较短。
44.在电子设备同时检测到多个时延要求优先级相同的io请求的情况下,若按照现有的方法,后端时延大的io请求可能也会具有较长的等待时间。这样,对于时延要求优先级相同的多个io请求而言,电子设备处理这些io请求的时间的波动会较大。例如,一些io请求的后端时延较短,等待时间也较短;一些io请求的后端时延较长,等待时间也较长。
45.为了均衡各个io请求的响应时间,避免io请求的响应时间过长导致阻塞的问题,进而整体的响应质量,本技术实施例提供了一种输入输出处理方法。该方法可应用于手机、平板电脑等具备存储能力的且需要进行频繁的读写操作的电子设备中。在后续实施例的介绍中,上述手机、平板电脑等电子设备简称为电子设备100。
46.不限于手机、平板电脑,电子设备100还可以是桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,pda)、增强现实(augmented reality,ar)设备、虚拟现实(virtual reality,vr)设备、人工智能(artificial intelligence,ai)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备,本技术实施例对该电子设备的具体类型不作特殊限制。
47.实施本技术实施例提供的一种输入输出处理方法,电子设备100可以根据io请求的后端时延的大小,确定该io请求的处理优先级。上述处理优先级是指在时延要求优先级的前提下进一步细分产生的优先级。即,对于时延要求优先级相同的多个io请求而言,电子设备100可根据上述io请求的后端时延,进一步确定电子设备100处理上述io请求的先后顺
序。可选的,电子设备100可以根据io请求的后端时延和调度时延的和的大小,确定该io请求的处理优先级。上述调度时延是指io请求等待存储设备执行该io请求指示的输入输出操作的时延。
48.实施上述方法,电子设备100可以尽可能的均衡各个io请求的响应时间,避免io请求的响应时间过长导致阻塞的问题,进而提升整体的响应质量,优化影响用户体验。
49.下面具体介绍电子设备100如何实施本技术实施例提供的一种输入输出处理方法。
50.首先,图1示例性示出了电子设备100的软件结构。下面结合图1具体介绍电子设备100处理io请求的过程。
51.电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的android系统为例,示例性说明电子设备100的软件结构。
52.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,android系统为四层结构,从上至下分别为:应用层,框架层,安卓运行时(android runtime)和系统库,以及内核层。在一些实施例中,android系统的软件层级结构还包括硬件抽象层(hardware abstract layer,hal)。
53.在本技术实施例中,图1所示的软件结构包括:应用层、内核层和设备层。其中,应用层、内核层为软件分层架构中的两层。设备层用于指示电子设备100的硬件。
54.在图1中,电子设备100的软件结构层仅示出了应用层和内核层,这是由于图1所示的软件结构主要用于说明电子设备响应io请求的过程,因此,该软件结构中的软件分层结构为适应性调整后的电子设备100的软件层级结构。可以理解的,不限于图1所示的应用层、内核层,电子设备100的软件结构还可包括更多的层级关系,本技术实施例对此不作限制。
55.下面具体介绍图1所示的软件结构的各个层级的内容和功能,以及io请求从发起到被响应的流程。
56.应用层可包括一系列应用程序包,例如相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息等应用程序。上述应用程序包括预置在电子设备100中的应用程序,也包括从第三方提供的应用程序。
57.以图1所示的应用程序a为例,应用程序a在启用和运行的过程中,需要进行频繁的读取操作,以获取应用程序a运行所必需的计算机程序代码、系统数据和用户数据。在应用程序a需要进行输入输出操作时,应用程序a可发起输入输出请求(io请求),例如io1、io2和io3。不限于应用程序a,电子设备100还可同时运行多个应用程序。因此,上述多个io请求也可是不同应用程序发起的io请求。
58.上述应用程序a例如相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息等应用程序。
59.应用层之下还可包括应用程序框架层(框架层)。应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
60.窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状
flash file system,jffs)、另一种闪存文件系统(yet another flash file system,yaffs)、网络文件系统(network file system,nfs)等等。
76.参考前述介绍,电子设备处理经过文件系统和不经过文件系统,以及经过不同文件系统的io请求的时间(后端时延)存在显著的差异。
77.因此,电子设备100可根据该io请求作用的文件系统的类型,确定该io请求的后端时延。这一过程可由度量模块完成。如图1所示,内核层可包括度量模块。在检测到应用层发起io请求后,度量模块可根据该io请求的下发路径,确定该io请求的经过了何种文件系统,进行了哪一些数据加工或处理,进而,度量模块确定该io请求的后端时延。
78.可以理解的,图1所述的电子设备100的软件结构为示例性的。本发明实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,度量模块可也分部在各个文件系统中。
79.io调度模块可用于接收应用层下发的io请求,并缓存io请求,即未被及时处理的io请求可在io调度模块等待被处理。在缓存处于等待的io请求的过程中,io调度模块可确定处理上述各个io请求的优先级,包括时延要求优先级,和本技术实施例提出的基于时延要求优先级的处理优先级。
80.io1可视为应用程序a在访问用户数据时的一个io请求。该io请求可经过f2fs类型的文件系统。io2可视为应用程序a在访问系统数据时的一个io请求。该io请求需经过erofs类型的文件系统。io3为无需经过任何文件系统的io请求,例如指示内存(memory)从交换分区(swap)读取数据的io请求。
81.io1的后端时延可记为t1;同样的,io2的后端时延可记为t2;io3后端时延可记为t3。在上述3个io请求中,io3无需经过任何文件系统,因此,其后端时延t3比其他两个后端时延(t1、t2)短。io1经过了f2fs类型的文件系统,其后端时延在t3的基础上,还包括数据加密或解密的耗时,因此,t1比t3长。io2经过了erofs类型的文件系统,其后端时延在t3的基础上,还包括解压耗时和校验耗时,因此,t2也比t3长。
82.对于其他类型的文件系统,应用程序a下发的io请求的后端时延也会因为上述其他类型的文件系统而不同。
83.在io请求到达io调度模块后,io调度模块会根据io请求的优先级(包括时延要求优先级和处理优先级),确定存储设备执行各个io请求指示的输入输出操作的顺序。io请求在io调度层等待被下发的耗时即前述介绍的调度时延。
84.io调度模块的调度策略直接影响各个io请求的调度时延。优先被存储设备处理的io请求的调度时延较短,反之,在io调度模块等待的时间越长,则该io请求的调度时延越长。
85.设备层用于指示电子设备100安装有的硬件。在本技术实施例中,io请求作用的对象为各类存储器,即存储设备,例如ufs(universal flash storage)、emmc(embedded multi media card)等等。在io请求被下发设备层后,存储设备可响应该io请求,执行相应地输入输出操作。存储设备处理io请求,执行该io请求指示的输入输出操作的耗时即为处理时延,记为t0。
86.由于存储设备处理io请求的时间大多数情况下都取决于存储设备的类型,因此,在存储设备相同时,对于一般的io请求而言,t0可视为相同。可以理解的,根据io请求具体
sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
100.i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,sda)和一根串行时钟线(derail clock line,scl)。在一些实施例中,处理器110可以包含多组i2c总线。处理器110可以通过不同的i2c总线接口分别耦合触摸传感器180k,充电器,闪光灯,摄像头193等。例如:处理器110可以通过i2c接口耦合触摸传感器180k,使处理器110与触摸传感器180k通过i2c总线接口通信,实现电子设备100的触摸功能。
101.i2s接口可以用于音频通信。在一些实施例中,处理器110可以包含多组i2s总线。处理器110可以通过i2s总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过i2s接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
102.pcm接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过pcm总线接口耦合。在一些实施例中,音频模块170也可以通过pcm接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述i2s接口和所述pcm接口都可以用于音频通信。
103.uart接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,uart接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过uart接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过uart接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
104.mipi接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。mipi接口包括摄像头串行接口(camera serial interface,csi),显示屏串行接口(display serial interface,dsi)等。在一些实施例中,处理器110和摄像头193通过csi接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过dsi接口通信,实现电子设备100的显示功能。
105.gpio接口可以通过软件配置。gpio接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,gpio接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。gpio接口还可以被配置为i2c接口,i2s接口,uart接口,mipi接口等。
106.usb接口130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。usb接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如ar设备等。
107.可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本技术另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
108.充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
109.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
110.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
111.天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
112.移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
113.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
114.无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
115.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通
信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
116.电子设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
117.显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,电子设备100可以包括1个或n个显示屏194,n为大于1的正整数。
118.电子设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。
119.isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。
120.摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,电子设备100可以包括1个或n个摄像头193,n为大于1的正整数。
121.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
122.视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
123.npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,
例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
124.内部存储器121可以包括一个或多个随机存取存储器(random access memory,ram)和一个或多个非易失性存储器(non-volatile memory,nvm)。
125.随机存取存储器可以包括静态随机存储器(static random-access memory,sram)、动态随机存储器(dynamic random access memory,dram)、同步动态随机存储器(synchronous dynamic random access memory,sdram)、双倍资料率同步动态随机存取存储器(double data rate synchronous dynamic random access memory,ddr sdram,例如第五代ddr sdram一般称为ddr5 sdram)等。非易失性存储器可以包括磁盘存储器件、快闪存储器(flash memory)。
126.快闪存储器按照运作原理划分可以包括nor flash、nand flash、3d nand flash等,按照存储单元电位阶数划分可以包括单阶存储单元(single-level cell,slc)、多阶存储单元(multi-level cell,mlc)、三阶储存单元(triple-level cell,tlc)、四阶储存单元(quad-level cell,qlc)等,按照存储规范划分可以包括通用闪存存储(英文:universal flash storage,ufs)、嵌入式多媒体存储卡(embedded multi media card,emmc)等。
127.随机存取存储器可以由处理器110直接进行读写,可以用于存储操作系统或其他正在运行中的程序的可执行程序(例如机器指令),还可以用于存储用户及应用程序的数据等。
128.非易失性存储器也可以存储可执行程序和存储用户及应用程序的数据等,可以提前加载到随机存取存储器中,用于处理器110直接进行读写。
129.外部存储器接口120可以用于连接外部的非易失性存储器,实现扩展电子设备100的存储能力。外部的非易失性存储器通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部的非易失性存储器中。
130.在本技术实施例中,响应应用层下发的io请求,执行与该io请求匹配的输入输出操作的存储设备包括:内部存储器121、外部存储器接口122连接的外部存储器。
131.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
132.音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
133.扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170a收听音乐,或收听免提通话。
134.受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170b靠近人耳接听语音。
135.麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170c发声,将声音信号输入到麦克风170c。电子设备100可以设置至少一个麦克风170c。在另一些实施例中,电子设备100可以设
置两个麦克风170c,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170c,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
136.耳机接口170d用于连接有线耳机。耳机接口170d可以是usb接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,omtp)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the usa,ctia)标准接口。
137.压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180a可以设置于显示屏194。
138.陀螺仪传感器180b可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180b确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。
139.气压传感器180c用于测量气压。在一些实施例中,电子设备100通过气压传感器180c测得的气压值计算海拔高度,辅助定位和导航。
140.磁传感器180d包括霍尔传感器。电子设备100可以利用磁传感器180d检测翻盖皮套的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
141.加速度传感器180e可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
142.距离传感器180f,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180f测距以实现快速对焦。
143.接近光传感器180g可以包括例如发光二极管(led)和光检测器。电子设备100可利用接近光传感器180g检测附近的物体。在一些实施例中,电子设备100可以利用接近光传感器180g检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。
144.环境光传感器180l用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180l也可用于拍照时自动调节白平衡。环境光传感器180l还可以与接近光传感器180g配合,检测电子设备100是否在口袋里,以防误触。
145.指纹传感器180h用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
146.温度传感器180j用于检测温度。在一些实施例中,电子设备100利用温度传感器180j检测的温度,执行温度处理策略。
147.触摸传感器180k,也称“触控器件”。触摸传感器180k可以设置于显示屏194,由触摸传感器180k与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
148.在本技术实施例中,电子设备100检测作用于手机屏幕的操作,例如点击某一应用程序图标运行该应用程序的操作(参考图3a所示的用户界面),可通过触摸传感器180k完成。
149.骨传导传感器180m可以获取振动信号。在一些实施例中,骨传导传感器180m可以获取人体声部振动骨块的振动信号。骨传导传感器180m也可以接触人体脉搏,接收血压跳动信号。
150.按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
151.马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
152.指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
153.sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口195可以支持nano sim卡,micro sim卡,sim卡等。同一个sim卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。sim卡接口195也可以兼容不同类型的sim卡。sim卡接口195也可以兼容外部存储卡。电子设备100通过sim卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用esim,即:嵌入式sim卡。esim卡可以嵌在电子设备100中,不能和电子设备100分离。
154.图3a-图3b示例性示出了电子设备100上运行应用的用户界面。
155.图3a示出了电子设备100展示已安装应用程序的用户界面。如图3a所示,该用户界面可包括状态栏313、一个或多个应用程序图标312,常用应用程序图标托盘313、页面指示符314等等。
156.其中,状态栏311可包括:移动通信信号(又可称为蜂窝信号)的一个或多个信号强度指示符、高保真无线通信(wireless fidelity,wi-fi)信号的一个或多个信号强度指示符,电池状态指示符、时间指示符等。
157.一个或多个应用程序图标312可包括:设置(setting)、应用市场(app store)、图库(photos)、浏览器(browser)等应用程序的图标。当检测到作用于上述任一图标的用户操作后,电子设备100可运行该图标指示的应用程序。例如,当检测到作用于图库(photos)应用程序的图标的用户操作后,上述操作例如点击操作,电子设备100可运行图库应用程序。
158.常用应用程序图标托盘313中可显示一个或多个应用程序的图标。上述一个或多个应用程序为用户设置的用户经常实用的应用程序,例如相机、通讯录、电话、信息等应用程序。常用应用程序图标托盘313中的应用程序图标在页面切换时保持显示。上述托盘图标是可选的,本技术实施例对此不作限定。页面指示符314可用于指示可用于指示当前显示的页面与其他页面的位置关系。
159.一个或多个应用程序图标312可分布在多个页面,页面指示符314还可以用于指示用户当前浏览的是哪一个页面中的应用程序。用户可以左右滑动其他应用程序图标的区域,来浏览其他页面中的应用程序图标。
160.在一些实施例中,图3a所示的用户界面可以为电子设备100展示应用程序的主页面(home)。可以理解的是,图3a仅仅示例性示出了电子设备100的一个可能的用户界面,不应构成对本技术实施例的限定。
161.响应于作用于在任一应用程序图标的用户操作,电子设备100可运行该图标指示的应用程序。在在运行图库应用程序的过程中,该应用程序可发起多个io请求。上述io请求包括获取该应用程序运行所必需的计算机程序代码、系统数据和用户数据的io请求。
162.图3b示出了电子设备100运行图库应用程序的一个用户界面。如图3b所示,该用户界面包括搜索栏321、一个或多个相册的图标322、菜单栏323等等。
163.搜索栏321可用于搜索图片。例如,用户可在搜索栏321中输入关键字“花”。电子设备100可检测到作用于搜索栏321的用户操作,响应于该操作,电子设备100可在图库存储的所有图片中查找图片内容包括“花”的图片。
164.一个或多个相册的图标322可表示一个或多个存储图像数据的文件夹。如图3b所示,相册包括相机(cmera)、截屏(screenshot)、下载(download)等等。相册图标中显示的图像可以为该相册中的任意一张图片。
165.菜单栏323可包括一个或多个控件,例如照片控件、相册控件、时刻控件。上述控件可为用户提供按不同的排列方式展示图库中存储的图像的功能。例如,当检测到作用于时刻控件上的用户操作后,电子设备100可按照各图像的时间的先后顺序展示图库中的全部图像。
166.在电子设备100运行图库应用程序的过程中,图库应用程序可发起多个io请求。响应于上述多个io请求,图库应用程序可获取图库应用程序的计算机程序代码、系统数据和用户数据。
167.例如,当图库应用程序需要显示图3b所示的用户界面时,图库应用程序可发起一个io请求读取该用户界面的代码,包括页面布局的代码。在显示图3b所示的用户界面时,图库应用程序可发起一个读取控件图标资源的io请求。另外,图库应用程序可发起读取存储设备中存储的图像io请求。这样,图3b所示的用户界面中可显示电子设备100上保存的众多图片、动态图片、视频等图像数据。
168.不同io请求的时延要求可能不同。时延忍耐度低的应用程序发起的io请求的时延要求较高。电子设备100需要尽快地处理这一类io请求。一般的,用户正在直接操作的应用程序(前台应用)具有较低的时延忍耐度。
169.下面,图4a-图4c示例性示出了3种确定电子设备100处理io请求的先后顺序(调度策略)的示意图。
170.在本技术实施例中,io1、io2和io3为时延要求优先级相同的io请求。一般的,对于相同时延要求优先级的io请求,io调度模块会按照上述io请求抵达io调度模块的时间排序,即先到先发。图4a示例性示出了在先到先发的调度模式下,各个io请求的响应时间。
171.io1、io2、io3到达io调度模块的先后顺序依次可以为:io1、io3、io2。根据io1、io3、io2到达io调度模块的先后顺序,io调度模块可依次将上述io请求插入调度队列q。
172.此时,最先达到的io1的调度时延(w1)最短,其次是第二到达的io3(w3)。调度时延最长的为最后为io2(w2)。可以理解的,上述io请求到达的先后顺序为示例性例举。
173.如图4a所示,图中矩形块的长度可对应io请求的等待时长。因此,w1的长度最短;
其次为w3;w2的长度最长。由于对于任意io请求而言,设备处理请求的时间几乎相等,因此,在图4a中,r1、r2、r3均包括t0,且r1、r2、r3中的t0的长度均相等。然后,由于io3不用经过任何文件系统,所以其后端时延t3最短,因此,在图4a中,t3的长度比t1、t2短。其次是t1。后端时延最长的为t2。
174.这时,在io1、io2、io3的响应时间r1、r2、r3中,io2的调度时延最长,且后端时延也是最长,所以io2的响应时间(r2)最长,且明显长于r1、r3。这就使得系统中io平均总时延的波动较较大,容易出现大时延io导致的阻塞的问题。
175.为例解决上述问题,在本技术实施例中,io调度模块不再采用先到先发的调度模式,而是根据每一个io请求的后端时延的长度确定该io请求的处理优先级,从而调整该io请求的调度时延,从而调整该io请求的响应时间。下面结合图4b说明本技术实施例提供的一种输入输出处理方法。
176.在该调度方法中,io调度模块可根据各个io请求的后端时延,对处于等待状态io请求进行排序,确定设备层响应上述io请求的顺序。对于后端时延较大的io请求,io调度层会尽量减少该io请求的调度时延,避免该io请求的总时延过大。
177.具体的,参考图4a所述的示例:io1、io2、io3到达io调度模块的先后顺序依次同样为:io1、io3、io2。
178.首先,io请求在到达io调度模块之前,度量模块可确定各个io请求的后端时延,并将其附加在io请求上。于是,io调度模块可获取各个io请求的后端时延。然后,io调度模块可将后端时间较大的io请求插入到后端时间较短的io请求前。
179.当io1到达时,io调度模块将该io请求插入io调度队列q。当io3到达时,io调度模块确认io3的后端时延(t3)比io1的后端时延(t1)短,此时,io调度模块可将io3安排在io1的后面。当io2到达时,io调度模块确认io2的后端时延(t2)比io1和io3的后端时延(t1、t3)均长,此时,io调度模块需要尽量减少io2的调度时延,进而避免io2的响应时间过大。因此,io调度模块会将io2插入到io1的前面(也是io3的前面)。
180.最后,调度队列q中各个io请求的位置依次为:io2、io1、io3。此时,在这3个io请求中,io2是最先被下发的,因此,io2的调度时延(w2

)最短。其次为io1。该io请求的调度时延为w1

。最后是io3。io3的调度时延为w3


181.这样,io调度模块可降低后端时延较长的io请求的调度时延,进而降低该io请求的响应时间。对于图4a和图4b可以看出:以io2为例,io2作为最后达到的后端时延最长的io请求,在图4a所示的调度策略中,io2的响应时间r2远长于其他两个io请求的响应时间(r1,r3);而在图4b所示的调度策略中,io2的响应时间r2

虽然仍然比其他两个io请求的响应时间(r1

,r3

)长,但相比于r2,r2

更短。
182.对比图4a和图4b,图4b所示的调度方法可以使各io请求的实际响应时间相对于平均响应时间的波动较小,即均衡各io请求的响应时间,从而避免某一io请求的响应时间明显大于其他io请求而导致的阻塞问题,进而提升整体上响应io请求的服务质量。
183.进一步的,为了避免后端时延较小的io请求长时间处于等待状态,在图4b的基础上,io调度模块还可基于后端时延和调度时延确定各个io请求的处理优先级。下面结合图4c说明上述基于后端时延和调度时延的调度策略。
184.如图4c所示,在io1、io2、io3等待下发的某一时刻,io调度模块可接收到一个新的
………………………………
m000
……0198.在其他实施例中,后端时延表还可包括更多或更少的属性,本技术实施例对此不做限制。
199.图5示例性示出了电子设备100的度量模块确定io请求的后端时延的流程图。
200.s101:初始化后端时延表。
201.在电子设备100进入工作状态后,度量模块中可初始化后端时延表。在本技术实施例中,在每次启动电子设备100时,度量模块可将平均时延、测试时延全部设置为默认值。上述默认值可以为空值、0等等,本技术实施例对此不作限制。
202.s102:根据后端时延表确定io请求的后端时延。
203.度量模块可检测应用层是否下发了io请求。在检测到io请求后,度量模块可查询后端时延表,并根据后端时延表确定该io请求的后端时延。
204.首先,度量模块可识别上述io请求所述的文件系统的类型,即io请求的类型,例如经过f2fs的io请求,经过erofs的io请求等等。然后,度量模块可根据该io请求的类型,确定该io请求的后端时延。
205.首先,度量模块可判断后端时延表是否校准(s103)。具体的,在确定io请求的类型后,度量模块可在后端时延表中定位该类型的io请求,并获取该类型的io请求的校准位数据,确定上述类型的io请求的后端时延是否校准,进而确定该io请求是否有可直接使用的后端时延。
206.s104:若校准位指示后端时延未校准,则获取默认的后端时延。
207.在确定上述io请求的校准位数据后,度量模块可根据该数据判断后端时延是否校准。例如,当上述校准位数据为0时,度量模块可确定上述类型的io请求的后端时延未校准,即上述类型的io请求无直接可使用的后端时延。反之,当上述校准位数据为1时,度量模块可确定上述类型的io请求的后端时延已校准,即上述类型的io请求有直接可使用的后端时延。
208.当校准位指示上述io请求无可直接使用的后端时延时,度量模块可获取默认的后端时延,例如表1中平均时延的默认值(0或其他默认值等等)。默认的后端时延是开发人员预设的。然后,度量模块可将上述默认的后端时延传回io调度模块。io调度模块依据上述默认的后端时延确定该io请求的处理优先级。
209.s105:计算上述io请求的后端时延,并将计算结果更新到后端时延表。
210.在度量模块将上述默认的后端时延传回io调度模块的同时,度量模块可测量该io请求的后端时延,并将上述测量的后端时延记录到上述io请求所属的io类型对应的测量时延中。
211.s106:统计此类io的后端时延n次,并将n次平均值更新到后端时延表,标记此表已校准。
212.进一步的,度量模块可统计n次该类型的io请求的测量时延,进而确定该类型的io请求的平均时延。在确定平均时延后,度量模块可将该类型的io请求的校准位设置为已校准。
213.这样,当度量模块再次检测到此类型的io请求时,上述校准位可指示度量模块直
接获取平均时延中数据作为该io请求的后端时延。
214.s107:若校准位指示后端时延未校准,则从后端时延表中获取此io的后端时延。
215.当校准位指示上述io请求有可直接使用的后端时延时,度量模块可获取上述io请求所属的io类型的平均时延。该平均时延即为上述io请求的后端时延。
216.对io调度模块来说,在接收到io请求后,io调度模块可直接查询后端时延表,进而获取上述io请求的后端时延。具体的,若该io请求对应的类型的后端时延已校准,则io调度模块可直接获取该类型io请求的平均时延作为该io请求的后端时延;反之,若该io请求对应的类型的后端时延未校准,度量模块可计算该io请求的后端时延。在确定io请求的后端时延后,io调度模块可按照图4b或图4c所示的调度策略,安排各个io请求的下发顺序。
217.在其他实施例中,在确定io请求的后端时延后,度量模块可在该io请求中标记该后端时延。在io调度模块接收到上述io请求后,io调度模块可直接从标记位获取该io请求的后端时延。然后,io调度模块可按照图4b或图4c所示的调度策略,确定各个io请求的处理优先级。
218.下面具体介绍io调度模块。图6示例性示出了电子设备100的io调度模块的工作流程。
219.结合图1所示的软硬件架构,应用层的应用程序在发起一个io请求后,该io请求会一层一层的下发,经过内核层,最终作用于存储设备。响应于该io请求,存储设备可执行相应的输入输出操作。上述存储设备包括易失性存储设备(random access memory,ram)和非易失性存储设备(non-volatile memory,nvm)。
220.内核层包括io调度模块。io调度模块可接收应用层下发的io请求,并确定io请求的下发顺序。具体的,io调度模块中预设有调度队列q。在io请求达到io调度模块后,io调度模块可根据调度策略将该io请求插入到调度队列q中。然后,io调度模块可依次将调度队列q中的io请求下发到设备层的存储设备,进而执行该io请求的输入输出操作。
221.s201:识别io请求的类型。
222.参考前述实施例的介绍,根据文件系统的区别,作用于不同类型的文件系统的io请求的类型不同。例如,io调度模块可识别作用于f2fs的io请求,或作用于erofs的请求等等。
223.因此,在接收到应用层下发的io请求后,io调度模块可识别该io请求的类型,即识别该io请求时经过何种文件系统的io请求。具体的,电子设备100可根据该io请求的目标存储空间所属的文件系统,确定该io请求使作用于何种文件系统的io请求。在其他实施例中,io请求可增加指示io请求所属的文件系统类型的字段。识别该字段中记录的数据,io调度模块也可识别该io请求的类型。
224.s202:从后端时延表中获取该io请求的后端时延。
225.在识别io请求所属的文件系统的类型后,io调度模块可向度量模块获取该类型的io请求的后端时延。在接收到上述请求后,度量模块根据io调度模块发送的io类型,在后端时延调度表中查询该io类型的平均时延。
226.在查询的过程中,若该io类型对应的校准位指示该类型的io的后端时延已校准,则度量模块可确定该io类型对应的平均时延即为该类型io请求的后端时延。若该io类型对应的校准位指示该类型的io的后端时延未校准,则度量模块可确定该io类型的后端时延为
默认的后端时延。于是,无论是校准的平均时延还是默认的后盾时延,io调度模块可确定上述io请求的后端时延。
227.以图4b或图4c中的io1为例,io1为作用于f2fs的io请求(假设f2fs即为表1中的a类)。在接收到io1后,io调度模块可向度量模块发送获取a类io请求的后端时延的请求。响应于该请求,度量模块可查询后端时延表。
228.在定位a类在后端时延表中的位置后,度量模块可获取该类型对应的校准位。校准位为“1”指示a类io请求的后端时延已校准,此时,度量模块可将a类对应的平均时延发送给io调度模块,作为io1的后端时延。校准位为“0”指示a类io请求的后端时延未校准,此时,度量模块可获取默认的后端时延,并将该默认的后端时延发送给io调度模块。这样,io调度模块依据上述默认的后端时延安排该io请求处理优先级。同时,度量模块可测量io1的后端时延,并将该后端时延更新到后端时延表中。
229.s203:根据该io请求的后端时延,确定处理该io请求的优先级。
230.在确定io请求的后端时延,io调度模块可根据预设的调度策略确定该io请求的处理优先级,即在调度队列q中等待下发的位置。
231.这里,以图4b中的io2为例,io调度模块采用的调度策略为图4b所示的基于后端时延的调度策略。在接收到io2之前,调度队列q包括io1、io3在内的多个io请求。在接收到io2,且确认io2的后端时延t2之后,io调度模块可确认io2的后端时延t2长于io1、io3的后端时延,因此,io调度模块可将io2插入到io1之前,即在io1之前下发给设备层存储设备,即电子设备100会优先处理io2的输入输出操作。
232.在图4c所示的基于后端时延和调度时延的调度策略中,在io请求到达io调度模块后,io调度模块可记录该io请求在io调度模块等待的时间(调度时延)。然后,io调度模块可比较新接收到的io请求与调度队列q中的io请求的后端时延与调度时延的和,然后,将该新接收到的io请求插入到调度队列q中。
233.图4c所示的io调度模块处理io4的过程示出了上述方法,这里不再赘述。
234.s204:电子设备100依据io请求的优先级从高到低的顺序,依次执行io请求指示的输入输出操作。
235.在io调度模块确定io请求在调度队列q中的位置后,该io请求的等待电子设备响应的优先级也就确定了。在确定io请求在调度队列q中的位置后,io调度模块可按照调度队列q中记录的顺序将在队列q中等待的io请求下发到设备层对应的存储设备。然后,响应于上述io请求,存储设备可执行相应的输入输出操作。
236.实施本技术实施例提供的一种输入输出处理方法,在处理应用层下发的io请求时,电子设备可以根据各io请求的后端时延的大小,在满足时延要求的情况下,进一步确定时延要求相同的io请求的处理优先级,从而避免后端时延较长的io请求,其调度时延也较长,均衡各io请求的响应时间,优化整体响应质量,提升用户体验。
237.实施本技术实施例提供的一种输入输出处理方法,对于两个时延要求相同或接近的io请求,即同一时延要求优先级的io请求,后端时延比较长的io请求总是比后端时延比较短的io请求更晚的被io处理;在用户感知的层面,前者需要用户更长的等待时间才能完成数据的读取(例如打开图片)或写入(例如保存图片);通过实施本技术提供的方法,与现有技术不同的,后端时延比较长的io请求可以比后端时延比较短的io请求更早的被处理。
在用户感知的层面,前者可以与后者等待差不多的时间完成数据的读取(例如打开图片)或写入(例如保存图片),在一些情况下,前者请求甚至比后者等待的时间更短。
238.在本技术实施例中:
239.应用层应用程序发起的io请求和该io请求指示的输入输出操作可称为io业务。图1中示例性示出的io1、io2、io3可称为第一io业务。
240.以io1为第一io业务为例,在应用程序发起该io请求后,存储设置响应该io请求之间的耗时可称为第一时延。该第一时延可以为后端时延(t1),或后端时延与调度时延的和(t1+w1)。其中,上述调度时延可称为等待时延。
241.在本技术的说明书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本技术中使用的术语“和/或”是指并包含一个或多个所列出项目的任何或所有可能组合。上述实施例中所用,根据上下文,术语“当

时”可以被解释为意思是“如果
…”
或“在

后”或“响应于确定
…”
或“响应于检测到
…”
。类似地,根据上下文,短语“在确定

时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定
…”
或“响应于确定
…”
或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
242.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如dvd)、或者半导体介质(例如固态硬盘)等。
243.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1