CN106776046A - 一种scst读写优化方法及系统 - Google Patents
一种scst读写优化方法及系统 Download PDFInfo
- Publication number
- CN106776046A CN106776046A CN201710025358.3A CN201710025358A CN106776046A CN 106776046 A CN106776046 A CN 106776046A CN 201710025358 A CN201710025358 A CN 201710025358A CN 106776046 A CN106776046 A CN 106776046A
- Authority
- CN
- China
- Prior art keywords
- memory headroom
- scst
- request instruction
- target
- request
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System (AREA)
Abstract
本申请公开了一种SCST读写优化方法及系统,该方法包括:在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应;其中,数据访问命令为SCSI读命令或SCSI写命令。本申请在对数据访问命令执行的过程中,会为每一次IO传输过程分配相应的内存空间,从而在一次数据访问命令的执行过程中,进行了多次的内存空间分配工作,而不是一次性地为该数据访问命令的执行过程中所有的IO传输过程分配内存空间,这样能够有效地避免由于SCST自身限制所导致的内存分配失败情况的出现,由此,进一步提升了SCST读写性能。
Description
技术领域
本发明涉及SCSI技术领域,特别涉及一种SCST读写优化方法及系统。
背景技术
SCSI(即Small Computer System Interface,小型计算机系统接口)是一种适用于计算机和智能设备之间的系统级接口的标准。
在SCSI标准所定义的读过程中,在Target端(即SCST)接收到SCSI的Read Command(即SCSI读命令)的时候会分多次传送IO数据,直到传送完毕所有Initiator端请求的读数据为止。
在SCSI标准所定义的写过程中,在Target端接收到SCSI的Write Command(即SCSI写命令)的时候首先分配一块内存供数据写入,分配完成之后返回XFER_RDY消息给Initiator端告知可以发送数据,返回的XFER_RDY消息中包含此次要求传送的写数据长度,然后Initiator端根据数据长度发送写数据到Target端,重复此过程,直到所有写数据传送完毕。
然而,SCST在执行读写命令的时候,是一次性分配传送所有IO所需要的内存空间,由于SCST本身有IO块大小的限制,所以当Initiator端所发送的SCSI Command要求更大数据块的IO读写时,就会出现内存分配失败的情况,这时Target端将会返回busy的状态,从而造成SCSI命令执行失败。Initiator端在等待一段时间之后会重新发送SCSI Command,直到达到Initiator端的最大重试次数,这时Initiator端会尝试各种方法恢复对逻辑卷LUN的访问,SCSI定义的Task Manager Function,包括ABTS,LUN Reset,Target Reset等,这样会造成性能严重下降。
综上所述可以看出,如何进一步提升SCST读写性能是目前有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种SCST读写优化方法及系统,能够进一步提升SCST读写性能。其具体方案如下:
一种SCST读写优化方法,包括:
在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应;
其中,所述数据访问命令为SCSI读命令或SCSI写命令。
可选的,所述为该IO请求指令分配相应大小的内存空间的过程,包括:
确定该IO请求指令中所请求的IO块的块大小,得到目标IO块大小;
确定与所述目标IO块大小相适应的内存空间大小,得到目标内存空间大小;
为该IO请求指令分配与所述目标内存空间大小相一致的内存空间。
可选的,所述确定该IO请求指令中所请求的IO块的块大小的过程,包括:
利用scst_alloc_space函数,对该IO请求指令中所请求的IO块的块大小进行确定。
可选的,所述利用该内存空间对该IO请求指令进行响应的过程之后,还包括:
对该内存空间进行释放。
本发明还公开了一种SCST读写优化系统,包括:
内存空间分配模块,用于在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间;
指令响应模块,用于利用所述内存空间分配模块分配的内存空间对该IO请求指令进行响应;
其中,所述数据访问命令为SCSI读命令或SCSI写命令。
可选的,所述内存空间分配模块,包括:
第一确定单元,用于在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则确定该IO请求指令中所请求的IO块的块大小,得到目标IO块大小;
第二确定单元,用于确定与所述目标IO块大小相适应的内存空间大小,得到目标内存空间大小;
分配单元,用于为该IO请求指令分配与所述目标内存空间大小相一致的内存空间。
可选的,所述第一确定单元,具体用于利用scst_alloc_space函数,对该IO请求指令中所请求的IO块的块大小进行确定。
可选的,所述SCST读写优化系统,还包括:
内存空间释放模块,用于在所述指令响应模块利用该内存空间对该IO请求指令进行响应的过程之后,对该内存空间进行释放。
本发明中,SCST读写优化方法,包括:在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应;其中,数据访问命令为SCSI读命令或SCSI写命令。
可见,本发明在Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应,也即,本发明在对数据访问命令执行的过程中,会为每一次IO传输过程分配相应的内存空间,从而在一次数据访问命令的执行过程中,进行了多次的内存空间分配工作,而不是一次性地为该数据访问命令的执行过程中所有的IO传输过程分配内存空间,这样能够有效地避免由于SCST自身限制所导致的内存分配失败情况的出现,由此,进一步提升了SCST读写性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种SCST读写优化方法流程图;
图2为本发明实施例公开的一种具体的SCST读写优化方法流程图;
图3为本发明实施例公开的一种SCST读写优化系统结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种SCST读写优化方法,参见图1所示,该方法包括:
步骤S11:在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间;
步骤S12:利用该内存空间对该IO请求指令进行响应;
其中,数据访问命令为SCSI读命令或SCSI写命令。
可见,本发明在Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应,也即,本发明在对数据访问命令执行的过程中,会为每一次IO传输过程分配相应的内存空间,从而在一次数据访问命令的执行过程中,进行了多次的内存空间分配工作,而不是一次性地为该数据访问命令的执行过程中所有的IO传输过程分配内存空间,这样能够有效地避免由于SCST自身限制所导致的内存分配失败情况的出现,由此,进一步提升了SCST读写性能。
参见图2所示,本发明实施例公开了一种具体的SCST读写优化方法,包括如下步骤:
步骤S21:在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则确定该IO请求指令中所请求的IO块的块大小,得到目标IO块大小。
具体的,本实施例中,可以利用scst_alloc_space函数,对上述IO请求指令中所请求的IO块的块大小进行确定。
步骤S22:确定与目标IO块大小相适应的内存空间大小,得到目标内存空间大小。
步骤S23:为该IO请求指令分配与目标内存空间大小相一致的内存空间,并利用该内存空间对该IO请求指令进行响应。
可以理解的是,上述目标IO块大小的具体数值与上述目标内存空间大小的具体数值之间呈正相关关系。另外,上述数据访问命令具体可以为SCSI读命令或SCSI写命令。
进一步的,上述步骤S23中的在利用该内存空间对该IO请求指令进行响应的过程之后,还可以包括对该内存空间进行释放。
本实施例中,在分配内存空间时,具体在scst_alloc_space函数外判断bufflen大小,如果超出SCST的最大限制,则修改scst_cmd的bufflen、lba参数,并保存旧的bufflen和lba参数,后续可以根据旧的bufflen和lba来判断读写是否完成。SCST只需要分配限制内的内存空间。SCST在分配完一次内存空间之后会修改scst cmd的执行状态state,表示下一步要执行的动作。如果SCSI Command为SCSI写命令,则将scst cmd的执行状态state设置为SCST_CMD_STATE_RDY_TO_XFER,如果SCSI Command为SCSI读命令,则将scst cmd的执行状态state设置为SCST_CMD_STATE_TGT_PRE_EXEC,当SCST完成数据传输之后,会将scst cmd的执行状态state设置为SCST_CMD_STATE_PRE_XMIT_RESP,准备回复Initiator端IO的执行状况。
在完成IO传输之后,并在将scst cmd的执行状态state设置为SCST_CMD_STATE_PRE_XMIT_RESP时,通过判断比较新旧bufflen和lba,以确定数据是否传送完毕,如果已经传送完毕,则将scst cmd的执行状态state修改为SCST_CMD_STATE_PRE_XMIT_RESP,否则,将scst cmd的执行状态state修改为SCST_CMD_STATE_PREPARE_SPACE,接着SCST会回到scst_alloc_space函数,再次分配所需要的传送的IO内存。
相应的,本发明实施例还公开了一种SCST读写优化系统,参见图3所示,该系统包括:
内存空间分配模块11,用于在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间;
指令响应模块12,用于利用内存空间分配模块11分配的内存空间对该IO请求指令进行响应;
其中,数据访问命令为SCSI读命令或SCSI写命令。
具体的,上述内存空间分配模块,包括第一确定单元、第二确定单元和分配单元;其中,
第一确定单元,用于在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则确定该IO请求指令中所请求的IO块的块大小,得到目标IO块大小;
第二确定单元,用于确定与目标IO块大小相适应的内存空间大小,得到目标内存空间大小;
分配单元,用于为该IO请求指令分配与目标内存空间大小相一致的内存空间。
其中,上述第一确定单元,具体用于利用scst_alloc_space函数,对该IO请求指令中所请求的IO块的块大小进行确定。
进一步的,本实施例中的SCST读写优化系统,还可以包括:
内存空间释放模块,用于在指令响应模块利用该内存空间对该IO请求指令进行响应的过程之后,对该内存空间进行释放。
可见,本发明在Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应,也即,本发明在对数据访问命令执行的过程中,会为每一次IO传输过程分配相应的内存空间,从而在一次数据访问命令的执行过程中,进行了多次的内存空间分配工作,而不是一次性地为该数据访问命令的执行过程中所有的IO传输过程分配内存空间,这样能够有效地避免由于SCST自身限制所导致的内存分配失败情况的出现,由此,进一步提升了SCST读写性能。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种SCST读写优化方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种SCST读写优化方法,其特征在于,包括:
在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间,然后利用该内存空间对该IO请求指令进行响应;
其中,所述数据访问命令为SCSI读命令或SCSI写命令。
2.根据权利要求1所述的SCST读写优化方法,其特征在于,所述为该IO请求指令分配相应大小的内存空间的过程,包括:
确定该IO请求指令中所请求的IO块的块大小,得到目标IO块大小;
确定与所述目标IO块大小相适应的内存空间大小,得到目标内存空间大小;
为该IO请求指令分配与所述目标内存空间大小相一致的内存空间。
3.根据权利要求2所述的SCST读写优化方法,其特征在于,所述确定该IO请求指令中所请求的IO块的块大小的过程,包括:
利用scst_alloc_space函数,对该IO请求指令中所请求的IO块的块大小进行确定。
4.根据权利要求1至3任一项所述的SCST读写优化方法,其特征在于,所述利用该内存空间对该IO请求指令进行响应的过程之后,还包括:
对该内存空间进行释放。
5.一种SCST读写优化系统,其特征在于,包括:
内存空间分配模块,用于在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则为该IO请求指令分配相应大小的内存空间;
指令响应模块,用于利用所述内存空间分配模块分配的内存空间对该IO请求指令进行响应;
其中,所述数据访问命令为SCSI读命令或SCSI写命令。
6.根据权利要求5所述的SCST读写优化系统,其特征在于,所述内存空间分配模块,包括:
第一确定单元,用于在当前数据访问命令的执行过程中,当Target端获取到Initiator端发送的任一IO请求指令,则确定该IO请求指令中所请求的IO块的块大小,得到目标IO块大小;
第二确定单元,用于确定与所述目标IO块大小相适应的内存空间大小,得到目标内存空间大小;
分配单元,用于为该IO请求指令分配与所述目标内存空间大小相一致的内存空间。
7.根据权利要求6所述的SCST读写优化系统,其特征在于,
所述第一确定单元,具体用于利用scst_alloc_space函数,对该IO请求指令中所请求的IO块的块大小进行确定。
8.根据权利要求5至7任一项所述的SCST读写优化系统,其特征在于,还包括:
内存空间释放模块,用于在所述指令响应模块利用该内存空间对该IO请求指令进行响应的过程之后,对该内存空间进行释放。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710025358.3A CN106776046B (zh) | 2017-01-13 | 2017-01-13 | 一种scst读写优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710025358.3A CN106776046B (zh) | 2017-01-13 | 2017-01-13 | 一种scst读写优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106776046A true CN106776046A (zh) | 2017-05-31 |
CN106776046B CN106776046B (zh) | 2021-06-29 |
Family
ID=58945500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710025358.3A Active CN106776046B (zh) | 2017-01-13 | 2017-01-13 | 一种scst读写优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106776046B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445943A (zh) * | 2018-10-24 | 2019-03-08 | 郑州云海信息技术有限公司 | 内核态系统中i/o栈的内存管理方法、系统及相关装置 |
CN111007987A (zh) * | 2019-11-08 | 2020-04-14 | 苏州浪潮智能科技有限公司 | 一种用于raid io的内存管理方法、系统、终端及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1455334A (zh) * | 2003-05-19 | 2003-11-12 | 清华大学 | 用普通scsi磁盘代替存储光纤网络中光纤磁盘的方法 |
CN101997918A (zh) * | 2010-11-11 | 2011-03-30 | 清华大学 | 异构san环境中的海量存储资源按需分配的实现方法 |
CN103176751A (zh) * | 2013-03-04 | 2013-06-26 | 浪潮电子信息产业股份有限公司 | 一种多种存储协议下的统一服务系统 |
CN103336672A (zh) * | 2013-06-28 | 2013-10-02 | 华为技术有限公司 | 数据读取方法、装置及计算设备 |
WO2016094686A1 (en) * | 2014-12-10 | 2016-06-16 | Alibaba Group Holding Limited | Multi-core processor having cache consistency |
-
2017
- 2017-01-13 CN CN201710025358.3A patent/CN106776046B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1455334A (zh) * | 2003-05-19 | 2003-11-12 | 清华大学 | 用普通scsi磁盘代替存储光纤网络中光纤磁盘的方法 |
CN101997918A (zh) * | 2010-11-11 | 2011-03-30 | 清华大学 | 异构san环境中的海量存储资源按需分配的实现方法 |
CN103176751A (zh) * | 2013-03-04 | 2013-06-26 | 浪潮电子信息产业股份有限公司 | 一种多种存储协议下的统一服务系统 |
CN103336672A (zh) * | 2013-06-28 | 2013-10-02 | 华为技术有限公司 | 数据读取方法、装置及计算设备 |
WO2016094686A1 (en) * | 2014-12-10 | 2016-06-16 | Alibaba Group Holding Limited | Multi-core processor having cache consistency |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445943A (zh) * | 2018-10-24 | 2019-03-08 | 郑州云海信息技术有限公司 | 内核态系统中i/o栈的内存管理方法、系统及相关装置 |
CN111007987A (zh) * | 2019-11-08 | 2020-04-14 | 苏州浪潮智能科技有限公司 | 一种用于raid io的内存管理方法、系统、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106776046B (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10572454B2 (en) | Storage method and apparatus for distributed file system | |
CN100476742C (zh) | 基于对象存储设备的负载平衡方法 | |
CN102713826B (zh) | 经由位图的树表示分配文件存储的方法和设备 | |
US9635123B2 (en) | Computer system, and arrangement of data control method | |
US20180165014A1 (en) | Array controller, solid state disk, and method for controlling solid state disk to write data | |
CN103902467B (zh) | 压缩内存访问控制方法、装置及系统 | |
US8838926B2 (en) | Interacting with data in hidden storage | |
CN110727685B (zh) | 一种基于Cassandra数据库的数据压缩方法、设备以及存储介质 | |
US20080183871A1 (en) | Storage system comprising function for alleviating performance bottleneck | |
CN109582227A (zh) | 固态硬盘写入方法、装置、计算机设备和存储介质 | |
CN107784108A (zh) | 一种数据存储管理方法、装置及设备 | |
CN107656807A (zh) | 一种虚拟资源的自动弹性伸缩方法及装置 | |
CN103902475B (zh) | 一种基于队列管理机制的固态硬盘并行访问方法及装置 | |
CN106776046A (zh) | 一种scst读写优化方法及系统 | |
CN105718474A (zh) | 用于对MySQL数据库的并发操作进行控制的方法及装置 | |
US20150381520A1 (en) | Data set multiplicity change device, server, data set multiplicity change method and computer redable medium | |
CN106844234B (zh) | 数据写入方法及装置、双活系统 | |
CN113065887A (zh) | 资源处理方法、装置、计算机设备和存储介质 | |
US20060143211A1 (en) | Method and system for managing data storage for dynamically changing data area attribute | |
CN105335441B (zh) | 基于局域网的分布式文件系统 | |
CN103078926B (zh) | 分布式存储系统的文件访问方法和装置以及系统 | |
EP4044039A1 (en) | Data access method and apparatus, and storage medium | |
US20170269864A1 (en) | Storage Array Operation Method and Apparatus | |
CN106815250A (zh) | 一种发送数据的方法、数据服务器以及服务器 | |
CN104268231A (zh) | 一种文件访问方法、装置及智能文件系统 |
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 |