一种iSCSI自适应IO队列深度匹配方法组成比例

技术编号:20224479 阅读:97 留言:0更新日期:2019-01-28 22:30
本发明专利技术公开了一种iSCSI自适应IO队列深度匹配方法,包括:步骤1:iSCSI服务器判断当前以太网速率;步骤2:基于当前以太网速率,自动匹配相应的IO队列深度;步骤3:测试当前CPU负载是否饱和,判断能否增加IO队列深度;步骤4:若当前CPU负载饱和,则增加IO队列深度,然后返回步骤3;若当前CPU负载没有饱和,则判断当前IO队列深度是否存在丢包或延迟现象;若当前IO队列深度存在丢包或延迟现象,则减小IO队列深度,然后返回步骤3;若当前IO队列深度不存在丢包或延迟现象,则执行步骤5;步骤5:保留当前IO队列深度值,并与当前使用的LUN关联存入表中供下次使用;实现了能够实现在服务器与交换器在实现速率协商后自动选择最优IO深度。

An iSCSI Adaptive IO Queue Depth Matching Method

The invention discloses an iSCSI adaptive IO queue depth matching method, which includes: step 1: iSCSI server judges the current Ethernet rate; step 2: automatically matches the corresponding IO queue depth based on the current Ethernet rate; step 3: test whether the current CPU load is saturated to determine whether the IO queue depth can be increased; step 4: if the current CPU load is saturated, increase the IO queue depth. Then step 3 is returned; if the current CPU load is not saturated, the current IO queue depth is judged to be lost or delayed; if the current IO queue depth is lost or delayed, the IO queue depth is reduced, and then step 3 is returned; if the current IO queue depth is not lost or delayed, step 5 is executed; step 5: retain the current IO queue depth and join with the current IO queue depth. Current LUN associations are stored in tables for next use, and the optimal IO depth can be automatically selected after rate negotiation between server and switch.

【技术实现步骤摘要】
一种iSCSI自适应IO队列深度匹配方法
本专利技术涉及网络通信领域,具体地,涉及一种iSCSI自适应IO队列深度匹配方法。
技术介绍
iSCSI协议中,iSCSI指令由控制器发出。控制器所发出的批量指令的最大条数由控制器上的队列深度(QueueDepth)决定。假设外部连接独立的磁盘阵列则通常将队列深度设置为64或128。IO队列深度将确定每一个iSCSI会话中可以发送到队列的iSCSI命令上限。较长的队列深度可以在高速的以太网(诸如10GbE以及40GbE环境)和采用SSD作为存储介质的环境中增加吞吐量,但队列深度过高则将会导致系统的延迟增大、同时会降低整个系统的稳定性。故不同IO队列深度将会影响到传输速度以及LUN的稳定性,如图1所示。按图1所示,依据实时系统的思想,为了描述和表征不同类型的实时系统中调度和资源管理的方法,对计算和通信系统所做的各类型的工作采用通用的概括性术语来描述,称能够被系统调度和执行的工作单元为作业(job)。称共同提供某种系统功能的一组相关作业为任务(Task)。以太网传输速率的提升以及SSD(固态硬盘)的广泛使用使得IO吞吐速率成为了存储网络速率提升的瓶颈。显然,当IO队列深度越高时,服务器的处理时间轴将会被任务填满,以达到最大带宽。从图2、图3可以很容易看出,当队列深度提高时,IO的总带宽将最大可能的被不同的作业数填满,已达到最大的IO吞吐率,因此对于高带宽的以太网络和以SSD作为存储介质的RAID来说,高IO队列数将有效提高系统传输效率。但同时需要考虑到队列深度对于IO延迟产生的影响。IO延迟是指控制器将IO指令发出后,直到IO完成的过程所耗费的时间。一般来讲只要IO延迟在20ms以内,对于应用程序来说都是可以接收的。大于20ms则将受到较大的影响。IO的延迟由队列深度以及IOPS(每秒执行IO数)决定。公式为:IOLatency=(QueueDepth)/IOPS根据上式易知,IO队列深度与IO延迟成正相关。而当IO数达到系统可以接受的最大IO数后,随着IOPS的增高,延迟将陡增并超过可已接收的20ms。综上所述,对于IO队列深度的选择、既要考虑到增加队列深度从而尽可能的使用整个服务器的IO性能,也需要考虑到当队列深度过高时,导致的高延迟。
技术实现思路
本专利技术提供了一种iSCSI自适应IO队列深度匹配方法,解决了目前中低端的NAS服务器都尚未提供自适应IO深度的技术问题,实现了能够实现在服务器与交换器(或其他中继设备)在实现速率协商后自动选择最优IO深度。为实现上述专利技术目的,本申请提供了一种iSCSI自适应IO队列深度匹配方法,所述方法包括:步骤1:iSCSI服务器判断当前以太网速率;步骤2:基于当前以太网速率,自动匹配相应的IO队列深度;步骤3:测试当前CPU负载是否饱和,判断能否增加IO队列深度;步骤4:若当前CPU负载饱和,则增加IO队列深度,然后返回步骤3;若当前CPU负载没有饱和,则判断当前IO队列深度是否存在丢包或延迟现象;若当前IO队列深度存在丢包或延迟现象,则减小IO队列深度,然后返回步骤3;若当前IO队列深度不存在丢包或延迟现象,则执行步骤5;步骤5:保留当前IO队列深度值,并与当前使用的LUN关联存入表中供下次使用;然后结束流程或者返回步骤1继续执行本方法流程。进一步的,所述iSCSI服务器判断当前以太网速率具体包括:首先10M100M及1000M具有自适应电口,暂不考虑万兆光口的情况。根据iSCSI协议包的格式,所有数据包都是通过TCP/IP传输,设计1个加法器,在每个包的IP头中都有当前IP包的长度,而以太网帧头为固定的14字节。按1秒计算。设TL(1)为开始计数(约在iSCSI连接完成建立后)后第1s中计算的所有数据包长度,则TL(n)即为当前实际网络的流量(网速)。进一步的,所述测试当前CPU负载是否饱和,判断能否增加IO队列深度,具体包括:根据当前所有活动的TCP进程的周期T判断(周期可分别建立计数器通过判断TCP报文中计数器增加时间简略算出),得到周期后则可以算出每个活动进程的频率即1/T,将所有频率累加后加上其他任务消耗的CPU固定资源(如管理、新建TCP连接或删除已有的连接)来得到。若占用的CPU负载小于CPU最大负载的50%并且当前测得的实际网络速率TL(n)小于接入的网络的速率的百分之75%的情况下,增加IO队列深度。进一步的,所述判断当前IO队列深度是否存在丢包或延迟现象,具体包括:通过同一TCP连接收到TCP报文的ACK时间判断,TCP协议中设计有最大维持时间,当两次数据包ACK的时间间隔大于最大维持时间则存在丢包或延迟。进一步的,在iSCSI的target服务器接入以太网时,本方法首先进行速率协商,并设定一个初始的IO队列深度值。进一步的,本方法在如下三种情况时开始进行调用:第一种:当服务器稳定运行一段时间;第二种:Target中有新的LUN被调用;第三种:Target中的LUN停止调用。进一步的,iSCSITarget服务器至少为双核结构,增加或减少IO队列的深度时,总是对双核中的其中1个处理器生效,在生效后重新进行判断,直到当前IO队列深度为最佳值为之。进一步的,当计算出最佳值后,将其于当前进行数据传输的LUN关联,建立一个二元表;在下次进行相同传输时,直接调用最优的IO队列深度值即可。进一步的,本方法设定为处理速率优先或系统稳定性优先。本申请提供的一个或多个技术方案,至少具有如下技术效果或优点:本方法采用软件方式对当前CPU的负载率进行判断后调整IO队列深度;本方法建立target中不用的LUN或LUN的组合与IO队列深度的关系,建立二元表,便于下次工作时直接进行调用;实现了能够实现在服务器与交换器(或其他中继设备)在实现速率协商后自动选择最优IO深度。附图说明此处所说明的附图用来提供对本专利技术实施例的进一步理解,构成本申请的一部分,并不构成对本专利技术实施例的限定;图1是IO队列深度对于系统性能的影响示意图;图2是队列深度低时IO资源占用量示意图;图3是队列深度高时IO资源占用量示意图;图4是iSCSI自适应IO队列深度匹配方法流程示意图。具体实施方式为了能够更清楚地理解本专利技术的上述目的、特征和优点,下面结合附图和具体实施方式对本专利技术进行进一步的详细描述。需要说明的是,在相互不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。在下面的描述中阐述了很多具体细节以便于充分理解本专利技术,但是,本专利技术还可以采用其他不同于在此描述范围内的其他方式来实施,因此,本专利技术的保护范围并不受下面公开的具体实施例的限制。本专利技术算法实现流程如图4所示,假设iSCSITarget服务器至少为双核结构,定义为CPU1、CPU2:所述方法包括:步骤1:iSCSI服务器判断当前以太网速率;步骤2:基于当前以太网速率,自动匹配相应的IO队列深度;步骤3:测试当前CPU负载是否饱和,判断能否增加IO队列深度;步骤4:若当前CPU负载饱和,则增加IO队列深度,然后返回步骤3;若当前CPU负载没有饱和,则判断当前IO队列深度是否存在丢包或延迟现象;若当前IO队列深度存在丢包或延迟现象,则减小IO队列深度,然后返回步骤3;若当前IO队列深度不存本文档来自技高网
...

【技术保护点】
1.一种iSCSI自适应IO队列深度匹配方法,其特征在于,所述方法包括:步骤1:iSCSI服务器判断当前以太网速率;步骤2:基于当前以太网速率,自动匹配相应的IO队列深度;步骤3:测试当前CPU负载是否饱和,判断能否增加IO队列深度;步骤4:若当前CPU负载饱和,则增加IO队列深度,然后返回步骤3;若当前CPU负载没有饱和,则判断当前IO队列深度是否存在丢包或延迟现象;若当前IO队列深度存在丢包、延迟现象,则减小IO队列深度,然后返回步骤3;若当前IO队列深度不存在丢包或延迟现象,则执行步骤5;步骤5:保留当前IO队列深度值,并与当前使用的LUN关联存入表中供下次使用;然后结束流程或者返回步骤1继续执行本方法流程。

【技术特征摘要】
1.一种iSCSI自适应IO队列深度匹配方法,其特征在于,所述方法包括:步骤1:iSCSI服务器判断当前以太网速率;步骤2:基于当前以太网速率,自动匹配相应的IO队列深度;步骤3:测试当前CPU负载是否饱和,判断能否增加IO队列深度;步骤4:若当前CPU负载饱和,则增加IO队列深度,然后返回步骤3;若当前CPU负载没有饱和,则判断当前IO队列深度是否存在丢包或延迟现象;若当前IO队列深度存在丢包、延迟现象,则减小IO队列深度,然后返回步骤3;若当前IO队列深度不存在丢包或延迟现象,则执行步骤5;步骤5:保留当前IO队列深度值,并与当前使用的LUN关联存入表中供下次使用;然后结束流程或者返回步骤1继续执行本方法流程。2.根据权利要求1所述的iSCSI自适应IO队列深度匹配方法,其特征在于,所述iSCSI服务器判断当前以太网速率具体包括:根据iSCSI协议包的格式,所有数据包都是通过TCP/IP传输,设计1个加法器,在每个包的IP头中都有当前IP包的长度,以太网帧头为固定的14字节,按1秒计算,设TL(1)为开始计数后第1s中计算的所有数据包长度,则TL(n)即为当前实际网络的流量。3.根据权利要求1所述的iSCSI自适应IO队列深度匹配方法,其特征在于,所述测试当前CPU负载是否饱和,判断能否增加IO队列深度,具体包括:根据当前所有活动的TCP进程的周期T判断,得到周期后则算出每个活动进程的频率即1/T,将所有频率累加后加上其他任务消耗的CPU固定资源来获得CPU负载,若占用的CPU负载小于CPU最大负载的50...

【专利技术属性】
技术研发人员:羊舌荣元
申请(专利权)人:电信科学技术第五研究所有限公司
类型:发明
国别省市:四川,51

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

1