一种处理并发顺序读io的方法及装置的制造方法

文档序号:9727264阅读:197来源:国知局
一种处理并发顺序读io的方法及装置的制造方法
【技术领域】
[0001]本发明属于存储技术领域,尤其涉及一种处理并发顺序读10的方法及装置。
【背景技术】
[0002]随着大数据的发展,人们把越来越多的服务器连接到同一个存储阵列上,并且随着服务器的发展,同一个服务器也会出现多核的CPU,这就出现可能同时几十路甚至上百路的顺序读10( Input/Output)需要同一个存储阵列的处理,这就需要存储阵列的10处理算法能够并发的顺序读10。且每个顺序读10的触发条件,块大小,预读的深度都跟具体的应用相关,如何动态地调整存储的预读算法使之能跟上应用的发展,就成了存储阵列能否跟上大数据发展时代的关键因素了。
[0003]现有技术中,通常针对特定的应用进行优化。但这样对于多应用场景的客户环境来说都有些不便,例如需要分析客户的应用特点,并根据相应的应用进行修改算法,并编译测试等,操作繁琐。并且通常只考虑到单路的读10,并没有相应的方法处理并发的多路顺序读10。

【发明内容】

[0004]本发明提供一种处理并发顺序读10的方法及装置,可通过调整预读10的相关参数,动态调整预读算法,提高存储阵列处理并发顺序读10的效率。
[0005]本发明提供的处理并发顺序读10的方法,包括:
[0006]接收调整顺序读10的第一预读深度参数的指令,并按照所述指令进行参数配置;接收顺序读10的指令,并将所述顺序读10加入到所属的顺序读10队列;判断队列中顺序读10的数量是否大于预置目标数量;若是,则根据当前预读状态参数,通过动态调整第二预读深度参数以调整顺序读10的预读深度;按照调整后的顺序读10的预读深度,调用后端存储接口从存储阵列中读取10数据。
[0007]本发明提供的处理并发顺序读10的装置,包括:
[0008]接收模块,用于接收调整顺序读10的第一预读深度参数的指令;配置模块,用于按照所述指令进行参数配置;所述接收模块,还用于接收顺序读10的指令;加入模块,用于将所述顺序读10加入到所属的顺序读10队列;判断模块,用于判断队列中顺序读10的数量是否大于预置目标数量;调整模块,用于若是,则根据当前预读状态参数,通过动态调整第二预读深度参数以调整顺序读10的预读深度;读取模块,用于按照调整后的顺序读10的预读深度,调用后端存储接口从存储阵列中读取10数据。
[0009]从上述本发明实施例可知,本发明通过调整预读深度相关参数,来调整顺序读10的预读深度,提高并发处理多路顺序读10的效率和能力。
【附图说明】
[0010]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0011]图1是本发明实施例中处理并发顺序读10的内部模块结构示意图;
[0012]图2是本发明第一实施例提供的处理并发顺序读10的方法的实现流程示意图;
[0013]图3是本发明第二实施例提供的处理并发顺序读10的方法的实现流程示意图;
[0014]图4是本发明第三实施例提供的处理并发顺序读10的装置的结构示意图;
[0015]图5是本发明第四实施例提供的处理并发顺序读10的装置的结构示意图。
【具体实施方式】
[0016]为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0017]请参阅图1,本发明实施例中,执行处理并发顺序读10的方法的装置内部结构可包括如下软件或硬件模块:
[0018]存储前端101、触发模块102、预读模块103、存储后端104以及存储阵列(可以是磁盘阵列)105。
[0019]其中,存储前端101,是接收主机发出的顺序读10命令并解析其中顺序读10相关的参数。
[0020]触发模块102,用于触发预读与该顺序10命令指示的读取数据的操作。
[0021]预读模块103,用于根据指令执行预读数据的操作,其中内置预读算法。
[0022]存储后端104,用于通过与存储阵列105之间的存储接口从存储阵列105中读取数据。该存储接口不仅提供读10的接口,还提供查询后端读10压力的接口。
[0023]存储阵列105,用于存储数据。
[0024]以上各模块可以单独或集成在该装置中。
[0025]请参阅图2,图2为本发明第一实施例提供的处理并发顺序读10的方法的实现流程示意图,主要包括以下步骤S201至步骤S205:
[0026]S201、接收调整顺序读10的第一预读深度参数的指令,并按照该指令进行参数配置;
[0027]调整顺序读10的第一预读深度参数的指令可以是调试人员或使用人员发出,该指令用于调整顺序读10的第一预读深度参数,按照该指令进行参数配置,使得按照配置后的参数进行预读。
[0028]S202、接收顺序读10的指令,并将该顺序读10加入到所属的顺序读10队列;
[0029]S203、判断队列中顺序读10的数量是否大于预置目标数量;
[0030]一个队列中顺序读10的数量大于预置目标数量,是触发预读线程的触发条件。
[0031]S204、若是,则根据当前预读状态参数,通过动态调整第二预读深度参数以调整顺序读10的预读深度;
[0032]若该顺序读10所在的队列中,顺序读10的数量是否大于该预置目标数量,则触发预读线程,调整预读深度,具体地,根据当前预读状态参数,通过动态调整第二预读深度参数,来调整顺序读10的预读深度。若当前预读状态参数显示预读深度还可以增加,则执行步骤205按照新的预读深度读取数据,若当前预读状态参数显示预读深度已到极限,再增加则影响系统整体运行状况,例如,影响执行主机发出的顺序读10指令的反应速度,则不对当前的预读深度进行调整。
[0033]S205、按照调整后的顺序读10的预读深度,调用后端存储接口从存储阵列中读取10数据。
[0034]本发明实施例,通过调整预读深度相关参数,来调整顺序读10的预读深度,提高并发处理多路顺序读10的效率和能力。
[0035]请参阅图3,图3为本发明第二实施例提供的处理并发顺序读10的方法的实现流程示意图,主要包括以下步骤S301至步骤S307:
[0036]S301、接收调整顺序读10的第一预读深度参数的指令,并按照该指令进行参数配置;
[0037]该顺序读10的第一预读深度参数至少包括以下一种参数:
[0038]顺序读10的最佳的预读长度化6忖6(:1:_口;^8丨26)、睡眠的预读长度(7丨61(1_?;^8126)、正常的预读长度(1101'1]^1_。;1^_8丨26)、顺序读10线程允许运行数量化;1;'_131187_1:11^3(1)以及顺序读10的触发数量(triger)。
[0039]具体地,通过调整最佳的预读长度、睡眠的预读长度和正常的预读长度可直接调整预读的深度。通过调整顺序读10线程允许运行数量可调整预读线程同时访问后端模块的能力。通过调整顺序读10的目标数量调整顺序读10的同时触发数量。
[0040]按照该指令中的参数进行配置,使得预读模块按照配置后的参数进行预读。
[0041 ] S302、接收顺序读10的指令,判断该顺序读10是否为新的顺序读10;
[0042]存储前端接收到顺序读10的指令,解析该指令中10相关参数,调用PF_CACHEadd_fe函数以触发预读。
[0043]首先检查该顺序读10的合法性,即检查该顺序读10的起始地址和长度是否合法,若合法,则判断该顺序读10是否为新的顺序读10。
[0044]顺序读10的相关信息存放在以下数组中:
[0045]Pf_Result.CacheNstoreThreadData[PF_RESULT_NUM]
[0046]通过如下的操作判断其是否是新的顺序10,如果下面的条件不符合,则是新的顺序10:
[0047]for(pf_rlt_index=0;pf_rlt_index<PF_RESULT_NUM;pf_rlt_index++)
[0048]{
[0049]if((Pf_Result.CacheNstoreThreadData[pf_rlt_index].1o_start+
[0050]Pf_Result.CacheNstoreThreadData[pf_rlt_index].
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1