信息处理方法、存储设备及存储介质与流程

文档序号:13421232阅读:159来源:国知局
信息处理方法、存储设备及存储介质与流程

本发明涉及通信领域的同步技术,尤其涉及一种信息处理方法、存储设备及存储介质。



背景技术:

在现有技术中在对磁盘进行监控时,会对每一块磁盘进行输入输出(inputoutput,io)请求进行统计,并将统计结合保存至文件中。当需要监控某块磁盘每秒处理的请求次数(inputoutputpersecond,iops)时,读出前一秒的累计次数和后一秒累积次数相减,就得到磁盘的iops。

但是目前的磁盘的读写次数都很高,当系统异常时,仅基于iops是无法精确定位出异常的原因。



技术实现要素:

有鉴于此,本发明实施例期望提供一种信息处理方法、存储设备及存储介质,至少部分解决上述无法精确定位异常的问题。

为达到上述目的,本发明的技术方案是这样实现的:

第一方面,本发明实施例提供一种信息处理方法,包括:

记录触发磁盘的io请求的进程;

根据记录的结果及所述io请求的响应状况,生成所述进程触发的io请求的请求状态信息。

可选地,所述根据记录的结果及所述io请求的响应状况,生成所述进程发起的io请求的请求状态信息,包括:

文件系统将进程标识写入bio的内存页,所述进程标识为触发磁盘的io请求的进程的标识信息;

块设备驱动读取所述bio,并根据所述bio向磁盘发送所述io请求;

当所述块设备驱动接收到所述io请求的响应信息时,对所述进程触发的io请求数加1。

可选地,所述块设备驱动根据读取的所述bio,对第一预定时间内的对同一磁盘的相邻存储空间的同一类所述bio进行合并,生成一个所述io请求;

所述当所述块设备驱动接收到所述io请求的响应信息时,对所述进程触发的io请求加1,包括以下至少之一:

若合并的所述bio均为同一个进程触发的,则在接收到所述io请求的响应信息时,对所述程触发的io请求数加1;

若合并的所述bio为不同进程触发的,则在接收到所述io请求的响应信息时,分别对触发所述io请求的所有进程的io请求数加1。

可选地,所述方法还包括:

当满足预定条件时,根据进程的io请求的请求状态信息选择出目标进程;

对所述目标进程执行预定操作。

可选地,所述当满足预定条件时,根据进程的io请求的请求状态信息选择出目标进程,包括:

当满足所述预定条件时,根据进程的io请求的频次,选择出频次大于预设阈值的目标进程。

可选地,所述对所述目标进程执行预定操作,包括以下至少之一:

中止所述目标进程;

关闭所述目标进程;

确定所述目标进程对应的应用程序,对所述应用程序进行优化或向所述应用程序的应用服务器上报异常信息。

第二方面,本发明实施例提供一种存储设备,包括:

记录单元,用于记录触发磁盘的出io请求的进程;

生成单元,用于根据记录的结果及所述io请求的响应状况,生成所述进程触发的io请求的请求状态信息。

可选地,所述生成单元,用于利用文件系统将进程标识写入bio的内存页,所述进程标识为触发磁盘的io请求的进程的标识信息;利用块设备驱动读取所述bio,并根据所述bio向磁盘发送所述io请求;并当所述块设备驱动接收到所述io请求的响应信息时,对所述进程触发的io请求数加1。

可选地,所述存储设备还包括:

合并单元,用于利用所述块设备驱动根据读取的所述bio,对第一预定时间内的对同一磁盘的相邻存储空间的同一类所述bio进行合并,生成一个所述io请求;

所述生成单元,具体用于执行以下至少之一:若合并的所述bio均为同一个进程触发的,则在接收到所述io请求的响应信息时,对所述程触发的io请求数加1;若合并的所述bio为不同进程触发的,则在接收到所述io请求的响应信息时,分别对触发所述io请求的所有进程的io请求数加1。

可选地,所述存储设备还包括:

选择单元,用于当满足预定条件时,根据进程的io请求的请求状态信息选择出目标进程;

执行单元,用于对所述目标进程执行预定操作。

可选地,所述选择单元,具体用于当满足所述预定条件时,根据进程的io请求的频次,选择出频次大于预设阈值的目标进程。

可选地,所述执行单元,具体用于执行以下之一:

中止所述目标进程;

关闭所述目标进程;

确定所述目标进程对应的应用程序,对所述应用程序进行优化或向所述应用程序的应用服务器上报异常信息。

第三方面,本发明实施例提供一种存储设备,包括:存储器、处理器及存储在所述收发器上并由所述处理器执行的计算机程序;

所述处理器,分别与所述存储器连接,用于通过所述计算机程序的执行,以控制所述收发器的信息收发及所述存储器的信息存储,并实现前述一个或多个技术方案提供的信息处理方法。

第四方面,本发明实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序;所述计算机程序被执行后,能够并实现前述一个或多个技术方案提供的信息处理方法。

本发明实施例提供的信息处理方法、存储设备及存储介质,存储设备会记录磁盘的io请求的进程,然后根据记录的结果生成io请求的请求状态信息,这样的话,若磁盘的读写出现异常时,则可以根据请求状态信息进行基于进程粒度的异常定位,可以确定出导致磁盘读写异常的异常进程。显然,通过本发明实施例提供的信息处理方法,为精确定位磁盘的读写异常提供的数据支撑,同时为优化磁盘的读写请求的响应也提供的信息数据支撑。

附图说明

图1为本发明实施例提供的第一种信息处理方法的流程示意图;

图2为本发明实施例提供的第二种信息处理方法的流程示意图;

图3为本发明实施例提供的一种存储设备的结构示意图;

图4为本发明实施例提供的另一种存储设备的结构示意图;

图5为本发明实施例提供的第三种信息处理方法的流程示意图;

图6为本发明实施例提供的一种pid的数据结构示意图;

图7为本发明实施例提供的一种读操作或写操作的响应示意图;

图8为本发明实施例提供的一种块设备读写底层磁盘并构建pid的示意图。

具体实施方式

以下结合说明书附图及具体实施例对本发明的技术方案做进一步的详细阐述。

如图1所示,本实施例提供一种信息处理方法,包括:

步骤s110:记录触发磁盘的io请求的进程;

步骤s120:根据记录的结果及所述io请求的响应状况,生成所述进程触发的io请求的请求状态信息。

在本实施例中所述信息处理方法可为:应用于处理器中的信息处理方法。

在步骤s110中会记录触发磁盘io请求的进程,例如,记录触发一个io请求的进程的进程号或进程名称等进程标识,或者,修改对应进程的io请求的数目等。

在步骤s120中会根据各个io请求的响应状况信息,生成进程粒度的请求状态信息。所述请求状态信息可包括:单位时间内进程触发io请求的个数,已响应的io请求的个数、待响应的io请求的个数等相关信息中的一个或多个。在还有一些实施例中,所述请求状况信息还可包括:单个io请求的响应时长,若单个io请求的响应时长过大,可能就出现了卡死现象。

在本实施例中,通过记录触发io请求的进程的进程标识等相关信息,同时请求状况信息的生成,方便在系统出现异常时,定位出导致磁盘读写异常的进程,从而可以从进程层面进行异常处理,例如,可以通过关闭导致磁盘读写异常的异常进程来实现异常处理,而无需基于ipos进行异常定位,无法定位到进程程度,需要关闭所有当前运行的进程导致的异常处理损耗大等问题,从而提升了异常的精准度,减少了磁盘读写的异常处理损耗。

可选地,如图2所示,所述步骤s120可包括:

步骤s121:文件系统将进程标识写入bio的内存页,所述进程标识为触发磁盘的io请求的进程的标识信息;

步骤s122:块设备驱动读取所述bio,并根据所述bio向磁盘发送所述io请求;

步骤s123:当所述块设备驱动接收到所述io请求的响应信息时,对所述进程触发的io请求数加1。

在本实施例中,所述文件系统又可以称为文件管理系统,是存储设备运行的操作系统的一个子系统。所述文件系统主要用于明确写入数据的磁盘、存盘数据的存储的结构等与磁盘存储相关的管理和控制。

在本实施例中文件系统会将进程标识写入bio的内存页。所述bio为beforeinoffice的缩写,是一种记录磁盘读写相关的数据结构。在一些实施例中,记录所述进程标识的不限于bio。在本实施例中将进程标识写入到bio的内存页,一方面实现了请求状态信息的生成,另一方面直接写入内存页,方便处理器进行读取。

块设备是io设备中的一类,是将信息存储在固定容量的存储块,每个存储块都有对应了一个存储区域,有专门分配的存储地址。块设备驱动为驱动磁盘进行数据读写的驱动器或驱动模组。

在本实施例中,块设备驱动将根据bio的内存页,发起io请求,该io请求被发送到对应的块设备之后,块设备基于所述io请求进行读操作和/或写操作。在完成读写之后,对应的块设备会向块设备驱动返回所述响应信息,此时,所述块设备驱动可以根据所述响应信息,对进程触发的io请求数执行加1操作,从而实现对一个进程所触发的io请求数进行记录,从而获得前述的请求状况信息的生成。

进一步地,所述方法还包括:

所述块设备驱动根据读取的所述bio,对第一预定时间内的对同一磁盘的相邻存储空间的同一类所述bio进行合并,生成一个所述io请求。在本实施例中,例如,对同一磁盘的相邻存储空间的写操作的bio进行合并处理,例如,将对同一磁盘的相邻存储空间的读操作的bios进行合并处理。

所述步骤s123可包括以下至少之一:

若合并的所述bio均为同一个进程触发的,则在接收到所述io请求的响应信息时,对所述程触发的io请求数加1;

若合并的所述bio为不同进程触发的,则在接收到所述io请求的响应信息时,分别对触发所述io请求的所有进程的io请求数加1。

在本实施例中若对同一个磁盘的连续存储区域的bio是同一进程处理的,则合并io请求之后,基于合并的io请求进行对应进程触发的io请求的个数进行统计。

若虽然是对同一个磁盘的连续区域的bio,但是触发的进程是不同的。在本实施例中,虽然执行合并的io请求,但是会对触发该io请求的进程分别进行触发io请求的更新。

可选地,所述方法还包括:

当满足预定条件时,根据进程的io请求的请求状态信息选择出目标进程;

对所述目标进程执行预定操作。

在本实施例中,所述满足预定条件,可为操作系统检测到异常时,或者,接收到预定操作时,根据进程的io请求的请求状态信息选择目标进程。然后对目标进程执行预定操作。这里的预定操作包括但不限于,关闭操作、修订该进程的代码。

在一些实施例中,所述当满足预定条件时,根据进程的io请求的请求状态信息选择出目标进程,包括:

当满足所述预定条件时,根据进程的io请求的频次,选择出频次大于预设阈值的目标进程。

在本实施例中,根据io请求的频次,选择出频次大于预设阈值的目标进程,这里的目标进程就可能是导致磁盘读写先入死循环或导致磁盘读写响应速度慢的进程。

所述预设阈值可为预先设置的值,可以为基于统计数据和/或基于仿真得到的值。

可选地,所述对所述目标进程执行预定操作,包括以下至少之一:

中止所述目标进程;

关闭所述目标进程;

确定所述目标进程对应的应用程序,对所述应用程序进行优化或向所述应用程序的应用服务器上报异常信息。

在本实施例中所述中止所述目标进程可为暂时停止所述目标进程的执行,这样的话,暂时停止响应所述目标进程触发的io请求的响应,则设备可以腾出时间来响应频次低的进程触发的io请求,这样可以至少不会因为高频次触发io请求的进程导致整体的拖慢磁盘的读写速度。

在一些实施例中,在中止所述目标进程之后,所述方法还包括:

统计磁盘的读写频次;

当磁盘的读写频次低于特定值,

恢复目标进程的执行,这样的话,实现了在时间维度上的磁盘的读写负荷的均衡。

所述关闭所述目标进程,可为直接关闭所述目标进程的执行,显然不会因为目标进程触发大量的io请求导致磁盘长时间处于响应速率慢和/或负载高的状况。

在一些实施例中,所述方法还包括:

在关闭所述目标进程之前,所述方法还包括:保存所述目标进程的执行状态信息,所述执行状态信息可包括:已执行结果;后续需要重新启动一个与所述目标进程对应的新进程时,可以根据所述执行状态信息,控制重新启动的进程的后续执行,至少可以减少已获得执行结果的重复执行。在重新启动所述进程时,可以在所述磁盘的整体读写负载低于特定之后,重新启动特定的进程。

若来自某些应用程序的进程反复触发大量的io请求,这个应用程序可能自身存储代码问题,或者,自身就是病毒或木马代码,为了减少应用程序的代码本身导致的问题,在本实施例中会确定出目标进程对应的应用程序,对应用程序进行优化处理,或者向该应用程序的应用服务器上报异常信息,方便对应用程序的追踪和优化。

如图3所示,本发明实施例提供一种存储设备,包括:

记录单元110,用于记录触发磁盘的io请求的进程;

生成单元120,用于根据记录的结果及所述io请求的响应状况,生成所述进程触发的io请求的请求状态信息。

在本实施例中,所述记录单元110可包括:处理器及存储器,所述处理器可以通过向存储器中写入信息,记录下触发io请求的进程。

所述生成单元120,同样可对应于处理器,所述处理器通过计算机程序等可执行代码的执行,可实现根据记录的结果及io请求的响应状况,生成进程的请求状态信息。该请求状态信息可用于后续进行磁盘读写异常定位的异常进程。

所述处理器可为中央处理器、微处理器、数字信号处理器、应用处理器、可编程阵列或专用集成电路。

可选地,所述生成单元120,用于利用文件系统将进程标识写入bio的内存页,所述进程标识为触发磁盘的io请求的进程的标识信息;利用块设备驱动读取所述bio,并根据所述bio向磁盘发送所述io请求;并当所述块设备驱动接收到所述io请求的响应信息时,对所述进程触发的io请求数加1。

在本实施例中为了很好的与存储设备中的操作系统兼容。由文件系统构建bio,并将进程标识写入bio的内存页。在另一些实施例中,存储设备还可以构建其他存储所述进程标识的数据结构,不局限于所述bio。

可选地,所述生成单元120,具体用于利用所述块设备驱动根据读取的所述bio,对第一预定时间内的对同一磁盘的相邻存储空间的同一类所述bio进行合并,生成一个所述io请求;并执行以下至少之一:若合并的所述bio均为同一个进程触发的,则在接收到所述io请求的响应信息时,对所述程触发的io请求数加1;若合并的所述bio为不同进程触发的,则在接收到所述io请求的响应信息时,分别对触发所述io请求的所有进程的io请求数加1。

在本实施例中块设备驱动会第第一预定时间内的同一个磁盘的相邻存储空间的bio进行合并。这里的第一预定时间可为磁盘的一个读写周期,所述第一预定时间可为任意预先定义的时长。

在本实施例中,所述生成单元120会利用块设备驱动执行所述bio的合并,基于块设备最终返回的响应信息,生成所述请求状况信息。

可选地,所述存储设备还包括:选择单元,用于当满足预定条件时,根据进程的io请求的请求状态信息选择出目标进程;执行单元,用于对所述目标进程执行预定操作。

在本实施例中所述选择单元,可为筛选出与所述预定条件对应的目标进程,例如,选择出导致异常的进程,或者,选择触发io频次较高的目标程序等。

在本实施例中所述选择单元和所述执行单元,都可对应于处理器,所述处理器可以通过计算机程序的执行,实现目标程序的执行及所述预定操作的处理。

可选地,所述选择单元,具体用于当满足所述预定条件时,根据进程的io请求的频次,选择出频次大于预设阈值的目标进程。

可选地,所述执行单元,具体用于执行以下之一:

中止所述目标进程;

关闭所述目标进程;

确定所述目标进程对应的应用程序,对所述应用程序进行优化或向所述应用程序的应用服务器上报异常信息。

以上仅是执行预定操作的几种举例,具体实现时,不局限于上述操作,总之,在本发明实施例提供的存储设备中,可以通过进程粒度的触发的io请求的请求状况信息,在磁盘出现读写异常,可以进行进程粒度的异常定位,从而提升

如图4所示,本发明实施例提供一种存储设备,包括:存储器210、处理器220及存储在所述收发器上并由所述处理器220执行的计算机程序230;

所述处理器220,分别与所述存储器210连接,用于通过所述计算机程序230的执行,以控制所述收发器的信息收发及所述存储器210的信息存储,并实现前述一个或多个技术方案提供的信息处理方法。

具体的如,所述处理器220,可至少用于执行以下步骤:

记录触发磁盘的输入输出io请求的进程;

根据记录的结果及所述io请求的响应状况,生成所述进程触发的io请求的请求状态信息。

所述处理器220,还可用于执行以下步骤:

所述根据记录的结果及所述io请求的响应状况,生成所述进程发起的io请求的请求状态信息,包括:

文件系统将进程标识写入bio的内存页,所述进程标识为触发磁盘的io请求的进程的标识信息;

块设备驱动读取所述bio,并根据所述bio向磁盘发送所述io请求;

当所述块设备驱动接收到所述io请求的响应信息时,对所述进程触发的io请求数加1。

进步一步地,所述处理器220还可以通过计算机程序230的执行,可实现以下步骤:

所述块设备驱动根据读取的所述bio,对第一预定时间内的对同一磁盘的相邻存储空间的同一类所述bio进行合并,生成一个所述io请求;

所述当所述块设备驱动接收到所述io请求的响应信息时,对所述进程触发的io请求加1,包括以下至少之一:

若合并的所述bio均为同一个进程触发的,则在接收到所述io请求的响应信息时,对所述程触发的io请求数加1;

若合并的所述bio为不同进程触发的,则在接收到所述io请求的响应信息时,分别对触发所述io请求的所有进程的io请求数加1。

进一步地,所述处理器220还可以通过计算机程序230的执行,可实现以下步骤:

当满足预定条件时,根据进程的io请求的请求状态信息选择出目标进程;

对所述目标进程执行预定操作。

总之,本发明实施例提供的上述存储设备的处理器220,可以通过计算机程序230的执行,实现上述一个或多个技术方案提供的信息处理方法的执行。

本发明实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序;所述计算机程序被执行后,能够并实现前述一个或多个技术方案提供的信息处理方法,例如,如图1或图2所示的方法。

本发明实施例提供的计算机存储介质包括:移动存储设备、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。可选为,所述计算机存储介质可为非瞬间存储介质。这里的非瞬间存储介质又可以称为非易失性存储介质。

以下结合上述任意一个实施例提供几个具体示例:

示例1:

如图5所示,本示例提出了一种以进程为粒度来监控磁盘iops的统计方法,包括:

在进程标识(id)的结构中增加磁盘信息和统计计数;进程是归属于用户空间,在图5所示的用户空间内显示有进程1、进程2,一直到进程n。所述n可为正整数;

当某个进程发起,通过系统调用陷入内核空间时,在文件系统层中的文件系统将进程的id与发起的io请求绑定,具体如,文件系统构建bio,并将bio提交给内核空间的块设备驱动。

当io请求到达块设备层(包括有块设备驱动)时,块设备驱动将bio转换成io请求来处理。在图5中显示有块设备驱动及与块设备驱动连接的磁盘(disk)0、disk1、disk2……一直到diskm。

每处理完一个io请求,查找到io请求相应的进程id,对该进程所操作的所有磁盘对应的引用计数加1,最后得出某个进程操作的所有磁盘的iops。

在本示例中,以进程为单位统计出每个进程对应的磁盘iops,不仅更直观地反映不同进程的磁盘iops,更方便在系统响应及性能出现问题时快捷的定位问题,甚至将这些数据结合磁盘的标称值结合对比,去发现潜在的问题,并在问题出现之前及时做出优化、调整数据布局等操作。

示例2:

本示例提供给一种信息处理方法,可实现以进程为单位的磁盘iops统计,涉及到用户空间与内核空间的交互,进程通过系统调用进入内核空间后,内核中文件系统根据进程的i/o操作构造成bio,在bio结构的内存页(page)中将进程的pid信息记录下来。图6所示为一种pid的数据结构。所述pid可为一种链式结果,记录有每一个磁盘的磁盘标识(例如,对应磁盘的首地址)等,并对应记录有磁盘响应io请求的次数(io_count)。

文件系统向块设备驱动提交该bio后,由块设备驱动层将bio进行相应的合并等处理,最后以io请求的结构下发到底层磁盘(底层磁盘为块设备的管理的存储硬件);如图8所示,当底层磁盘处理完该请求返回时,算作完成一次磁盘的io请求,此时块设备驱动层从该请求中查找出每个内存页对应的pid,相同pid对应的磁盘的io请求次数加1。

在pid结构中增加一个记录统计信息的链表结构,定义链表结构的成员为磁盘名和统计次数;

块设备层统计每个pid对应的磁盘处理的请求次数。块设备层接收到文件系统下发的bio后,会根据电梯算法等对bio进行合并等操作,将连续的bio合并为一个io请求,并调用接口将io请求下发。当底层设备处理完该io请求的响应信息返回时,块设备层将该io请求中对应的每个pid对应的进程,找到该进程打开的所有磁盘名,将对应的pid结构中记录统计信息的链表结构中的统计次数加1,注意相同pid中的io请求数只累加1次,该pid基于进程粒度记录有io请求的个数。

磁盘对所有处理的io请求的统计计数在proc文件中做累加,客户端工具根据相邻两秒的数据差值,得出磁盘每秒处理的请求次数,用户即得到最终数据。

示例3:

如图7所示,本示例提供一种磁盘读写响应方法,包括:

进程发起读操作或写操作;

基于读操作或写操作,构建bio,具体可包括:在bio的内存页中写入如图6所示的pid;

向磁盘驱动(例如,块设备驱动)提交bio,以触发磁盘驱动构建io请求,以响应所述读请求或写请求。

如图8所示,当块设备接收到bio之后,构建io请求并下发给底层磁盘,底层磁盘在完成io请求的响应之后,向块设备返回响应信息进行基于进程粒度的io请求的个数统计,并更新内存页内的pid。例如,

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1