一种控制存储设备读写的方法及装置与流程

文档序号:15849872发布日期:2018-11-07 09:41阅读:123来源:国知局
一种控制存储设备读写的方法及装置与流程

本发明涉及计算机技术领域,尤其涉及的是一种控制存储设备读写的方法及装置。

背景技术

目前在通信设备的使用过程中,设备的反应速度及性能变得越来越重要,在操作过程中要求设备快速响应,其中,磁盘的读写(磁盘i/o)性能是影响设备响应速度的重要方面。

磁盘读写存在一定的带宽,当多个进程都需要进行磁盘读写时,各个进程之间存在带宽的竞争。相关技术中,各进程进行磁盘读写采用的是公平调度技术,这样就会导致大量进程同时进行磁盘读写时,用户关心的进程由于磁盘读写带宽资源不足而出现卡顿,影响用户体验。另一方面,随着磁盘读写次数的增加,磁盘会老化,磁盘坏区会增加,从而导致磁盘读写效率的下降,降低用户体验。



技术实现要素:

本发明实施例所要解决的技术问题是提供一种控制存储设备读写的方法及装置,能够合理分配多进程读写存储设备时的磁盘读写带宽,提升人机交互应用的响应速度。

本发明实施例提供一种控制存储设备读写的方法,包括:

监控各个进程读写存储设备时的磁盘读写带宽;

当其他进程与人机交互进程竞争磁盘读写带宽时,动态调整各个进程所占的磁盘读写带宽,保证所述人机交互进程的磁盘读写带宽。

本发明实施例提供一种控制存储设备读写的装置,包括:

监控模块,用于监控各个进程读写存储设备时的磁盘读写带宽;

带宽调整模块,用于当其他进程与人机交互进程竞争磁盘读写带宽时,动态调整各个进程所占的磁盘读写带宽,保证所述人机交互进程的磁盘读写带宽。

本发明实施例提供一种控制存储设备读写的装置,包括:

存储器、处理器及存储在所述存储器上并可在所述处理器上运行的控制存储设备读写的程序,所述控制存储设备读写的程序被所述处理器执行时实现上述控制存储设备读写的方法的步骤。

本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有控制存储设备读写的程序,所述控制存储设备读写的程序被处理器执行时实现上述控制存储设备读写的方法的步骤。

与相关技术相比,本发明实施例提供的一种控制存储设备读写的方法及装置,通过监控各个进程读写存储设备时的磁盘读写带宽;当其他进程与人机交互进程竞争磁盘读写带宽时,动态调整各个进程所占的磁盘读写带宽,保证所述人机交互进程的磁盘读写带宽。本文的技术方案能够合理分配多进程读写存储设备时的磁盘读写带宽,提升人机交互应用的响应速度。

附图说明

图1为本发明实施例1的一种控制存储设备读写的方法流程图;

图2为本发明实施例2的一种控制存储设备读写的装置示意图;

图3为本发明示例1中一种控制存储设备读写的系统示意图;

图4为本发明示例2中一种控制存储设备读写的方法流程图;

图5为本发明示例2中利用带宽限制组控制带宽分配的显示界面示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

实施例1

如图1所示,本发明实施例提供了一种控制存储设备读写的方法,包括:

步骤s110,监控各个进程读写存储设备时的磁盘读写带宽;

步骤s120,当其他进程与人机交互进程竞争磁盘读写带宽时,动态调整各个进程所占的磁盘读写带宽,保证所述人机交互进程的磁盘读写带宽;

在一种实施方式中,所述监控各个进程读写存储设备时的磁盘读写带宽,包括:

检测人机交互进程的磁盘读写速率是否达到该进程的最大磁盘读写速率;和/或

检测后台进程中是否存在磁盘读写速率异常升高或周期性升高的进程;和/或

检测各个进程读写所述存储设备时占用的磁盘带宽和是否达到带宽和阈值。

在一种实施方式中,所述保证所述人机交互进程的磁盘读写带宽,包括:

当人机交互进程的磁盘读写速率未达到该进程的最大磁盘读写速率时,增加所述人机交互进程使用存储设备的时间片,使所述人机交互进程的磁盘读写速率达到或接近该进程的最大磁盘读写速率;

其中,每一个进程在分配给该进程的时间片内将其读写请求发送给所述存储设备,在分配的时间片消耗完后挂起读写请求并等待调度。

在一种实施方式中,所述增加所述人机交互进程使用存储设备的时间片,包括:

按预设的时间片步长逐渐增加所述人机交互进程使用存储设备的时间片。

在一种实施方式中,所述动态调整各个进程所占的磁盘读写带宽,包括:

当各个进程的磁盘读写带宽和达到带宽和阈值时,优先为人机交互进程分配磁盘读写带宽,将为人机交互进程分配后剩余的磁盘读写带宽分配给其他进程使用。

比如,如果当前只有进程1(进程1是获得终端人机交互资源的人机交互进程),进程1可能获得的最大磁盘读写带宽为90mb/s。但是,当后台启动一个新的进程(进程2)后,相关技术中,进程1和进程2可能分别获得60mb/s的磁盘读写带宽,进程1和进程2的磁盘读写速率差不多。采用本发明实施例的带宽控制方案后,将对两个进程(进程1和进程2)的磁盘读写时间片进行划分,使得进程1达到或接近该进程的最大磁盘读写带宽(90mb/s),进程2使用进程1剩余的磁盘读写带宽(比如30mb/s)。因此,可以根据多个进程占用的磁盘读写带宽的和作为触发带宽控制的判断依据,当多个进程占用的磁盘读写带宽的和达到一个带宽和阈值(比如120mb/s)时,开始保障人机交互进程的带宽值,限制其他进程分配到的带宽。

在一种实施方式中,所述方法还包括:

当所述人机交互进程对磁盘读写带宽的需求达到高带宽需求阈值时,动态创建带宽限制组,将除所述人机交互进程外的一个或多个进程加入所述带宽限制组中;

其中,所述带宽限制组中的每一个进程的磁盘读写带宽为固定值或者与所述人机交互进程之间具有固定的带宽分配比例;

在一种实施方式中,所述方法还包括:

在所述人机交互进程对磁盘读写带宽的需求低于所述高带宽需求阈值后,删除所述带宽限制组;

其中,具有高带宽需求的进程,可以包括以下进程中的至少一种:应用程序的启动进程、图片加载进程、视频加载进程、应用程序的安装进程、媒体资源下载进程等。

其中,所述带宽限制组由系统自动创建或取消,或者由用户手动创建或取消;

在一种实施方式中,所述方法还包括:

设置带宽和阈值以及各进程的磁盘读写带宽控制方式;

其中,所述磁盘读写带宽控制方式包括自动方式或手动方式;

在一种实施方式中,所述带宽和阈值的数值可以采用以下方式中的任意一种进行动态调整:

定时检测所述存储设备的最大磁盘读写速率,根据所述最大磁盘读写速率的下降情况定期下调所述带宽和阈值的数值;和/或

根据用户动态设置的数值调整带宽和阈值的数值;

其中,随着存储设备读写次数的增加,存储设备会老化,比如坏区增加,从而导致存储设备的磁盘读写效率的下降。而磁盘读写效率的下降也意味着存储设备的磁盘读写总带宽实际上是逐渐下降的,因此,可以将用于根据各进程所占磁盘读写带宽和进行带宽调整的阈值下调,从而更加及时地采取带宽保障措施保障人机交互进程的磁盘读写带宽。

在一种实施方式中,所述方法还包括:显示各进程的磁盘读写带宽占比或数值,以及显示各个进程的磁盘读写带宽控制方式选项。

实施例2

如图2所示,本发明实施例提供了一种控制存储设备读写的装置,包括:

监控模块201,用于监控各个进程读写存储设备时的磁盘读写带宽;

带宽调整模块202,用于当其他进程与人机交互进程竞争磁盘读写带宽时,动态调整各个进程所占的磁盘读写带宽,保证所述人机交互进程的磁盘读写带宽;

在一种实施方式中,监控模块,用于采用以下方式监控各个进程读写存储设备时的磁盘读写带宽:

检测人机交互进程的磁盘读写速率是否达到该进程的最大磁盘读写速率;和/或

检测后台进程中是否存在磁盘读写速率异常升高或周期性升高的进程;和/或

检测各个进程读写所述存储设备时占用的磁盘带宽和是否达到带宽和阈值。

在一种实施方式中,带宽调整模块,用于采用以下方式保证所述人机交互进程的磁盘读写带宽:当人机交互进程的磁盘读写速率未达到该进程的最大磁盘读写速率时,增加所述人机交互进程使用存储设备的时间片,使所述人机交互进程的磁盘读写速率达到或接近该进程的最大磁盘读写速率;其中,每一个进程在分配给该进程的时间片内将其读写请求发送给所述存储设备,在分配的时间片消耗完后挂起读写请求并等待调度。

在一种实施方式中,带宽调整模块,用于采用以下方式增加所述人机交互进程使用存储设备的时间片:按预设的时间片步长逐渐增加所述人机交互进程使用存储设备的时间片。

在一种实施方式中,带宽调整模块,用于采用以下方式动态调整各个进程所占的磁盘读写带宽:当各个进程的磁盘读写带宽和达到带宽和阈值时,优先为人机交互进程分配磁盘读写带宽,将为人机交互进程分配后剩余的磁盘读写带宽分配给其他进程使用。

在一种实施方式中,带宽调整模块,还用于当所述人机交互进程对磁盘读写带宽的需求达到高带宽需求阈值时,动态创建带宽限制组,将除所述人机交互进程外的一个或多个进程加入所述带宽限制组中;其中,所述带宽限制组中的每一个进程的磁盘读写带宽为固定值或者与所述人机交互进程之间具有固定的带宽分配比例;

在一种实施方式中,带宽调整模块,还用于在所述人机交互进程对磁盘读写带宽的需求低于所述高带宽需求阈值后,删除所述带宽限制组;

其中,具有高带宽需求的进程,可以包括以下进程中的至少一种:应用程序的启动进程、图片加载进程、视频加载进程、应用程序的安装进程、媒体资源下载进程等。

其中,所述带宽限制组由系统自动创建或取消,或者由用户手动创建或取消;

在一种实施方式中,所述装置还包括:

设置模块203,用于设置带宽和阈值以及各进程的磁盘读写带宽控制方式;

其中,所述磁盘读写带宽控制方式包括自动方式或手动方式;

在一种实施方式中,所述设置模块203,还用于采用以下方式中的任意一种动态调整带宽和阈值的数值:

定时检测所述存储设备的最大磁盘读写速率,根据所述最大磁盘读写速率的下降情况定期下调所述带宽和阈值的数值;和/或

根据用户动态设置的数值调整带宽和阈值的数值;

其中,随着存储设备读写次数的增加,存储设备会老化,比如坏区增加,从而导致存储设备的磁盘读写效率的下降。而磁盘读写效率的下降也意味着存储设备的磁盘读写总带宽实际上是逐渐下降的,因此,可以将用于根据各进程所占磁盘读写带宽和进行带宽调整的阈值下调,从而更加及时地采取带宽保障措施保障当前获得终端人机交互资源的应用的磁盘读写带宽。

在一种实施方式中,所述装置还包括:

显示模块204,用于显示各进程的磁盘读写带宽占比或数值,以及显示各个进程的磁盘读写带宽控制方式选项。

实施例3

本发明实施例提供了一种控制存储设备读写的装置,包括:

存储器、处理器及存储在所述存储器上并可在所述处理器上运行的控制存储设备读写的程序,所述控制存储设备读写的程序被所述处理器执行时实现上述实施例1中所述的控制存储设备读写的方法的步骤。

实施例4

本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有控制存储设备读写的程序,所述控制存储设备读写的程序被处理器执行时实现上述实施例1中所述的控制存储设备读写的方法的步骤。

下面通过一些示例进一步说明本发明实施例的控制存储设备读写的技术方案。

示例1

如图3所示,本示例提供一个控制存储设备读写的系统,包括:

带宽需求分析模块301,用于识别当前获得终端人机交互资源的应用(top应用)的磁盘读写带宽需求;

带宽总量管理模块302,用于对存储设备的磁盘读写带宽总量进行动态估计,当检测到所述磁盘读写带宽总量下降时,将用于根据各进程所占磁盘读写带宽和进行带宽调整的带宽总量阈值下调;

时间片分配模块303,用于为各个进程分配不同的时间片,在分配给进程的时间片内,进程将其读写请求发送给存储设备,当进程的时间片消耗完后所述进程的请求队列将被挂起并等待调度;

设置模块304,用于设置各进程的磁盘读写带宽控制方式(自动或手动),以及开始进行带宽控制的带宽总量阈值;

显示模块305,用于显示各进程的磁盘读写带宽占比或数值,以及显示各个进程的磁盘读写带宽控制方式选项(自动或手动)。

示例2

如图4所示,本示例提供一种控制存储设备读写的方法,包括以下步骤:

s401,判断启动的进程是否为当前获得终端人机交互资源的应用(top应用)的进程,是则执行步骤s402,否则执行步骤s405;

s402,判断该进程的磁盘读写带宽控制方式是手动还是自动,如果是手动则执行步骤s403,如果是自动则执行步骤s404;

s403,根据用户设置的磁盘读写带宽数值进行带宽控制,结束;

s404,智能识别该进程的磁盘读写带宽需求,为该进程分配能够使其磁盘读写速率达到需求的磁盘读写带宽,结束;

s405,判断该进程的磁盘读写带宽控制方式是手动还是自动,如果是手动则执行步骤s406,如果是自动则执行步骤s407;

s406,判断该进程是否被用户加入带宽限制组中,是则执行步骤s408;

s407,自动将该进程加入带宽限制组中;

s408,根据所述带宽限制组的带宽限制方式为所述进程分配受限的带宽;

其中,所述带宽限制组中的每一个进程按照固定磁盘读写速率分配带宽,或者按照与获得终端人机交互资源的应用(top应用)的进程之间按固定比例分配带宽的方式分配带宽。

在如图5所示的利用带宽限制组控制带宽分配的显示界面上,假设有两个进程,分别是:进程1和进程2。可以在显示界面上分别显示两个进程的标识、磁盘读写控制方式选项(自动或手动)以及每一个进程当前占用的磁盘读写带宽。

如表1所示,所述带宽限制组的带宽限制方式可以有两种,第一种是该进程的磁盘读写速率的最大值为固定值(相当于固定该进程获得的带宽),另一种是:该进程与当前获得终端人机交互资源的应用的进程之间具有固定的带宽比。

表1

如表1所示,进程1所占带宽百分比为5%,最大磁盘读写速率为50mb/s(50兆字节/秒),进程1与top应用的进程之间的带宽比为50:100;进程2所占带宽百分比为3%,最大磁盘读写速率为30mb/s(30兆字节/秒),进程2与top应用的进程之间的带宽比为30:100。

当用户选择手动控制进程的磁盘读写带宽时,系统应用层获得用户的设置信息,并将所述设置信息传递给系统框架层,系统框架层根据用户的设置项通知系统内核层,系统内核层进行底层接口的调用,对进程的磁盘读写带宽进行管理和控制。

当用户选择自动控制进程的磁盘读写带宽时,系统可以首先识别当前获得终端交互资源的应用(top应用)的进程,以及估计所述top应用的进程的带宽需求。然后根据存储设备的磁盘读写带宽总量、当前各个进程占用的磁盘带宽和动态分配所述top应用的进程的时间片,保证其磁盘读写带宽。

在一种实施方式中,当系统检测到后台进程的磁盘读写速率波动幅度异常时,比如该后台进程不断重启、异常连接网络、异常读写文件或日志时,对所述进程进行带宽限制,可以在该进程占用磁盘带宽异常增大时进行动态控制,在该进程占用磁盘带宽恢复正常时解除对该进程的带宽限制。

在一种实施方式中,当系统检测到各个进程占用的磁盘读写带宽和达到预设阈值时,判断各个进程开始进行带宽资源竞争,对top应用的进程进行带宽保证,对其他进程进行带宽限制。

在一种实施方式中,当系统检测到某个进程在读写大文件,则检测该进程是否影响到top应用的进程的磁盘读写速率,如果影响到,则通过带宽限制控制该进程的磁盘读写速率。

在一种实施方式中,对于某个应用有多个进程时,保证此多个进程采用同一个带宽控制策略,即带宽控制方式一致。比如应用a,有两个进程proc_a1与proc_a2,proc_a2占用磁盘读写带宽比较高,如果此应用处于后台,则需要同时控制proc_a1和proc_a2,保证此两个进程处于同一个带宽控制策略中。具体实现可以是,将两个进程的包名的前面部分设置为相同,系统可据此确认两个进程是否处于同一个应用中,以达到进程级的同一应用的精准带宽控制。

在一种场景中,某个应用因某种原因,比如:编译工具的原因,如采用了低版本的编译工具,使得此应用的某个进程在后台时会不断退出并再次启动,再次启动时会读取磁盘,与top应用形成竞争关系,此时使用带宽限制策略进行控制,可有效减少top应用的卡顿。具体实现时,系统可以实时监控后台应用的磁盘读写波动情况,发现此后台应用磁盘读写波动,则可以减少此应用的磁盘读写时间片占用,如果top应用有需求,结合top应用的需求分配时间片的占用。

在一种场景中,在低内存设备上,如果安装了非常多的应用,则启动多个应用时,如果设备的内存不足时,会杀掉部分应用,如果杀掉的应用具有自启能力,则很多应用在不断地被杀掉后又重新启动,造成系统资源的浪费。具体实现时,系统可以实时监控后台应用的磁盘读写波动情况,此时后台应用能够检测到该应用的磁盘读写波动,此时使用带宽限制策略进行控制,可对此后台应用进行磁盘读写时间片的限制,保证前台应用的磁盘读写速率。采用带宽限制策略后可优化前台应用20%以上的磁盘读写速率。

在一种场景中,一般top应用占用的磁盘读写带宽比较大,任何应用变为top应用后,可使用带宽保证机制保证top应用得到接近其最大磁盘读写速率的需求速率,而后台应用在此时使用top应用剩余的宽带。

在一种场景中,后台在进行大数据的下载时,如果此时启动应用或top应用有一个大的文件读写的动作,比如大视频,大图片,系统可以智能收集到top应用的磁盘读写需求,比如top应用需要70mb/s的需求,而由于其他应用的影响,此时可能仅能达到40mb/s,此时按一定步长逐步调整top应用磁盘读写的时间片,使其达到或接近70mb/s,当top应用的需求下降时,按一定步长逐步调整减少其占用,这样保证了前台应用具有较高的磁盘读写效率,又能保证后台下载类需求的效率。

在一种场景中,当应用打开或加载大文件时,系统可以监控到有大文件的读写,此时判别读写此大文件所在的应用的进程,智能获取当前top应用的磁盘读写需求,以及各个进程占用的磁盘读写带宽的总量,动态调整(增加、减少、或恢复)读写文件的进程所占用的磁盘读写带宽占比。

需要说明的是,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1