CN112558858B - 基于动态io感知的超大规模应用外存访问特征获取方法 - Google Patents
基于动态io感知的超大规模应用外存访问特征获取方法 Download PDFInfo
- Publication number
- CN112558858B CN112558858B CN201910852999.5A CN201910852999A CN112558858B CN 112558858 B CN112558858 B CN 112558858B CN 201910852999 A CN201910852999 A CN 201910852999A CN 112558858 B CN112558858 B CN 112558858B
- Authority
- CN
- China
- Prior art keywords
- data
- calling
- request
- file system
- application
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于动态IO感知的超大规模应用外存访问特征获取方法,包括以下步骤:在应用程序中,调用数据操作请求;将数据操作请求中所有的IO调用请求,通过虚拟文件系统模块提交到用户空间文件系统;用户空间文件系统将接收到的IO调用请求投递到用户空间,IO负载监控模块对IO调用请求进行解析,获得此IO调用请求的目标操作地址,并判断该目标操作地址是否位于应用程序所操作的目录下;客户端将IO调用请求传送到服务端;IO负载监控模块收集并记录在课题从开始到结束完整周期内的IO操作信息。本发明采用与目录相关的采集数据集,与应用的代码开发无关,不影响应用的运行,不影响操作系统内核的稳定运行,可缩短应用的运行时间,提高高性能计算机的运行效率。
Description
技术领域
本发明涉及一种基于动态IO感知的超大规模应用外存访问特征获取方法,属于计算机技术领域。
背景技术
传统的存储系统会通过一些固定的、静态的策略来优化IO性能,并不关注对自身所处的应用环境和负载特征;在实际应用过程中,不同的作业施加到存储系统的IO负载往往呈现出不同的模式和特征;而且在同一应用环境下,随着作业运行时间和规模的变化,IO负载模式和特征也会不断变化。存储系统中很多部件的性能对于负载特征是非常敏感,因而感知负载的变化并有针对性的进行资源调节,能使存储资源分配更加合理,提高存储系统的性能和利用率。
现有技术种收集数据访问存储的模式,都是基于文件系统本身的操作进统计分析,一般是采集整个文件系统的所有元数据操作的频次,采集数据读写频次和每次读写的数据流量,这些数据是整个计算机中系统中所有应用的操作合集,只能反映当前系统中整体的数据存储操作的情况,无法区分不同应用之间的数据特征,更不能细分同一应用内不同类型的文件操作,无法对应用的数据访问模式进行描述。
对于需要对应用的数据访问特征进行跟踪采集,目前一般方法是从应用的源代码本身入手,方法一是研究应用的IO操作流程进行分析,方法二是修改源代码,在所有IO操作前进行记录IO操作的类型和数据量,对应用开发者要求较高,而且是每一个应用都需要重新分析统计,需要从业者投入大量的人力。
在并行文件系统中如何跟踪应用IO的数据访问特征,一般是从两个方向入手,一是从应用作业本身入手,需要研究作业本身的IO操作,或者记录所有IO操作,对作业开发者要求较高;二是从存储系统入手,但存储系统中追踪记录的是整个系统中是IO流量,难以做到针对作业。
运行在高性能计算机上的应用是多是模拟各种科学实验,如天气预报,基因模拟等等,应用需要进行复杂的科学运算,同时离不开数据的存储,读写原始数据,中间数据迭代以及结果数据;这些数据的读写都是在并行文件系统上进行的,如果数据读写模式不佳,抑或是与并行文件系统的特征不符合,数据读写在应用运行期间占用大量的时间,严重降低高性能计算机的利用率。
因此,如何建立一种通用于追踪大规模系统中应用作业IO访问特征的方法,成为本领域技术人员努力的方向。
发明内容
本发明的目的是提供一种基于动态IO感知的超大规模应用外存访问特征获取方法,该基于动态IO感知的超大规模应用外存访问特征获取方法采用与目录相关的采集数据集,与应用的代码开发无关,不影响应用的运行,不影响操作系统内核的稳定运行,可缩短应用的运行时间,提高高性能计算机的运行效率。
为达到上述目的,本发明采用的技术方案是:一种基于动态IO感知的超大规模应用外存访问特征获取方法,基于一模块化堆栈式架构,此架构包括以下模块:
虚拟文件系统模块,作为linux文件系统对外的接口,用于采用标准unix系统调用读写位于不同物理介质上的不同文件系统,使得IO调用操作不需要关心底层的文件系统和存储介质;
数据分布/性能优化模块,用于根据文件系统的需求配置,进行数据分布组合和性能优化;
Posix模块,用于定义操作系统为应用程序提供的接口标准,实现同一功能在不同操作系统不同核心的统一接口和标准;
通过网络进行连接的客户端和服务端,客户端通过网络将数据请求传递到服务端,服务端响应数据请求,并将请求数据反馈回客户端;
还包括被配置于客户端的IO负载监控模块,用于解析来自虚拟文件系统传递的各种IO调用请求,并判断IO调用操作是否是与制定目录相关的操作,如果是,记录这些操作的时间和数据大小的元数据信息;
所述访问特征获取方法包括以下步骤:
S1、在应用程序中,调用数据操作请求,进行创建文件、读写文件或删除文件的操作;
S2、将数据操作请求中所有的IO调用请求,通过虚拟文件系统模块提交到用户空间文件系统;
S3、用户空间文件系统将接收到的IO调用请求投递到用户空间, IO负载监控模块对IO调用请求进行解析,获得此IO调用请求的目标操作地址,并判断该目标操作地址是否位于应用程序的制定目录下,如果是,则采集这些IO调用请求的元数据信息并记录,如果不是,则直接往下层投递此IO调用请求;
S4、客户端通过网络将IO调用请求传送到服务端;
S5、服务端依次将来自客户端的IO调用请求进行投递,并最终达到设备层;
S6、服务端将设备层反馈的应答传递给客户端;
S7、客户端将设备层反馈的应答数据传递到应用层,完成一次完整的IO调用操作;
S8、IO负载监控模块收集并记录在课题从开始到结束完整周期内的IO调用请求的元数据信息,作为对程序IO行为进行分析的基础。
上述技术方案中进一步改进的方案如下:
1. 上述方案中,所述IO调用操作包括open操作、read操作、write操作、close操作、stat操作、unlink操作、opendir操作和closedir操作。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明基于动态IO感知的超大规模应用外存访问特征获取方法,其提供一种通用的数据采集方法,采用与目录相关的采集数据集,与应用的代码开发无关,不影响应用的运行,且采用基于用户层的模块开发技术,不影响操作系统内核的稳定运行,同时能带来开发上的便利,系统稳定,对存储系统整体运行效率影响低,同时其产生的日志信息对应用的开发优化具有积极意义,可缩短应用的运行时间,提高高性能计算机的运行效率。
附图说明
附图1为本发明数据流逻辑示意图;
附图2为本发明模块化堆栈式架构示意图;
附图3为本发明数据流示意图;
附图4为本发明方法局部流程示意图;
附图5为本发明超大规模应用外存访问特征获取方法流程图。
具体实施方式
实施例:一种基于动态IO感知的超大规模应用外存访问特征获取方法,基于大规模异构系统,基于一模块化堆栈式架构,此架构包括以下模块:
虚拟文件系统模块,作为linux文件系统对外的接口,用于采用标准unix系统调用读写位于不同物理介质上的不同文件系统,使得IO调用操作不需要关心底层的文件系统和存储介质;
数据分布/性能优化模块,用于根据文件系统的需求配置,进行数据分布组合和性能优化;
Posix模块,用于定义操作系统为应用程序提供的接口标准,实现同一功能在不同操作系统不同核心的统一接口和标准;
通过网络进行连接的客户端和服务端,客户端通过网络将数据请求传递到服务端,服务端响应数据请求,并将请求数据反馈回客户端;
还包括被配置于客户端的IO负载监控模块,用于解析来自虚拟文件系统传递的各种IO调用请求,并判断IO调用操作是否是与制定目录相关的操作,如果是,记录这些操作的时间和数据大小的元数据信息;
所述访问特征获取方法包括以下步骤:
S1、在应用程序中,调用数据操作请求,进行创建文件、读写文件或删除文件的操作;
S2、将数据操作请求中所有的IO调用请求,通过虚拟文件系统模块提交到用户空间文件系统;
S3、用户空间文件系统将接收到的IO调用请求投递到用户空间, IO负载监控模块对IO调用请求进行解析,获得此IO调用请求的目标操作地址,并判断该目标操作地址是否位于应用程序的制定目录下,如果是,则采集这些IO调用请求的元数据信息并记录,如果不是,则直接往下层投递此IO调用请求;
fuse用户空间文件系统是一个通用公开的用户空间的文件系统框架,可以在用户空间实现文件的操作,用户空间是相对于内核空间,是操作系统中的虚拟内存划分,核心相关操作比如驱动和文件系统都是在内核空间运行;
在服务器上,无论是客户端和服务端都有用户空间和内核空间;用户空间相对于内核空间,是操作系统中的虚拟内存划分,是计算机操作系统的虚拟内存中划分给用户程序使用的空间,编程比较简单, fuse提供接口,使得可以在用户空间实现文件系统;核心相关操作比如驱动和文件系统都是在内核空间运行,是受保护的空间,编程难度大。
S4、客户端通过网络将IO调用请求传送到服务端;
S5、服务端依次将来自客户端的IO调用请求进行投递,并最终达到设备层;
S6、服务端将设备层反馈的应答传递给客户端;
S7、客户端将设备层反馈的应答数据传递到应用层,完成一次完整的IO调用操作;
S8、IO负载监控模块收集并记录在课题从开始到结束完整周期内的IO调用请求的元数据信息,作为对程序IO行为进行分析的基础。
上述IO调用操作包括open操作、read操作、write操作、close操作、stat操作、unlink操作、opendir操作和closedir操作。
实施例进一步解释如下:
本发明的基本构思是在大规模存储系统中,基于作业的工作目录进行单独输出跟踪,以轻量级文件系统的基础协议,输出作业工作目录为服务端,增加IO操作统计的模块进行跟踪,采集数据感知负载变化。
在并行文件系统中增加基于作业目录的数据特征专用收集功能模块,增加此功能模块后,因为应用的作业所产生的数据读写都是在特定目录下进行的,针对目录的信息采集,限定了数据产生的来源,针对目录的数据操作信息的收集,即可认定是是在运行在此目录下的应用的数据行为的采集,这些信息能在不修改应用源代码的前提下,采集到作业的数据访问行为,提取应用的数据访问特征信息;以目录为监测单元,针对需要监控的目录进行重新输出,避免了跟踪记录整个存储系统的IO操作而无法精确定位IO操作源的情况,也无需跟踪作业,对作业中IO操作进行分析。
在大规模存储系统中,物理组成上可以划分为三部分,客户端、网络和数据服务器,数据的流向都是从客户端发起请求,通过网络将请求传输到服务端,服务端解析请求并响应请求,并将应答数据通过网络传递给客户端。
在大规模存储系统中,逻辑视图是基于POSIX语义的树状目录层次结构,存储系统在客户端上的挂载点是树状目录层次组成的根,每一个目录下的子目录是树枝,并以此逐步分层,文件数据是叶子节点,所有的目录和数据文件通过特定的数据结构进行关联,并将其描述为文件存储的逻辑视图。
本方法借鉴了GNU/Hurd微内核的虚拟文件系统设计,把对外部系统的访问转换成对目标系统的适当调用。采用轻量级设计,最小限度影响文件正常读写,系统采用模块化堆栈式的架构设计,借助这种良好定义的接口,高效简便地扩展文件系统的功能。服务端与客户端模块接口是兼容的,每个模块都是动态库,运行时根据配置动态加载。每同一个模块可以同时在服务端和客户端加载。每个模块实现特定基本功能,所有模块通过堆栈式的组合来实现所需的功能。模块化和堆栈式的架构设计,极大降低了系统设计复杂性,简化了系统的实现、升级以及系统维护。
本方法采用以上思想,增加一个特定模块,用于基于指定目录的数据访问行为采集模式,在存储系统运行时根据配置动态加载。数据流的逻辑视图如图1所示。
本方法的数据流如图2所示,监控目录可以为任意文件系统输出,可以是本地文件系统,也可以是分布式文件系统的客户端。
对于数据,最重要、最基础的就是需要在文件系统中进行打开(文件的定位)和创建文件以及文件数据的读写,文件系统中所有的文件和目录(也是文件,是目录文件)都可以通过目录树进行定位,通过目录树,可以获得文件所在目录的上级目录,读上级目录的内容就可以获得文件的inode号和文件名字。根据文件的inode号,就可以获得文件的元数据信息,包括文件的类型、创建修改时间、文件属主大小等属性信息。
基于以上特征,所有的数据操作都是基于文件存放的逻辑位置进行的,每一个应用的课题都会存储在特定的目录下,那么对这个确定的目录进行文件常见操作的记录跟踪就可以实现对这个应用作业的IO行为的记录,这些操作包括open,read,write,close,stat,unlink,opendir,closedir等,其中write和read需要记录操作的数据量。以上就是这个方法中新增模块的主要功能。
在本方法中,系统使用模块化和堆栈式的架构设计,数据操作需要与内核进行交互,借助fuse实现标准文件接口,在分布式并行文件系统的数据操作过程中,在获取到对应的定位后,把数据往物理存储位置前进行解析,如果是所制定目录下的操作,那么记录操作信息,如果不是,那么忽略,直接将请求投递给下一层的数据处理即可,减少数据监控的范围,最小限度影响文件系统的操作性能和带宽。
上述流程中,对数据文件进行判断,并记录确属指定的监控目录下的数据,并采集记录信息就是本方法中新增的专用收集负载的模块,因为采用了类似glusterfs模块化的组件,模块具有良好定义的内部结构,包括结构体和接口函数原型定义。因此在模块中只需要遵循函数原型定义,支持并统计相关IO操作,对于其他操作可以采用默认定义方式。具体而言,专门定义一个op操作日志,记录作业文件常见操作open,read,write,close,stat,unlink,opendir,closedir等,对于write和read并记录数据量。主要操作如图3所示,这些数据都被记录到log文件里,以便分析作业的IO行为和模式,从而为作业更合理地分配存储资源。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
并行文件系统:支持数据分散存储和多客户端并发访问的分布式文件系统
作业:高性能计算机中任务运行的基本单位,一个运行的作业由多个并发的进程组成。
IO:对存储进行读写操作。
文件元数据:管理文件的命名空间的数据,如文件名、访问权限、访问时间、数据布局等。
文件数据对象:存储文件内容的数据,在并行文件系统中,通常分散存储在多个服务器上。
数据布局:存储在文件元数据中,标识文件对象数据的存储位置。
采用上述基于动态IO感知的超大规模应用外存访问特征获取方法时,其提供一种通用的数据采集方法,采用与目录相关的采集数据集,与应用的代码开发无关,不影响应用的运行,且采用基于用户层的模块开发技术,不影响操作系统内核的稳定运行,同时能带来开发上的便利,系统稳定,对存储系统整体运行效率影响低,同时其产生的日志信息对应用的开发优化具有积极意义,可缩短应用的运行时间,提高高性能计算机的运行效率。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (2)
1.一种基于动态IO感知的超大规模应用外存访问特征获取方法,其特征在于:基于一模块化堆栈式架构,此架构包括以下模块:
虚拟文件系统模块,作为linux文件系统对外的接口,用于采用标准unix系统调用读写位于不同物理介质上的不同文件系统,使得IO调用操作不需要关心底层的文件系统和存储介质;
数据分布/性能优化模块,用于根据文件系统的需求配置,进行数据分布组合和性能优化;
Posix模块,用于定义操作系统为应用程序提供的接口标准,实现同一功能在不同操作系统不同核心的统一接口和标准;
通过网络进行连接的客户端和服务端,客户端通过网络将数据请求传递到服务端,服务端响应数据请求,并将请求数据反馈回客户端;
还包括被配置于客户端的IO负载监控模块,用于解析来自虚拟文件系统传递的各种IO调用请求,并判断IO调用操作是否是与制定目录相关的操作,如果是,记录这些操作的时间和数据大小的元数据信息;
所述访问特征获取方法包括以下步骤:
S1、在应用程序中,调用数据操作请求,进行创建文件、读写文件或删除文件的操作;
S2、将数据操作请求中所有的IO调用请求,通过虚拟文件系统模块提交到用户空间文件系统;
S3、用户空间文件系统将接收到的IO调用请求投递到用户空间, IO负载监控模块对IO调用请求进行解析,获得此IO调用请求的目标操作地址,并判断该目标操作地址是否位于应用程序的制定目录下,如果是,则采集这些IO调用请求的元数据信息并记录,如果不是,则直接往下层投递此IO调用请求;
S4、客户端通过网络将IO调用请求传送到服务端;
S5、服务端依次将来自客户端的IO调用请求进行投递,并最终达到设备层;
S6、服务端将设备层反馈的应答传递给客户端;
S7、客户端将设备层反馈的应答数据传递到应用层,完成一次完整的IO调用操作;
S8、IO负载监控模块收集并记录从开始到结束完整周期内的IO调用请求的元数据信息,作为对程序IO行为进行分析的基础。
2.根据权利要求1所述的基于动态IO感知的超大规模应用外存访问特征获取方法,其特征在于:所述IO调用操作包括open操作、read操作、write操作、close操作、stat操作、unlink操作、opendir操作和closedir操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910852999.5A CN112558858B (zh) | 2019-09-10 | 2019-09-10 | 基于动态io感知的超大规模应用外存访问特征获取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910852999.5A CN112558858B (zh) | 2019-09-10 | 2019-09-10 | 基于动态io感知的超大规模应用外存访问特征获取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112558858A CN112558858A (zh) | 2021-03-26 |
CN112558858B true CN112558858B (zh) | 2022-11-15 |
Family
ID=75028806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910852999.5A Active CN112558858B (zh) | 2019-09-10 | 2019-09-10 | 基于动态io感知的超大规模应用外存访问特征获取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112558858B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166508B (zh) * | 2023-04-18 | 2023-07-07 | 天津市天河计算机技术有限公司 | Io数据分析方法、装置、设备、存储介质及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216850A (zh) * | 2008-01-11 | 2008-07-09 | 清华大学 | 文件系统访问记录的动态采集方法 |
CN106095817A (zh) * | 2016-06-01 | 2016-11-09 | 常熟理工学院 | 基于微内核的可扩展文件系统及文件访问方法 |
-
2019
- 2019-09-10 CN CN201910852999.5A patent/CN112558858B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216850A (zh) * | 2008-01-11 | 2008-07-09 | 清华大学 | 文件系统访问记录的动态采集方法 |
CN106095817A (zh) * | 2016-06-01 | 2016-11-09 | 常熟理工学院 | 基于微内核的可扩展文件系统及文件访问方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112558858A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100565510C (zh) | 数据访问层类生成器 | |
Frings et al. | Scalable massively parallel I/O to task-local files | |
US20030028555A1 (en) | Database migration | |
CN101271475B (zh) | 一种商业智能系统 | |
CN108536761A (zh) | 报表数据查询方法及服务器 | |
CN105808428A (zh) | 一种对分布式文件系统进行统一性能测试的方法 | |
US20120232934A1 (en) | Automated insurance policy form generation and completion | |
CA2733857A1 (en) | Automated insurance policy form generation and completion | |
CN102289513A (zh) | 获取虚拟机内部文件的方法及系统 | |
CN101169711A (zh) | 数据转换系统及方法 | |
CN103098048A (zh) | Sql枚举器 | |
Abbani et al. | A distributed reconfigurable active SSD platform for data intensive applications | |
CN112558858B (zh) | 基于动态io感知的超大规模应用外存访问特征获取方法 | |
Lan et al. | A lightweight time series main-memory database for IoT real-time services | |
Liu et al. | Using provenance to efficiently improve metadata searching performance in storage systems | |
WO2007038408A2 (en) | Metadata-based schema generator | |
CN112540954A (zh) | 以目录单位的多级存储构建与在线迁移方法 | |
Lian et al. | Sql or nosql? which is the best choice for storing big spatio-temporal climate data? | |
CN104717091A (zh) | 服务器品质验证方法及其系统 | |
CN113722296A (zh) | 一种农业信息处理方法、装置、电子设备及存储介质 | |
CN112445660B (zh) | 针对共享存储阵列性能均衡性问题的测试方法 | |
No et al. | High-performance scientific data management system | |
Liao et al. | Optimizing data query performance of Bi-cluster for large-scale scientific data in supercomputers | |
Park et al. | KV-CSD: A Hardware-Accelerated Key-Value Store for Data-Intensive Applications | |
Sturtevant et al. | PDS/PIO: Lightweight libraries for collective parallel I/O |
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 |