CN107817944B - 一种数据处理方法及存储设备 - Google Patents

一种数据处理方法及存储设备 Download PDF

Info

Publication number
CN107817944B
CN107817944B CN201610819765.7A CN201610819765A CN107817944B CN 107817944 B CN107817944 B CN 107817944B CN 201610819765 A CN201610819765 A CN 201610819765A CN 107817944 B CN107817944 B CN 107817944B
Authority
CN
China
Prior art keywords
queue
data
request
congestion state
depth
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610819765.7A
Other languages
English (en)
Other versions
CN107817944A (zh
Inventor
黄渠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610819765.7A priority Critical patent/CN107817944B/zh
Publication of CN107817944A publication Critical patent/CN107817944A/zh
Application granted granted Critical
Publication of CN107817944B publication Critical patent/CN107817944B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种数据处理方法,当接收IO请求后,首先判断该IO请求对应的数据队列是否处于拥塞状态,即,数据队列内的数据是否出现拥塞;如果数据队列处于拥塞状态,则将IO请求挂载到IO暂停队列暂停处理该IO请求。即,先不响应该IO请求,不再向数据队列中存入数据,数据队列中的数据量不再增加,从而有效控制数据队列的队列深度,避免存储设备出现数据拥塞现象。

Description

一种数据处理方法及存储设备
技术领域
本发明属于计算机技术领域,尤其涉及一种数据处理方法及存储设备。
背景技术
存储系统主要包括主机和存储设备,主机发起IO(Input/Output,输入/输出)请求,如果是读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请求;IO请求处理模块,用于当检测到所述IO请求被暂停处理的时间达到预设时长后,处理所述IO请求以获取所述IO请求的数据,并将所述IO请求的数据加入所述数据队列。
第二方面提供的存储设备具有以有益效果:接收到IO请求后,判断数据队列是否拥塞,如果拥塞,则暂停处理该IO请求,即,先不响应该IO请求,不再向数据队列中存入数据,数据队列中的数据量不再增加,从而有效控制数据队列的队列深度,避免存储设备的数据队列出现拥塞。
在第二方面一种可能的实现方式中,所述判断模块具体用于:获取所述数据队列的拥塞状态标记;根据所述拥塞状态标记判断所述数据队列是否处于拥塞状态;如果所述拥塞状态标记为第一预设值时,则所述数据队列处于拥塞状态;如果所述拥塞状态标记为第二预设值时,则所述数据队列处于非拥塞状态。
在第二方面一种可能的实现方式中,还包括:获取模块,用于在检测到所述数据队列的队列深度发生变化时,获取所述数据队列的队列深度,当所述队列深度大于所述第一深度阈值,且小于所述第二深度阈值时,保持所述拥塞状态标记不变;第一标记设置模块,用于当所述队列深度小于等于第一深度阈值时,设置所述拥塞状态标记为第二预设值;第二标记设置模块,用于当所述队列深度大于等于第二深度阈值时,设置所述拥塞状态标记为第一预设值。
在第二方面一种可能的实现方式中,所述暂停处理模块,包括:暂停时间计算子模块,用于根据所述队列深度和所述第二深度阈值,计算得到所述预设时长;IO请求挂载子模块,用于将所述IO请求挂载至所述IO暂停队列的尾部,并记录所述IO请求挂载在所述暂停队列的时间。
在第二方面一种可能的实现方式中,所述IO请求为读操作请求,所述数据队列中的数据为所述读操作请求被处理后,从所述存储设备读取、且需要发送至发送所述读操作请求的主机的数据。
在第二方面一种可能的实现方式中,所述IO请求为写操作请求,所述数据队列中的数据为所述写操作请求被处理后,从所述写操作请求中获取的待写入所述存储设备的数据。
第三方面,本发明提供一种存储设备,包括:接收器,用于接收输入输出IO请求;存储器,用于存储程序指令和数据;处理器,用于执行所述程序指令,以完成第一方面及第一方面可能的实现方式所提供的数据处理方法。
与现有技术相比,本发明提供的上述技术方案具有如下优点:当接收IO请求后,首先判断数据队列是否处于拥塞状态,如果数据队列处于拥塞状态,则将IO请求挂载到IO暂停队列暂停处理该IO请求,即暂时不响应该IO请求,不再向数据队列存入数据,数据队列中的数据量不再增加,从而有效控制数据队列的队列深度,避免存储设备的数据队列出现拥塞现象。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一种数据处理方法的流程图;
图2是本发明实施例对IO暂停队列中的IO请求进行处理的流程图;
图3是本发明实施例一种标记数据队列是否拥塞过程的流程图;
图4是本发明实施例一种存储设备的框图;
图5是本发明实施例另一种存储设备的框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在存储设备接收到读IO请求后,会对读IO请求进行处理,即从存储设备中读取读IO请求所请求的数据,然后将数据加入发送队列,存储设备按照发送队列中数据的顺序将数据发送至主机。在存储设备接收到写IO请求后,会对写IO请求进行处理,即从写IO请求中读取待写入的数据,然后将该数据加入接收队列,存储设备按照接收队列中的数据顺序将数据写入存储设备。本发明实施例即在存储设备的接收队列及发送队列产生拥塞的情况下,对IO请求进行暂停处理,暂时不向所述接收队列或者发送队列加入数据,从而减少数据队列拥塞,下面将通过本发明的实施例具体描述减少拥塞的方法。
请参见图1,示出了本发明实施例一种数据处理方法的流程图,该方法应用于存储设备中,具体的,存储设备的处理器为本方法实施例的执行主体如图2所示,该方法包括以下步骤:
S110,接收主机发送的IO请求。
本实施例中,主机可以是客户端、终端或服务器等;存储设备可以是存储服务器。IO请求的类型包括读IO请求和写IO请求。
S120,判断IO请求的类型;如果是读IO请求,则执行S130;如果是写IO请求,则执行S160。
根据IO请求的类型确定需要判断拥塞的数据队列如果是读IO请求,,即需要判断发送队列是否存在拥塞;如果是写IO请求,即需要判断接收队列是否存在拥塞。
S130,判断发送队列的状态;队列的状态包括拥塞状态和非拥塞状态;如果发送队列是拥塞状态,则执行S140;如果发送队列是非拥塞状态,则执行S150。
在本发明一种可能的实现方式中,发送队列或接收队列都有一个拥塞状态标记,根据该拥塞状态标记即可判断队列的状态;例如,该拥塞状态标记可以用二进制数“1”、“0”表示,如果拥塞状态标记是“1”,则表示该队列处于拥塞状态;如果拥塞状态标记是“0”,则表示该队列处于非拥塞状态。
在本发明一种可能的实现方式中,根据队列深度确定队列的拥塞状态标记,请详见下文图4所示的相关内容。
S140,将该读IO请求存入IO暂停队列暂停处理。
IO暂停队列用于存储暂停处理的IO请求,包括读IO请求和写IO请求。
存储设备发送队列发生数据拥塞的根本原因是接收到主机发起的大量并发读IO请求,这些读IO请求被处理后产生的读数据(即从存储设备读取的数据)被加入发送队列,而发送队列里的数据太多,不能被及时发送至主机时,就会发生拥塞。当发送队列出现拥塞后,处理器接收到读IO请求时,将读IO请求挂载在IO暂停队列暂停处理一定时间,即先不响应读IO请求,这样就不会从存储设备中读取数据,则发送队列里的数据量也不会增加,从而有效控制发送队列的深度,减缓发送方向的数据拥塞。
S150,读取该读IO请求所请求读取的数据,并将该数据存入发送队列。
如果发送队列处于非拥塞状态,则直接处理接收到的该读IO请求,读取读IO请求所请求从存储设备中读取的数据,并将该数据存入发送队列中等待发送给主机。
S160,判断接收队列的状态,接收队列的状态包括拥塞状态和非拥塞状态;如果接收队列是拥塞状态,则执行S170;如果接收队列是非拥塞状态,则执行S180。
S170,将该写IO请求存入IO暂停队列暂停处理。
存储设备的接收队列发生数据拥塞的根本原因是接收到主机发起的大量并发写IO请求,这些写IO请求被处理后产生的大量待写入数据(主机请求写入存储设备的数据)被加入接收队列,而接收队列中的数据太多,不能被及时写入存储设备中,就会导致接收队列拥塞。当接收队列发生数据拥塞后,处理器接收到写IO请求后,将该写IO请求挂载在IO暂停队列中暂停处理一定时间,即,先不响应写IO请求,不再向接收队列中存入数据,接收队列中的数据量不再增加,从而有效控制接收队列的深度,减缓接收方向的数据拥塞。
S180,获取该写IO请求所请求写入存储设备的数据,并将数据存入接收队列。
如果接收队列处于非拥塞状态,则直接处理该写IO请求,获取请求写入存储设备的数据,并将该数据存入接收队列中等待写入存储设备。
需要说明的是,本实施例所示数据处理流程仅示出了对一个IO请求处理的过程,之后,返回执行S110继续下一个IO请求的处理过程。
本实施例提供的数据处理方法,当接收到IO请求后,判断数据队列是否处于拥塞状态,如果是读IO请求,则判断发送队列是否拥塞;如果是写IO请求,则判断接收队列是否拥塞。如果数据队列处于拥塞状态,则将IO请求挂载在IO暂停队列暂停处理,即先不响应该IO请求,不再向数据队列中存入数据,数据队列中的数据量不再增加,从而有效控制数据队列的队列深度,避免存储设备出现数据拥塞现象。
请参见图2,示出了本发明实施例对IO暂停队列中的IO请求进行处理的流程图。
S210,检测IO暂停队列中是否存在暂停时长超过预设时长的IO请求;如果存在,则执行S220;如果不存在暂停超时的IO请求,则经过一预设时间段后返回执行S210。
将IO请求挂载到IO暂停队列的同时,处理器记录该IO请求的暂停时长。与此同时,处理器会实时(或者,按预设周期)检查IO暂停队列中是否有暂停时长超过预设时长而未处理的IO请求。
在本发明一种可能的实现方式中,预设时长根据当前队列深度及确定数据队列(包括接收队列和发送队列)进入拥塞状态的队列深度阈值(即为图3中所描述的第二深度阈值)计算得到;队列深度越大,则预设时长越长;队列深度越小,则预设时长越短。例如,预设时长可以按照公式1进行计算:
T=k(d-dth) (公式1)
公式1中,T为预设时长,k为可调节系数,d为当前队列深度,dth为第二深度阈值,k可以根据具体业务需求选取,dth可以根据具体业务的需求选取。例如,k取4us,d为800,dth为700,则T为400us。
S220,从IO暂停队列中读取暂停超时的IO请求。
S230,判断从IO暂停队列中读取的IO请求的类型;如果是读IO请求;则执行S240;如果是写IO请求,则执行S250。
S240,读取该读IO请求所请求读取的数据,并将该数据存入发送队列。
S250,获取该写IO请求所请求写入存储设备的数据,并将数据存入接收队列。
本实施例提供的处理IO暂停队列中的IO请求的过程,当IO暂停队列中的IO请求暂停时长超过预设时长时,读取该IO请求继续处理,从而保证及时响应该IO请求,避免出现遗漏IO请求的现象。
请参见图3,示出了本发明实施例一种标记数据队列是否拥塞过程的流程图,本实施例的数据队列包括发送队列和接收队列。如图3所示,该过程包括:
S310,当检测到数据队列深度发生变化时,检测数据队列的队列深度;
数据队列的队列深度发生变化主要发生在以下两个场景下,一种场景是向数据队列中存入数据,导致队列深度增加;另一种场景是从数据队列中读取数据,导致队列深度减小。队列遵循先进先出原则,即按照入队列的顺序出队列。
对于发送队列而言,向数据队列存入数据是:响应读IO请求从存储空间读取的数据存入发送队列中;从数据队列中读取数据是:发送队列中的数据被发送给主机。
对于接收队列而言,向数据队列存入数据是:响应写IO请求获取待写入存储设备的数据存入接收队列中;从数据队列读取数据是:接收队列中的数据被写入存储设备中。在本发明一种可能的实现方式中,为队列深度设置两个深度阈值,分别为第一深度阈值和第二深度阈值,其中,第一深度阈值小于第二深度阈值。
如果队列深度小于等于第一深度阈值,则执行S320,标记数据队列为非拥塞状态。
例如,将数据队列的拥塞状态标记为二进制数值“0”,表示数据队列处于非拥塞状态。
如果队列深度大于第一深度阈值且小于第二深度阈值,则执行S330,数据队列保持原拥塞状态标记不变。
当队列深度介于第一深度阈值和第二深度阈值之间时,如果数据队列的原状态是拥塞状态,则依然保持拥塞状态不变;如果发送队列的原状态是非拥塞状态,则依然保持非拥塞状态不变。
如果队列深度大于等于第二深度阈值,则执行S340,标记数据队列为拥塞状态。
例如,将数据队列的拥塞状态标记为二进制数值“1”,表示数据队列处于拥塞状态。
本实施例提供的标记数据队列状态的过程,为数据队列设定两个深度阈值,如果数据对列当前处于非拥塞状态,当队列深度超过第二深度阈值时,数据队列由非拥塞状态进入拥塞状态;数据对立进入拥塞状态后,对列深度减小至第一深度阈值时,数据对列退出拥塞状态。设定两个深度阈值,能够避免只设定一个深度阈值导致不断地在进入拥塞和退出拥塞之间切换,使得拥塞控制过程更稳定。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
相应于上述的方法实施例,本发明还提供了存储设备实施例。
请参见图4,为本发明实施例一种存储设备的框图,如图4所示,该存储设备的处理器包括接收模块110、判断模块120、暂停处理模块130和IO请求处理模块140。
接收模块110,用于接收IO请求。该接收模块110可以接收存储设备的接收器所传递的IO请求。
判断模块120,用于判断数据队列是否处于拥塞状态。
若IO请求为读IO请求,则判断发送队列是否拥塞,其中,发送队列用于存放响应读IO请求后从存储设备中读取的该读IO请求所请求读取的数据;
若IO请求为写IO请求,则判断接收队列是否拥塞,其中,接收队列用于存放响应写IO请求后获得的待写入存储设备的数据。
在本发明一种可能的实现方式中,判断模块120具体用于:获取数据队列的拥塞状态标记;根据拥塞状态标记判断数据队列是否处于拥塞状态;当拥塞状态标记为第一预设值时,确定数据队列处于拥塞状态;当拥塞状态标记为第二预设值时,确定数据队列处于非拥塞状态。
例如,第一预设值可以为二进制数值“1”,第二预设值可以为二进制数值“0”。
暂停处理模块130,用于当判断模块确定数据队列处于拥塞状态时,将IO请求挂载至IO暂停队列暂停处理。
当IO请求的悬挂时间达到预设时长后,由IO请求处理模块140处理所述IO请求。或者,当判断模块120确定数据队列处于非拥塞状态时,直接由IO请求处理模块140处理该IO请求。
预设时长可以根据数据队列的队列深度及第二深度阈值计算得到,具体计算方法可以参见图2中的相关内容,此处不再赘述。
在本发明一种可能的实现方式中,当数据队列的队列深度发生变化时,检测数据队列的队列深度并根据队列深度标记数据队列的拥塞状态。存储设备还包括:获取模块210、第一标记模块220和第二标记模块230。
获取模块210,用于在检测到数据队列的队列深度发生变化时,获取数据队列的队列深度,当所述队列深度大于所述第一深度阈值,且小于所述第二深度阈值时,保持所述拥塞状态标记不变。
第一标记模块220,用于当队列深度小于等于第一深度阈值时,设置所述队列的拥塞状态标记为第二预设值。例如,第二预设值可以为二进制数值“0”
第二标记模块230,用于当队列深度大于等于第二深度阈值时,设置所述队列的拥塞状态标记为第一预设值。例如,第一预设值可以为二进制数值“1”。
本实施例提供的存储设备,接收模块接收到IO请求后,由判断模块判断数据队列是否处于拥塞状态,如果处于拥塞状态,则由暂停处理模块将该IO请求挂载至IO暂停队列,暂停处理该IO请求。即,先不响应该IO请求,不再向数据队列中存入数据,数据队列中的数据量不再增加,从而有效控制数据队列的队列深度,避免存储设备的数据队列出现拥塞。
请参见图5,示出了本发明实施例另一种存储设备的框图,如图5所示,该存储设备包括接收器310、存储器320和处理器330;
接收器310,用于接收IO请求发起端发送的IO请求。该IO请求包括读IO请求和写IO请求。
存储器320,用于存储程序及数据,其中,存储器320可以包括第一存储器和第二存储器,其中,第一存储器为内存储器用于存储程序指令,第二存储器用于存储数据。
处理器330用于执行内存储器中存储的程序指令,以执行上述图1-图3所示方法实施例。
具体的,处理器330在接收到IO请求后,判断数据队列是否处于拥塞状态,所述数据队列用于存放处理IO请求后所产生的数据;当确定所述数据队列处于拥塞状态时,将所述IO请求挂载至IO暂停队列暂停处理,所述IO暂停队列用于挂载被暂停处理的IO请求;当检测到所述IO请求被暂停处理的时间达到预设时长后,处理所述IO请求以获取所述IO请求的数据,并将所述IO请求的数据加入所述数据队列。
在本发明一种可能的实现方式中,处理器330用于判断数据队列是否处于拥塞状态时,具体用于:
获取数据队列的拥塞状态标记;根据拥塞状态标记判断数据队列是否处于拥塞状态;当拥塞状态标记为第一预设值时,确定数据队列处于拥塞状态;当拥塞状态标记为第二预设值时,确定数据队列处于非拥塞状态。
在本发明一种可能的实现方式中,处理器330还用于:
在检测到数据队列的队列深度发生变化时,获取数据队列的队列深度;当所述队列深度小于等于第一深度阈值时,设置所述拥塞状态标记为第二预设值;当所述队列深度大于等于第二深度阈值时,设置所述拥塞状态标记为第一预设值;当所述队列深度大于所述第一深度阈值,且小于所述第二深度阈值时,保持所述拥塞状态标记不变。
在本发明一种可能的实现方式中,处理器330根据所述队列深度和所述第二深度阈值,计算得到所述预设时长;将所述IO请求悬挂到IO链表的尾部,并记录所述IO请求的悬挂时间。
在本发明一种可能的实现方式中,IO请求为读操作请求,所述数据队列中的数据为所述读操作请求被处理后,从所述存储设备读取、且需要发送至发送所述读操作请求的主机的数据。
在本发明一种可能的实现方式中,所述IO请求为写操作请求,所述数据队列中的数据为所述写请求被处理后,从所述写请求中获取的待写入所述存储设备的数据。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (13)

1.一种数据处理方法,应用于存储设备中,其特征在于,所述方法包括:
接收输入输出IO请求;
判断数据队列是否处于拥塞状态,所述数据队列用于存放IO请求被处理后所产生的数据;
当确定所述数据队列处于拥塞状态时,将所述IO请求挂载至IO暂停队列暂停处理,所述IO暂停队列用于挂载被暂停处理的IO请求;
当检测到所述IO请求被暂停处理的时间达到预设时长后,处理所述IO请求以获取所述IO请求的数据,并将所述IO请求的数据加入所述数据队列。
2.根据权利要求1所述的方法,其特征在于,判断所述数据队列是否处于拥塞状态,包括:
获取所述数据队列的拥塞状态标记;
根据所述拥塞状态标记判断所述数据队列是否处于拥塞状态;
当所述拥塞状态标记为第一预设值时,确定所述数据队列处于拥塞状态;
当所述拥塞状态标记为第二预设值时,确定所述数据队列处于非拥塞状态。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在检测到所述数据队列的队列深度发生变化时,获取所述数据队列的队列深度;
当所述队列深度小于等于第一深度阈值时,设置所述拥塞状态标记为第二预设值;
当所述队列深度大于等于第二深度阈值时,设置所述拥塞状态标记为第一预设值;
当所述队列深度大于所述第一深度阈值,且小于所述第二深度阈值时,保持所述拥塞状态标记不变。
4.根据权利要求3所述的方法,其特征在于,所述当确定所述数据队列处于拥塞状态时,将所述IO请求挂载至IO暂停队列暂停处理,包括:
根据所述队列深度和所述第二深度阈值,计算得到所述预设时长;
将所述IO请求挂载至所述IO暂停队列的尾部,并记录所述IO请求挂载在所述暂停队列的时间。
5.根据权利要求1-4任意一项所述的方法,其特征在于,所述IO请求为读操作请求,所述数据队列中的数据为所述读操作请求被处理后,从所述存储设备读取、且需要发送至发送所述读操作请求的主机的数据。
6.根据权利要求1-4任意一项所述的方法,其特征在于,所述IO请求为写操作请求,所述数据队列中的数据为所述写操作请求被处理后,从所述写操作请求中获取的待写入所述存储设备的数据。
7.一种存储设备,其特征在于,包括:
接收模块,用于接收输入输出IO请求;
判断模块,用于判断数据队列是否处于拥塞状态,所述数据队列用于存放IO请求被处理后所产生的数据;
暂停处理模块,用于当所述判断模块确定所述数据队列处于拥塞状态时,将所述IO请求挂载至IO暂停队列暂停处理,所述IO暂停队列用于挂载被暂停处理的IO请求;
IO请求处理模块,用于当检测到所述IO请求被暂停处理的时间达到预设时长后,处理所述IO请求以获取所述IO请求的数据,并将所述IO请求的数据加入所述数据队列。
8.根据权利要求7所述的存储设备,其特征在于,所述判断模块具体用于:
获取所述数据队列的拥塞状态标记;
根据所述拥塞状态标记判断所述数据队列是否处于拥塞状态;如果所述拥塞状态标记为第一预设值时,则所述数据队列处于拥塞状态;如果所述拥塞状态标记为第二预设值时,则所述数据队列处于非拥塞状态。
9.根据权利要求8所述的存储设备,其特征在于,还包括:
获取模块,用于在检测到所述数据队列的队列深度发生变化时,获取所述数据队列的队列深度,当所述队列深度大于第一深度阈值,且小于第二深度阈值时,保持所述拥塞状态标记不变;
第一标记设置模块,用于当所述队列深度小于等于第一深度阈值时,设置所述拥塞状态标记为第二预设值;
第二标记设置模块,用于当所述队列深度大于等于第二深度阈值时,设置所述拥塞状态标记为第一预设值。
10.根据权利要求9所述的存储设备,其特征在于,所述暂停处理模块,包括:
暂停时间计算子模块,用于根据所述队列深度和所述第二深度阈值,计算得到所述预设时长;
IO请求挂载子模块,用于将所述IO请求挂载至所述IO暂停队列的尾部,并记录所述IO请求挂载在所述暂停队列的时间。
11.根据权利要求7-10任意一项所述的存储设备,其特征在于,所述IO请求为读操作请求,所述数据队列中的数据为所述读操作请求被处理后,从所述存储设备读取、且需要发送至发送所述读操作请求的主机的数据。
12.根据权利要求7-10任意一项所述的存储设备,其特征在于,所述IO请求为写操作请求,所述数据队列中的数据为所述写操作请求被处理后,从所述写操作请求中获取的待写入所述存储设备的数据。
13.一种存储设备,包括:接收器,用于接收输入输出IO请求;存储器,用于存储程序指令和数据;处理器,用于执行所述程序指令,以完成权利要求1-6任意一项所述的数据处理方法。
CN201610819765.7A 2016-09-12 2016-09-12 一种数据处理方法及存储设备 Active CN107817944B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610819765.7A CN107817944B (zh) 2016-09-12 2016-09-12 一种数据处理方法及存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610819765.7A CN107817944B (zh) 2016-09-12 2016-09-12 一种数据处理方法及存储设备

Publications (2)

Publication Number Publication Date
CN107817944A CN107817944A (zh) 2018-03-20
CN107817944B true CN107817944B (zh) 2021-05-18

Family

ID=61601343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610819765.7A Active CN107817944B (zh) 2016-09-12 2016-09-12 一种数据处理方法及存储设备

Country Status (1)

Country Link
CN (1) CN107817944B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111726822A (zh) * 2019-03-21 2020-09-29 大唐移动通信设备有限公司 一种Trap报文处理方法及数据同步管理装置
CN113746743B (zh) * 2020-05-29 2023-08-08 华为技术有限公司 一种数据报文传输方法及装置
CN113254166A (zh) * 2021-07-13 2021-08-13 云宏信息科技股份有限公司 一种处理io请求的方法、存储介质和虚拟化模拟器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101097532A (zh) * 2006-06-27 2008-01-02 国际商业机器公司 检测和清除i/o架构锁定情况以恢复错误的方法和装置
CN102025617A (zh) * 2010-11-26 2011-04-20 中兴通讯股份有限公司 以太网拥塞控制方法及装置
CN105099940A (zh) * 2014-05-05 2015-11-25 中兴通讯股份有限公司 队列管理方法和装置
CN105187321A (zh) * 2015-06-08 2015-12-23 中国联合网络通信集团有限公司 控制流量的方法及装置
CN105391647A (zh) * 2015-11-25 2016-03-09 中国联合网络通信集团有限公司 一种流量控制的方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102611620A (zh) * 2012-02-23 2012-07-25 福建星网锐捷网络有限公司 拥塞控制方法和报文处理设备
US9781041B2 (en) * 2013-07-24 2017-10-03 Dell Products Lp Systems and methods for native network interface controller (NIC) teaming load balancing
CN104539553B (zh) * 2014-12-18 2017-12-01 盛科网络(苏州)有限公司 以太网芯片中实现流量控制的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101097532A (zh) * 2006-06-27 2008-01-02 国际商业机器公司 检测和清除i/o架构锁定情况以恢复错误的方法和装置
CN102025617A (zh) * 2010-11-26 2011-04-20 中兴通讯股份有限公司 以太网拥塞控制方法及装置
CN105099940A (zh) * 2014-05-05 2015-11-25 中兴通讯股份有限公司 队列管理方法和装置
CN105187321A (zh) * 2015-06-08 2015-12-23 中国联合网络通信集团有限公司 控制流量的方法及装置
CN105391647A (zh) * 2015-11-25 2016-03-09 中国联合网络通信集团有限公司 一种流量控制的方法及系统

Also Published As

Publication number Publication date
CN107817944A (zh) 2018-03-20

Similar Documents

Publication Publication Date Title
CN107391271B (zh) 一种基于消息队列系统的延时任务触发方法和装置
EP3707882B1 (en) Multi-path rdma transmission
US10025614B2 (en) Setting retransmission time of an application client during virtual machine migration
JP2022552986A (ja) 情報送信方法、装置、読み取り可能な記憶媒体及び電子装置
CN107817944B (zh) 一种数据处理方法及存储设备
US9477618B2 (en) Information processing device, information processing system, storage medium storing program for controlling information processing device, and method for controlling information processing device
US9319493B2 (en) Communication method and information processing system
CN112104562A (zh) 拥塞控制方法及装置、通信网络、计算机存储介质
US11115306B2 (en) Transmission device, available bandwidth estimation device, available bandwidth estimation system, method, and recording medium
CN115514710B (zh) 一种基于自适应滑动窗的弱连接流量管控方法
WO2023155815A1 (zh) 一种报文处理方法、装置、终端设备及存储介质
CN116319569A (zh) 网络参数更新方法、网络参数更新装置、介质及电子设备
CN113992548B (zh) 一种带宽测速方法及装置
CN115469804A (zh) NVMe多队列仲裁方法及装置
US6772244B2 (en) Queuing delay limiter
CN112230880B (zh) 一种数据传输控制方法、装置、fpga及介质
US20170346753A1 (en) Method and device for forwarding data messages
CN114938354A (zh) 拥塞控制的方法、装置、设备和存储介质
CN115002033A (zh) 一种流量控制方法、装置、设备、存储介质及计算机产品
KR20140042420A (ko) 반도체 장치 및 그 동작 방법
US8699347B2 (en) Communication apparatus, communication system, communication method, and a computer-readable medium
CN110289937B (zh) 延迟响应方未就绪否定应答
CN111314280B (zh) 一种基于多用户大数据量的慢系统数据实时读取更新方法
CN112152938B (zh) 一种云虚拟环境中往返时延的确定方法
WO2022190246A1 (ja) マイクロサービス管理装置、マイクロサービス管理方法、及びプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant