CN117111838A - 读写io监测方法、装置、设备及存储介质 - Google Patents

读写io监测方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117111838A
CN117111838A CN202310928350.3A CN202310928350A CN117111838A CN 117111838 A CN117111838 A CN 117111838A CN 202310928350 A CN202310928350 A CN 202310928350A CN 117111838 A CN117111838 A CN 117111838A
Authority
CN
China
Prior art keywords
event
time
entry
timestamp
read
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.)
Pending
Application number
CN202310928350.3A
Other languages
English (en)
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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310928350.3A priority Critical patent/CN117111838A/zh
Publication of CN117111838A publication Critical patent/CN117111838A/zh
Pending legal-status Critical Current

Links

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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0653Monitoring storage devices or systems
    • 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/0656Data buffering arrangements
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供了一种读写IO监测方法、装置、设备及存储介质,该方法包括:读取用户态中处于目标缓冲区的输入输出IO条目,其中,IO条目包括IO事件、IO事件进程号、IO事件时间戳、IO事件类型、IO事件序号,根据IO事件时间戳获取IO事件序号相邻的IO条目间的第一时间,将IO条目和第一时间写入数据库,以使服务端读取数据库数据并进行展示,本发明实施例通过计算出IO事件之间的第一时间,以此确定IO事件的持续时间,再将从用户态缓冲区获取的IO条目和计算出的第一时间一同放入数据库,便于服务端读取和展示,实现了IO信息的实时监控和可视化管理。

Description

读写IO监测方法、装置、设备及存储介质
技术领域
本发明涉及互联网技术领域,特别涉及一种读写IO监测方法、装置、设备及存储介质。
背景技术
在业务系统工作过程中如果出现IO使用率很高,IO响应时间很长等现象,就意味着操作系统出现了IO性能瓶颈,严重影响了业务系统的正常运行。上述瓶颈可能是由于两方面的因素导致,一是业务系统本身出现了性能问题,比如出现大量读写磁盘的进程,导致内核中IO调度的时间过长,从而导致IO的使用率很高。另一方面是由于磁盘本身出现问题,如磁盘老化导致IO读写耗时增加等。
当前主要是通过使用用户态跟踪工具Blktrace对IO在块设备层的行为进行分析来确定IO性能瓶颈的出现原因,其中,Blktrace包括3个部分:Blktrace、Blkparse、Btt,方法包括:通过Blktrace根据用户输入的磁盘设备,以CPU核为对象,收集此磁盘设备上每个IO调度的情况,并将收集的结果保存在二进制文件中,而后通过Blkparse将上述所有二进制文件合并成一个对用户来说并不易读的文件,最后通过Btt对Blkparse生成的不易阅读的文件进行解析,生成IO时延分布图,以此分析IO性能瓶颈的出现原因。
然而,由于Blktrace在获取IO栈信息时,其中间结果以不易读的文件形式出现,若想获取易读信息,需要Blkparse和Btt解析,因此上述方法只适用于一段时间内的IO监测,即Blktrace运行一段时间后停止,此时用Bl kparse和Btt对收集的二进制文件进行解析,但是Blkparse和Btt无法分析实时数据,因此无法实时对系统下的IO栈进行监测。
发明内容
本发明实施例的目的在于提供一种读写IO监测方法、装置、设备及存储介质,解决现有的技术中,通过用户态跟踪工具Blktrace对IO在块设备层的行为进行分析来确定IO性能瓶颈时,用Blkparse和Btt对收集的二进制文件进行解析时,无法实现实时解析,进而导致无法实时对系统下的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信息,包括:
遍历每一中央处理器CPU多个逻辑磁盘;
根据每一所述逻辑磁盘创建对应的线程;
按照预设的静态探测点获取所述线程对应的目标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为本发明实施例提供的一种读写IO监测方法的步骤流程图;
图2是本发明实施例提供的另一种读写IO监测方法的步骤流程图;
图3是本发明实施例提供的另一种读写IO监测方法的步骤流程图;
图4是本发明实施例提供的另一种读写IO监测方法的步骤流程图;
图5为本发明实施例提供的一种读写IO监测装置的结构框图;
图6为本发明实施例提供的一种通信设备的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
为解决上述现有技术中存在的问题,本发明的发明人对现有技术中,使用用户态跟踪工具Blktrace来对存储IO栈进行监测的技术进行深入了解,Blktrace是基于跟踪点机制的,针对linux内核块设备IO的用户态跟踪工具,用来收集读写IO进入块设备层的详细信息,包括进行读写的进程名称、进程号、执行时间、读写的物理块号、块大小等以及存储IO栈落盘过程中的一些事件及事件之间的延迟信息。Blktrace包括3个部分:Blktrace、Blkparse、Btt,如图4所示,Blktrace主要根据用户输入的磁盘设备,以CPU核为对象,收集此磁盘设备上块设备层每个IO调度的情况,并将收集的结果保存在二进制文件中,Blkparse的作用是将所有CPU核心获取的二进制文件合并成一个文件,此时的文件对用户来说并不易读,Btt的作用是将Blkparse生成的不易阅读的文件进行解析,生成用户易读的信息。
然而,上述技术方案中由于Blktrace在获取IO栈信息时,其中间结果以文件的形式出现,若想获取易读信息,需要Blkparse和Btt解析,过程较为复杂繁琐,而且这种方式只适用于一段时间内的IO监测,比如Blktrace运行一段时间后就需要停止运行,用Blkparse和Btt将获取的IO栈信息转化为用户易读的信息,由此导致解析出的信息不是实时分析得到的数据,进而导致无法实时对系统下的IO栈进行监测,基于此本发明实施例提出了一种读写IO监测方法,可以实现对系统下IO进行长时间实时监控以及对系统下IO信息进行可视化管理。
参照图1,示出了本发明实施例提供的一种读写IO监测方法的步骤流程图,所述方法可以包括:
步骤101,读取用户态中处于目标缓冲区的输入输出IO条目,其中,IO条目包括IO事件、IO事件进程号、IO事件时间戳、IO事件类型、IO事件序号。
本发明实施例用户态中处于目标缓冲区的输入输出IO条目是从内核态传输的相关信息,即在用户态使用Ioctl(input/output control),输入输出控制)系统调用打开跟踪功能,而后在内核态,内核使用转发机制将跟踪点的相关信息(IO信息)传输至用户态的目标缓冲区,其中,Ioctl是一个专用于设备输入输出操作的系统调用,该调用传入一个跟设备有关的请求码,该请求码则提供了内核调用权限。
条目指的是按内容分列的细目;条理项目,基本意思为细小事项,本发明实施例中的IO条目指的是将内核态向用户态传输的IO信息放在某个特定的数据结构后,生成的包括多个字段的组合,包括:IO事件、IO事件进程号、IO事件时间戳(IO事件产生的时间)、IO事件类型、IO事件序号,除此之外还包括:IO事件对应的进程或线程id,IO事件产生的设备号(逻辑磁盘),扇区等信息。
需要说明的是,由于操作系统每秒的IO事件非常多,不进行处理会严重占用资源空间,因此在读取用户态缓冲区时,每读取一个IO条目时,进行计数,当计数超过某个阈值时(如10000个IO条目),自动触发清理机制,保持系统存储空间的充足,具体的实现步骤包括:
设置计数器记录IO条目的数量;
在检测到IO条目的数量大于第二阈值的情况下,触发自动清理机制。
除此之外,在触发清理机制后,为了保证清除的是已经展示的数据,而不是获取的最新数据,在将数据放入缓冲区时会按照IO事件的时间信息和先进先出的原则进行读取和清除,具体的步骤包括:
获取IO事件时间戳;
按照IO事件时间戳将IO条目插入队列;
在检测到IO条目的数量大于第二阈值的情况下,按照先进先出的原则删除处于队尾的IO条目。
步骤102,根据IO事件时间戳获取IO事件序号相邻的IO条目间的第一时间。
本发明实施例在将获取的IO信息输入特定的数据结构中,得到IO条目时,还会依据IO信息的发生时间为其进行编号,生成IO事件编号,IO条目中包括IO事件的发生时间但是没有IO事件的持续时间,为了获取这一信息会根据IO事件序号相邻的IO条目间的时间戳来计算第一时间,这个第一时间也可以看做IO事件序号相邻的IO条目时间戳信息较早的IO事件的持续时间。
示例的,序号10的IO事件的时间戳为2023/7/10,13:40:20,序号11的IO事件的时间戳为2023/7/10,13:41:10,序号12的IO事件的时间戳为2023/7/10,13:43:10,此时计算出序号10与序号11的IO事件间的第一时间为50S,序号11与序号12的IO事件间的第二时间为120S,即序号10的IO事件的持续时间是50S,序号11的IO事件的持续时间是120S。
需要说明的是,在读取到IO条目后会按照IO条目的类型将其插入不同的双向链表,因此存在相邻序号的IO条目不在同一双向链表上,因此在计算相邻序号的IO事件之间的第一时间时,需要先确定对应序号的IO条目对应所在的双向链表,而后遍历该双向链表中的每一个IO信息,根据得到的IO信息进行匹配,匹配完成后置位标志位然后将此链表元素向链表尾部的方向移动,便于计算另一个事件之间的时间戳,从而得到剩余事件之间的耗时。
步骤103,将IO条目和第一时间写入数据库,以使服务端读取数据库数据并进行展示。
本发明实施例的目的是为了实现实时的进行读写IO监测,并且将得到的结果进行可视化管理,所以在服务端设置了Web管理模块,用来对IO的监测信息实时进行展示,因此设置了将包含IO信息的IO条目和第一时间写入数据库,用来对系统IO的监测信息进行保存,而且便于服务端进行读取。
需要说明的是,本发明实施例的服务端除了从客户端的数据库读取包括IO信息的数据并进行展示,还可以控制客户端安装监测软件,并基于安装的监测软件读取IO信息,步骤包括:获取客户端主机列表,包括主机名称,主机IP地址,主机用户名,主机用户名密码等信息,并将获取的信息放在队列中;为每一个主机创建一个线程,在线程中读取各个主机信息,并根据主机信息,通过ssh通道去验证当前主机的用户权限,当用户权限验证通过时,发送命令在客户端安装IO监测软件,在主机线程中读取客户端数据库数据,数据库数据包括IO信息(IO从文件到落盘各个阶段的事件,时间戳,IO对应的进程id,IO事件类型,IO各个阶段的耗时,IO的历史统计数据等信息)。
本发明实施例提供的读写IO监测方法,通过读取用户态中处于目标缓冲区的输入输出IO条目,其中,IO条目包括IO事件、IO事件进程号、IO事件时间戳、IO事件类型、IO事件序号,根据IO事件时间戳获取IO事件序号相邻的IO条目间的第一时间,将IO条目和第一时间写入数据库,以使服务端读取数据库数据并进行展示,本发明实施例通过计算出IO事件之间的第一时间,以此确定IO事件的持续时间,再将从用户态缓冲区获取的IO条目和计算出的第一时间一同放入数据库,便于服务端读取和展示,实现了IO信息的实时监控和可视化管理。
参照图2,示出了本发明实施例提供的另一种读写IO监测方法的步骤流程图,应用于基本输入输出系统,具体包括:
步骤201,读取用户态中处于目标缓冲区的输入输出IO条目,其中,IO条目包括IO事件、IO事件进程号、IO事件时间戳、IO事件类型、IO事件序号。
上述步骤201参照前序论述步骤101的内容,本发明在此不再赘述。
步骤202,按照IO事件类型和IO事件序号,将IO条目插入目标双向链表。
本发明实施例在从目标缓冲区读物IO条目后,会将IO条目插入双向链表中,需要说明的是,由于双向链表是按照IO事件类型划分的,所以在插入目标双向链表的时候,需要先根据IO条目中的IO事件类型确定待插入的目标双向链表,而后根据IO事件序号确定插入位置,具体的实现步骤包括:
按照IO事件类型确定待插入的目标双向链表;
按照IO事件序号确定IO条目在目标双向链表中的位置。
由于IO事件序号是按照IO事件的发生时间即IO事件时间戳确定的,时间戳越早序号越小,时间戳越晚序号越大,为了保证得到的IO事件是最新发生的,序号越大排的越靠前。示例的,若IO事件A、IO事件B和IO事件C为同一类型,且IO事件A的时间戳是2023/7/10,13:41:10,IO事件B的时间戳是2023/7/10,13:42:40,IO事件C的时间戳是2023/7/10,13:34:00,那么对应的IO事件C的序号为1,IO事件A的序号为2,IO事件B的序号为3,在双向链表上的排列顺序为IO事件B—IO事件A—IO事件C。按照IO事件类型将IO条目进行分类,减少后续的查找时间,此将最新序号的IO条目插入双向链表的靠前位置,也是便于后续按照规律进行查找,减少时间。
步骤203,获取处于同一双向链表中相邻IO条目间的第二时间。
本发明实施例还会对双向链表中的过期数据进行清理,此时需要计算出同一双向链表中任意相邻IO条目间的第二时间。
步骤204,在检测到第二时间大于第一阈值的情况下,获取相邻IO条目中时间较早的IO条目的第一时间戳。
本发明实施例中的在第一阈值可以通过人为进行设置,可以是20分钟也可以是30分钟,本发明在此不做具体限定。在检测到第二时间大于第一阈值的情况下,则认为处于链表靠后位置的这一元素数据比较旧或者已经匹配过,无需进行计算,因此获取相邻IO条目中时间较早的IO条目的第一时间戳。
示例的,相邻IO条目为IO事件A的时间戳是2023/7/10,13:41:10,IO事件B的时间戳是2023/7/10,13:02:10,第一阈值为30分钟,因为IO事件A和IO事件B的第二时间为39分钟>30分钟,所以此时的第一时间戳是IO事件B的时间戳(2023/7/10,13:02:10)。
步骤205,根据第一时间戳删除处于同一双向链表的第一IO条目。
本发明实施例在获取第一时间戳后,确定第一时间戳对应的IO条目信息已经失效,需要进行清理,同时对于在这一IO条目时间之前的IO条目也可以一并进行处理,具体的实现步骤包括:
获取处于同一双向链表中IO条目的第二时间戳;
从第二时间戳中获取早于第一时间戳的第三时间戳;
删除处于同一双向链表的第三时间戳对应的第一IO条目。
通过去除时间比较久的IO条目或已经匹配过的IO条目,可以减少双向链表的长度,便于在进行遍历匹配查询时,更快的完成遍历,节省时间,同时也避免了无效的IO条目长期占据内存空间。
步骤206,根据IO事件时间戳获取IO事件序号相邻的IO条目间的第一时间。
步骤207,将IO条目和第一时间写入数据库,以使服务端读取数据库数据并进行展示。
上述步骤206-207参照前序论述步骤102-103的内容,本发明在此不再赘述。
参照图3,示出了图3所示的本发明实施例提供的另一种读写IO监测方法的步骤流程图,具体包括:
步骤301,通过预设的静态探测点获取内核的目标IO信息。
本发明实施例是先从内核中获取IO信息而后发送至用户态的目标缓冲区,其中在内核中获取目标IO信息是通过跟踪点机制,即通过预先设置的静态探测点来获取内核的目标IO信息。
需要说明的是,跟踪点机制的信息是通过用户态跟踪工具Blktrace获取的,现有技术的Blktrace的方案中,为系统下的每一个CPU核心创建一个线程用于收集每一个CPU上的数据。本发明实施例中,由于是实时IO监测系统,每一个CPU的线程需要遍历所有的逻辑磁盘,然后去解析采集到的IO数据。考虑系统下逻辑磁盘多的场景和解析数据的时间,可能会导致IO数据的延迟,因此为每一个逻辑磁盘创建一个线程,每个逻辑磁盘的IO数据都在各自的线程下进行处理,如此一来提高了监测工具的效率,具体步骤包括:
遍历每一中央处理器CPU多个逻辑磁盘;
根据每一逻辑磁盘创建对应的线程;
按照预设的静态探测点获取线程对应的目标IO信息。
步骤302,将目标IO信息发送至用户态的目标缓冲区。
本发明实施例中将从内核获取的目标IO信息发送至用户态的目标缓冲区,便于后续用户读取。
除此之外,在将目标IO信息发送至用户态的目标缓冲区之前,还会对客户端的相关环境进行初始化,如解析web端发过来的命令参数,检查环境信息,创建相关数据结构等,为数据采集做准备。
步骤303,读取用户态中处于目标缓冲区的输入输出IO条目,其中,IO条目包括IO事件、IO事件进程号、IO事件时间戳、IO事件类型、IO事件序号。
步骤304,根据IO事件时间戳获取IO事件序号相邻的IO条目间的第一时间。
步骤305,将IO条目和第一时间写入数据库,以使服务端读取数据库数据并进行展示。
上述步骤303-305参照前序论述步骤101-103的内容,本发明在此不再赘述。
参照图5,示出了本发明实施例提供的一种读写IO监测装置的结构示意图,如图5所示,该装置可以包括:
第一读取模块401,用于读取用户态中处于目标缓冲区的输入输出IO条目,其中,IO条目包括IO事件、IO事件进程号、IO事件时间戳、IO事件类型、IO事件序号。
第一获取模块402,用于根据IO事件时间戳获取IO事件序号相邻的IO条目间的第一时间。
展示模块403,用于将IO条目和第一时间写入数据库,以使服务端读取数据库数据并进行展示。
可选的,读写IO监测装置还包括:
插入数据模块,用于按照IO事件类型和IO事件序号,将IO条目插入目标双向链表。
第二获取模块,用于获取处于同一双向链表中相邻IO条目间的第二时间。
第三获取模块,用于在检测到第二时间大于第一阈值的情况下,获取相邻IO条目中时间较早的IO条目的第一时间戳。
删除模块,用于根据第一时间戳删除处于同一双向链表的第一IO条目。
可选的,插入数据模块还包括:
第一确定子模块,用于按照IO事件类型确定待插入的目标双向链表。
第二确定子模块,用于按照IO事件序号确定IO条目在目标双向链表中的位置。
可选的,删除模块还包括:
第一获取子模块,用于获取处于同一双向链表中IO条目的第二时间戳。
第二获取子模块,用于从第二时间戳中获取早于第一时间戳的第三时间戳。
删除子模块,用于删除处于同一双向链表的第三时间戳对应的第一IO条目。
可选的,读写IO监测装置还包括:
设置计数器模块,用于设置计数器记录IO条目的数量。
触发模块,用于在检测到IO条目的数量大于第二阈值的情况下,触发自动清理机制。
第四获取模块,用于通过预设的静态探测点获取内核的目标IO信息。
发送模块,用于将目标IO信息发送至用户态的目标缓冲区。
可选的,第四获取模块还包括:
遍历子模块,用于遍历每一中央处理器CPU多个逻辑磁盘。
创建子模块,用于根据每一逻辑磁盘创建对应的线程。
第三获取子模块,用于按照预设的静态探测点获取线程对应的目标IO信息。
本发明实施例提供的读写IO监测方法,通过读取用户态中处于目标缓冲区的输入输出IO条目,其中,IO条目包括IO事件、IO事件进程号、IO事件时间戳、IO事件类型、IO事件序号,根据IO事件时间戳获取IO事件序号相邻的IO条目间的第一时间,将IO条目和第一时间写入数据库,以使服务端读取数据库数据并进行展示,本发明实施例通过计算出IO事件之间的第一时间,以此确定IO事件的持续时间,再将从用户态缓冲区获取的IO条目和计算出的第一时间一同放入数据库,便于服务端读取和展示,实现了IO信息的实时监控和可视化管理。
本发明实施例还提供了一种通信设备,如图6所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现如下步骤:
读取用户态中处于目标缓冲区的输入输出IO条目,其中,所述IO条目包括IO事件、IO事件进程号、IO事件时间戳、IO事件类型、IO事件序号;
根据所述IO事件时间戳获取所述IO事件序号相邻的IO条目间的第一时间;
将所述IO条目和所述第一时间写入数据库,以使服务端读取所述数据库数据并进行展示。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明还提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述实施例的门禁控制方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其他设备固有相关。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图,或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明的排序设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
需要说明的是,本申请实施例中获取各种数据相关过程,都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。

Claims (10)

1.一种读写IO监测方法,其特征在于,所述方法包括:
读取用户态中处于目标缓冲区的输入输出IO条目,其中,所述IO条目包括IO事件、IO事件进程号、IO事件时间戳、IO事件类型、IO事件序号;
根据所述IO事件时间戳获取所述IO事件序号相邻的IO条目间的第一时间;
将所述IO条目和所述第一时间写入数据库,以使服务端读取所述数据库数据并进行展示。
2.根据权利要求1所述的方法,其特征在于,所述读取用户态中处于目标缓冲区的输入输出IO条目之后,还包括:
按照所述IO事件类型和所述IO事件序号,将所述IO条目插入目标双向链表;
获取处于同一双向链表中相邻IO条目间的第二时间;
在检测到所述第二时间大于第一阈值的情况下,获取所述相邻IO条目中时间较早的IO条目的第一时间戳;
根据所述第一时间戳删除处于同一所述双向链表的第一IO条目。
3.根据权利要求2所述的方法,其特征在于,所述按照所述IO事件类型和所述IO事件序号,将所述IO条目插入目标双向链表,包括:
按照所述IO事件类型确定待插入的目标双向链表;
按照所述IO事件序号确定所述IO条目在所述目标双向链表中的位置。
4.根据权利要求2所述的方法,其特征在于,所述根据所述第一时间戳删除处于同一所述双向链表的第一IO条目,包括:
获取处于同一所述双向链表中IO条目的第二时间戳;
从所述第二时间戳中获取早于所述第一时间戳的第三时间戳;
删除处于同一所述双向链表的所述第三时间戳对应的第一IO条目。
5.根据权利要求1所述的方法,其特征在于,所述读取用户态中处于目标缓冲区的输入输出IO条目之后,还包括:
设置计数器记录所述IO条目的数量;
在检测到所述IO条目的数量大于第二阈值的情况下,触发自动清理机制。
6.根据权利要求1所述的方法,其特征在于,所述读取用户态中处于目标缓冲区的输入输出IO条目之前,还包括:
通过预设的静态探测点获取内核的目标IO信息;
将所述目标IO信息发送至用户态的目标缓冲区。
7.根据权利要求6所述的方法,其特征在于,所述通过预设的静态探测点获取内核的目标IO信息,包括:
遍历每一中央处理器CPU多个逻辑磁盘;
根据每一所述逻辑磁盘创建对应的线程;
按照预设的静态探测点获取所述线程对应的目标IO信息。
8.一种读写IO监测装置,其特征在于,包括:
第一读取模块,用于读取用户态中处于目标缓冲区的输入输出IO条目,其中,所述IO条目包括IO事件、IO事件进程号、IO事件时间戳、IO事件类型、IO事件序号;
第一获取模块,用于根据所述IO事件时间戳获取所述IO事件序号相邻的IO条目间的第一时间;
展示模块,用于将所述IO条目和所述第一时间写入数据库,以使服务端读取所述数据库数据并进行展示。
9.一种通信设备,其特征在于,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;
所述处理器,用于读取存储器中的程序,实现如权利要求1-7任一所述的读写IO监测方法中的步骤。
10.一种可读存储介质,用于存储程序,其特征在于,所述程序被处理器执行时,实现如权利要求1-7任一所述的读写IO监测方法中的步骤。
CN202310928350.3A 2023-07-26 2023-07-26 读写io监测方法、装置、设备及存储介质 Pending CN117111838A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310928350.3A CN117111838A (zh) 2023-07-26 2023-07-26 读写io监测方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310928350.3A CN117111838A (zh) 2023-07-26 2023-07-26 读写io监测方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117111838A true CN117111838A (zh) 2023-11-24

Family

ID=88793827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310928350.3A Pending CN117111838A (zh) 2023-07-26 2023-07-26 读写io监测方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117111838A (zh)

Similar Documents

Publication Publication Date Title
CN107992398B (zh) 一种业务系统的监控方法和监控系统
JP5978401B2 (ja) 分散システムにおいてユーザリクエストの実行を監視するための方法及びシステム
US6944796B2 (en) Method and system to implement a system event log for system manageability
US8141053B2 (en) Call stack sampling using a virtual machine
US20030120980A1 (en) System trace unit
US8275581B2 (en) Managing statistical profile data
US8132170B2 (en) Call stack sampling in a data processing system
CN101997925A (zh) 具有预警功能的服务器监控方法及其系统
US20100017583A1 (en) Call Stack Sampling for a Multi-Processor System
JP2012531642A (ja) 多重仮想マシンのためのサポートを有する、トレース・データの時間ベース・コンテキスト・サンプリング
CN109379305A (zh) 一种数据下发方法、装置、服务器及存储介质
CN102893261B (zh) 空闲转换采样方法及其系统
CN112235262A (zh) 报文的解析方法、装置、电子设备及计算机可读存储介质
CN110597704A (zh) 应用程序的压力测试方法、装置、服务器和介质
CN109542341B (zh) 一种读写io监测方法、装置、终端及计算机可读存储介质
CN109246234B (zh) 一种镜像文件下载方法、装置、电子设备及存储介质
CN110032508B (zh) 功能驱动程序测试方法、装置、终端设备及存储介质
CN111784176A (zh) 一种数据处理方法、装置、服务器及介质
JP2010118072A (ja) トレース処理方法、プログラム及び装置
CN117111838A (zh) 读写io监测方法、装置、设备及存储介质
CN110650126A (zh) 一种防网站流量攻击方法、装置以及智能终端、存储介质
CN112615857B (zh) 网络数据处理方法、装置与系统
CN113850664A (zh) 一种数据异常检测方法及数据上报服务
US9317262B2 (en) Identification of code synchronization points
CN109388542B (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