输入输出请求检测方法、装置、设备及介质与流程

allin2022-09-03  186



1.本公开涉及控制技术领域,具体涉及输入/输出请求检测方法、装置、设备及介质。


背景技术:

2.输入/输出(input output,i/o)夯(hang),是指在操作系统运行过程中,操作系统的存储模块因某些因素引起的i/o耗时过长或i/o不响应的现象。通常情况下,i/o夯可能造成有i/o需求的进程无i/o可用,其中,对于有i/o访问需求的服务进程,i/o夯可能会引起进程长期阻塞,且在i/o路径恢复之前,都无法对外提供服务。另外,i/o夯也可能会引起大量的进程进入不可中断的睡眠状态,从而导致操作系统处于高负载状态,甚至可能导致操作系统长时间没有反应,无法执行相应的命令,需重启操作系统才可以摆脱这一状态。因此,i/o夯不仅会损害用户体验,而且还会导致操作系统稳定性降低,在i/o夯出现时及时,若能及时确定导致i/o夯出现的原因,可以有助于恢复操作系统稳定性,减少服务损失。
3.相关技术中,为了能够及时确定可能引起i/o夯的原因,可以根据相应的工具找到引起i/o夯的i/o请求,并根据该i/o请求中的信息、崩溃日志(crash report)以及相应的代码进行分析,以确定可能引起i/o夯的原因。
4.但是,在上述方案中,虽然可以确定可能引起i/o夯的原因,但由于根据该i/o请求中的信息、崩溃日志以及相应的代码进行分析需要耗费较长的时间,无法及时确定导致i/o夯出现的原因,从而降低了确定导致i/o夯出现的原因的效率,降低了操作系统稳定性,提高了运维成本。


技术实现要素:

5.为了解决相关技术中的问题,本公开实施例提供了输入/输出请求检测方法、装置、设备及介质。
6.第一方面,本公开实施例中提供了一种输入/输出请求检测方法,所述方法包括:
7.获取至少一次输入/输出(i/o)请求的产生时刻;
8.响应于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项;
9.根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置。
10.结合第一方面,本公开在第一方面的第一种实现方式中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
11.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻或完成执行时刻为0,或目标i/o请求的开始执行时刻或完成执行时刻为空,确定目标i/o请求的滞留位置为操作系统内核的块设备(block)层。
12.结合第一方面,本公开在第一方面的第二种实现方式中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
13.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中未包括目标i/o请求对应的目标i/o请求提交索引,确定目标i/o请求的滞留位置为驱动层。
14.结合第一方面,本公开在第一方面的第三种实现方式中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
15.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引、且i/o请求完成队列中未包括目标i/o请求对应的目标i/o请求完成索引,确定目标i/o请求的滞留位置为储存介质。
16.结合第一方面,本公开在第一方面的第四种实现方式中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
17.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引、i/o请求完成队列中包括目标i/o请求对应的目标i/o请求完成索引,且根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,确定目标i/o请求的滞留位置为软件回收流程。
18.结合第一方面,本公开在第一方面的第五种实现方式中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
19.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中至少一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号小于前一个目标i/o请求提交索引的序号,确定目标i/o请求的滞留位置为驱动层。
20.结合第一方面,本公开在第一方面的第六种实现方式中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
21.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、且i/o请求完成队列中至少一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号小于前一个目标i/o请求完成索引的序号,确定目标i/o请求的滞留位置为储存介质。
22.结合第一方面,本公开在第一方面的第七种实现方式中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
23.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、i/o请求完成队列中任意一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序
号大于或等于前一个目标i/o请求完成索引的序号,且根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,确定目标i/o请求的滞留位置为软件回收流程。
24.第二方面,本公开实施例中提供了一种输入/输出请求检测装置,装置包括:
25.开始执行时刻获取模块,被配置为获取至少一次输入/输出(i/o)请求的产生时刻;
26.目标信息获取模块,被配置为响应于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项;
27.滞留位置确定模块,被配置为根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置。
28.第三方面,本公开实施例中提供了一种电子设备,包括存储器和至少一个处理器;存储器用于存储一条或多条计算机指令,一条或多条计算机指令被至少一个处理器执行以实现第一方面、第一方面的第一种实现方式到第七种实现方式中任一项的方法步骤。
29.第四方面,本公开实施例中提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现第一方面、第一方面的第一种实现方式到第七种实现方式中任一项的方法步骤。
30.第五方面,本公开实施例中提供了一种计算机程序产品,包括计算机指令,该计算机指令被处理器执行时实现如第一方面、第一方面的第一种实现方式到第七种实现方式中任一项的方法步骤。
31.本公开实施例提供的技术方案可以包括以下有益效果:
32.根据本公开实施例提供的技术方案,根据本公开实施例提供的技术方案,通过获取至少一次i/o请求的产生时刻,并响应于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项。其中,由于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,因此目标i/o请求可以被理解为耗时过长或不响应的i/o请求,即引起了i/o夯的i/o请求。通过获取目标i/o请求的状态信息(该状态信息用于指示目标i/o请求处于哪个状态,以及与所处状态对应的时刻),以及目标i/o请求的硬件队列信息(即该硬件队列信息包括目标储存介质对应的至少一个i/o请求的索引的队列,该目标储存介质为用于响应于该目标i/o请求进行数据读写的储存介质),根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,即确定引起了i/o夯的目标i/o请求在未能被继续执行时所处的位置,当根据该滞留位置进行进一步分析时,需要分析的数据量较少,在耗费较短时间的前提下即可较为准确的确定引起i/o夯的原因,从而提高了确定导致i/o夯出现原因的效率,改善了操作系统稳定性,降低了运维成本。
33.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻或完成执行时刻为0,或目标i/o请求的开始执行时刻或完成执行时刻为空,确定目标i/o请求的滞留位置为操作系统内核的块设备层,可以在目标i/o请求滞留在块设备层,还没有下发到驱动层时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
34.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中未包括目标i/o请求对应的目标i/o请求提交索引,确定目标i/o请求的滞留位置为驱动层,可以在目标i/o请求还滞留在驱动层,未能提供给储存介质时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
35.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引、且i/o请求完成队列中未包括目标i/o请求对应的目标i/o请求完成索引,确定目标i/o请求的滞留位置为储存介质,可以在目标i/o请求还滞留在对应的储存介质,即该储存介质未能完成与该目标i/o请求对应的操作例如读写操作时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
36.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引、i/o请求完成队列中包括目标i/o请求对应的目标i/o请求完成索引,且根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,确定目标i/o请求的滞留位置为软件回收流程,可以在目标i/o请求滞留在软件回收流程,即软件回收流程未能成功释放操作系统在执行目标i/o请求中所占用的资源时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
37.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中至少一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号小于前一个目标i/o请求提交索引的序号,确定目标i/o请求的滞留位置为驱动层,可以在目标i/o请求还滞留在驱动层,未能提供给储存介质时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
38.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、且i/o请求完成队列中至少一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号小于前一个目标i/o请求完成索引的序号,确定目标i/o请求的滞留位置为储存介质,可以在目标i/o请求还滞留在对应的储存介质,
该储存介质未能完成与该目标i/o请求对应的操作例如读写操作时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
39.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、i/o请求完成队列中任意一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号大于或等于前一个目标i/o请求完成索引的序号,且根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,确定目标i/o请求的滞留位置为软件回收流程,可以在目标i/o请求滞留在软件回收流程,即软件回收流程未能成功释放操作系统在执行目标i/o请求中所占用的资源时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
40.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
41.结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目标和优点将变得更加明显。在附图中:
42.图1示出根据本公开一实施方式的输入/输出请求检测方法的流程图;
43.图2示出根据本公开一实施方式的输入/输出请求检测系统的示意性框图;
44.图3示出根据本公开一实施方式的输入/输出请求检测装置的结构框图;
45.图4示出根据本公开一实施方式的电子设备的结构框图;
46.图5是适于用来实现根据本公开一实施方式的输入/输出请求检测方法的计算机系统的结构示意图。
具体实施方式
47.下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
48.在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的标签、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他标签、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
49.另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的标签可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
50.为了确保用户能够从目标储存空间读取到其需要读取的数据。本公开发明人考虑了如下方案。
51.可以获取崩溃日志,并通过相应的工具确定引起i/o夯的i/o请求,获取该i/o请求
中的信息以及与该i/o请求相关的代码(例如响应于该i/o请求调用的软件模块的代码等),基于崩溃日志、该i/o请求中的信息以及与该i/o请求相关的代码,由相应的分析人员进行分析,并根据分析结果确定可能引起i/o夯的原因
52.此方案的缺点:在上述方案中,虽然可以确定可能引起i/o夯的原因,但由于基于崩溃日志、该i/o请求中的信息以及与该i/o请求相关的代码进行分析时,所分析数据的数据量较大,分析所耗费的时间较长,无法及时确定导致i/o夯出现的原因,从而降低了确定导致i/o夯出现原因的效率,降低了操作系统稳定性,提高了运维成本。
53.考虑以上方案的缺点,本公开发明人提出了新的方案:该方案通过获取至少一次输入/输出(i/o)请求的产生时刻,并响应于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项。其中,由于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,因此目标i/o请求可以被理解为耗时过长或不响应的i/o请求,即引起了i/o夯的i/o请求。通过获取目标i/o请求的状态信息(该状态信息用于指示目标i/o请求处于哪个状态,以及与所处状态对应的时刻),以及目标i/o请求的硬件队列信息(即该硬件队列信息包括目标储存介质对应的至少一个i/o请求的索引的队列,该目标储存介质为用于响应于该目标i/o请求进行数据读写的储存介质),根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,即确定引起了i/o夯的目标i/o请求在未能被继续执行时所处的位置,当根据该滞留位置进行进一步分析时,需要分析的数据量较少,在耗费较短时间的前提下即可较为准确的确定引起i/o夯的原因,从而提高了确定导致i/o夯出现原因的效率,改善了操作系统稳定性,降低了运维成本。
54.图1示出根据本公开一实施方式的输入/输出请求检测方法的流程图,如图1所示,输入/输出请求检测方法包括步骤s101、s102、s103。
55.在步骤s101中,获取至少一次输入/输出(i/o)请求的产生时刻。
56.在步骤s102中,响应于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项。
57.在步骤s103中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置。
58.在本公开的一个实施例中,一次i/o请求可以被理解为针对储存介质上所储存数据的一次访问,用于对被访问的数据进行写入或读取。
59.在本公开的一个实施例中,i/o请求产生时刻,可以被理解为操作系统中产生i/o请求的时刻,其中可以操作系统响应于相应的指令产生i/o请求,也可以为由相应的进程在操作系统中产生i/o请求。示例性的,当某个应用需要读取数据时,该应用的一个进程可以通过系统调用从应用层进入操作系统内核层的文件系统层,并在文件系统层的缓存中查找要需要读取的数据,若未能查找到相应的数据,则该进程可以在文件系统层创建一个i/o请求。
60.在本公开的一个实施例中,获取i/o请求的产生时刻,可以被理解为持续对操作系统中的i/o请求进行扫描,并获取所扫描到的i/o请求的产生时刻。
61.在本公开的一个实施例中,时间差阈值可以理解为,允许i/o请求持续的最长时
间。其中,由于能够获取到产生时刻的i/o请求可以被理解为仍在持续的i/o请求,而已完成的i/o请求通常情况下无法被获取到相应的产生时刻,因此当目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,可以理解为该目标i/o请求仍在持续,且持续的时间已超过允许i/o请求持续的最长时间。时间差阈值可以为预先设置的,可以为从其他装置或系统处获取。
62.在本公开的一个实施例中,i/o请求的状态信息,可以被理解为用于指示i/o请求处于哪个状态,以及与所处状态对应的时刻。例如,当i/o请求已开始被执行时,该i/o请求的状态信息可以用于指示该i/o请求处于开始执行状态;或者,该i/o请求的状态信息可以仅包括i/o请求的开始执行时刻,该开始执行时刻用于指示i/o请求处于开始执行状态的最早时刻。又例如,当i/o请求已执行完成时,该i/o请求的状态信息可以用于指示该i/o请求处于执行完成状态;或者,该i/o请求的状态信息可以仅包括i/o请求的完成执行时刻,该开始执行时刻用于指示i/o请求处于执行完成状态的最早时刻。
63.在本公开的一个实施例中,目标i/o请求的硬件队列信息,可以被理解为,包括目标储存介质对应的至少一个i/o请求的索引的队列,该目标储存介质为用于响应该目标i/o请求进行数据读写的储存介质。其中索引的队列可以包括多个请求提交索引,请求提交索引对应被提交由该储存介质进行读写操作的i/o请求。索引的队列也可以包括多个完成索引,每个完成索引对应提交由该储存介质进行读写操作,且该读写操作已完成的i/o请求。
64.在本公开的一个实施例中,i/o请求的滞留位置,可以被理解为最后执行该i/o请求的操作系统的层,或最后执行该i/o请求的储存介质等。
65.在本公开的一个实施例中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,可以理解为基于预设算法,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项进行计算,根据计算结果确定目标i/o请求的滞留位置;或者,也可以理解为获取预先训练得到的模型,将目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项作为输入,以获取该模型输出的滞留位置指示信息,根据该滞留位置指示信息确定滞留位置。
66.示例性的,图2示出根据本公开一实施方式的输入/输出请求检测系统的示意性框图,该输入/输出请求检测系统用于执行输入/输出请求检测方法,如图2所示,在输入/输出请求检测系统可以包括动态扫描模块101、数据采集模块102以及行为分析模块103。其中,动态扫描模块101可以包括i/o采集子模块111以及i/o过滤子模块121,其中i/o采集子模块111可以持续对操作系统中的i/o请求进行扫描,并获取所扫描到的i/o请求的产生时刻。i/o过滤子模块121可以获取该当前时刻,并确定产生时刻与当时时刻之间的时间差大于或等于时间差阈值的目标i/o请求104。数据采集模块102可以获取目标i/o请求的状态信息114以及目标i/o请求的硬件队列信息124中至少一项。行为分析模块103可以根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息进行分析,以确定目标i/o请求的滞留位置,并输出该滞留位置105,其中目标i/o请求的滞留位置可以为目标层113,该目标层可以为操作系统内核软件中的某一层,目标i/o请求的滞留位置也可以为目标储存介质123,该目标储存介质可以为用于响应于目标i/o请求进行数据读写的储存介质。
67.根据本公开实施例提供的技术方案,通过获取至少一次i/o请求的产生时刻,并响应于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取目标
i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项。其中,由于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,因此目标i/o请求可以被理解为耗时过长或不响应的i/o请求,即引起了i/o夯的i/o请求。通过获取目标i/o请求的状态信息(该状态信息用于指示目标i/o请求处于哪个状态,以及与所处状态对应的时刻),以及目标i/o请求的硬件队列信息(即该硬件队列信息包括目标储存介质对应的至少一个i/o请求的索引的队列,该目标储存介质为用于响应于该目标i/o请求进行数据读写的储存介质),根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,即确定引起了i/o夯的目标i/o请求在未能被继续执行时所处的位置,当根据该滞留位置进行进一步分析时,需要分析的数据量较少,在耗费较短时间的前提下即可较为准确的确定引起i/o夯的原因,从而提高了确定导致i/o夯出现原因的效率,改善了操作系统稳定性,降低了运维成本。
68.在本公开的一个实施例中,在步骤s103中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,可以通过如下步骤实现:
69.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻或完成执行时刻为0,或目标i/o请求的开始执行时刻或完成执行时刻为空,确定目标i/o请求的滞留位置为操作系统内核的块设备(block)层。
70.在本公开的一个实施例中,i/o请求的开始执行时刻,可以理解为响应于i/o请求开始进行磁盘读写的时间。i/o请求的完成执行时刻,可以理解为响应于i/o请求所进行磁盘读写结束的时间。
71.在本公开的一个实施例中,根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻或完成执行时刻为0,或目标i/o请求的开始执行时刻或完成执行时刻为空,可以理解为通过解析目标i/o请求的状态信息,以获取目标i/o请求的开始执行时刻以及目标i/o请求的完成执行时刻中至少一项,并确定所获取的开始执行时刻以及完成执行时刻中至少一项是否为空或是否为0。
72.在本公开的一个实施例中,操作系统内核的块设备层,可以理解为操作系统内核中应用程序和文件系统用来访问多种不同的存储设备的模块接口。
73.在本公开的一个实施例中,目标i/o请求的滞留位置为操作系统内核的块设备层,可以理解为最后执行该目标i/o请求的为操作系统内核的块设备层,该目标i/o请求尚未提交给驱动层。
74.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻或完成执行时刻为0,或目标i/o请求的开始执行时刻或完成执行时刻为空,确定目标i/o请求的滞留位置为操作系统内核的块设备层,可以在目标i/o请求滞留在块设备层,还没有下发到驱动层时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
75.在本公开的一个实施例中,在步骤s103中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,可以通过如下步骤实现:
76.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中未包括目标i/o请求对应的目标i/o请求提交索引,确定目标i/o请求的滞留位置为驱动层。
77.在本公开的一个实施例中,i/o请求提交索引,可以理解为用于指示被提交给对应的储存介质进行读写操作的i/o请求。i/o请求提交队列,可以理解为包括多个i/o请求提交索引的队列,与i/o请求提交队列对应的储存介质可以依次根据该i/o请求提交队列中的请求提交索引对应的i/o请求进行读写操作。
78.在本公开的一个实施例中,根据目标i/o请求的硬件队列信息确定i/o请求提交队列中未包括目标i/o请求对应的目标i/o请求提交索引,可以理解为对目标i/o请求的硬件队列信息进行解析以获取i/o请求提交队列,并确定该i/o请求提交队列中是否包括目标i/o请求对应的目标i/o请求提交索引。
79.在本公开的一个实施例中,可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空时,再根据目标i/o请求的硬件队列信息确定i/o请求提交队列是否包括目标i/o请求对应的目标i/o请求提交索引;也可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻是否均不为0也均不为空的同时,根据目标i/o请求的硬件队列信息确定i/o请求提交队列是否包括目标i/o请求对应的目标i/o请求提交索引,本公开对此不做具体限定。
80.在本公开的一个实施例中,驱动层可以理解为用于为相应程序提供储存介质的操作接口,并实现储存介质的驱动程序,在对储存介质进行读写操作时,可以通过调用相应驱动程序的接口来实现。
81.在本公开的一个实施例中,目标i/o请求的滞留位置为驱动层,可以理解为最后执行该目标i/o请求的为驱动层,该目标i/o请求尚未提交给对应的储存介质。
82.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中未包括目标i/o请求对应的目标i/o请求提交索引,确定目标i/o请求的滞留位置为驱动层,可以在目标i/o请求还滞留在驱动层,未能提供给储存介质时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
83.在本公开的一个实施例中,在步骤s103中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,可以通过如下步骤实现:
84.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引、且i/o请求完成队列中未包括目标i/o请求对应的目标i/o请求完成索引,确定目标i/o请求的滞留位置为储存介质。
85.在本公开的一个实施例中,i/o请求完成索引,可以理解为用于指示被提交给对应的储存介质进行读写操作,且读写操作已完成的i/o请求。i/o请求完成队列,可以理解为包
括多个i/o请求完成索引的队列,与i/o请求完成队列对应的储存介质可以在完成与某个i/o请求对应的读写操作后,将与该i/o请求对应的请求完成索引加入i/o请求完成队列。
86.在本公开的一个实施例中,根据目标i/o请求的硬件队列信息确定i/o请求完成队列中未包括目标i/o请求对应的目标i/o请求完成索引,可以理解为对目标i/o请求的硬件队列信息进行解析以获取i/o请求完成队列,并确定该i/o请求完成队列中是否包括目标i/o请求对应的目标i/o请求完成索引。
87.在本公开的一个实施例中,可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空时,再根据目标i/o请求的硬件队列信息确定i/o请求提交队列是否包括目标i/o请求对应的目标i/o请求提交索引,并在根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引时,根据目标i/o请求的硬件队列信息确定i/o请求完成队列中是否包括目标i/o请求对应的目标i/o请求完成索引;也可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻是否均不为0也均不为空的同时,根据目标i/o请求的硬件队列信息确定i/o请求提交队列是否包括目标i/o请求对应的目标i/o请求提交索引,同时根据目标i/o请求的硬件队列信息确定i/o请求完成队列中是否包括目标i/o请求对应的目标i/o请求完成索引,本公开对此不做具体限定。
88.在本公开的一个实施例中,目标i/o请求的滞留位置为储存介质,可以理解为储存介质未能完成与该目标i/o请求对应的操作例如读写操作等。
89.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引、且i/o请求完成队列中未包括目标i/o请求对应的目标i/o请求完成索引,确定目标i/o请求的滞留位置为储存介质,可以在目标i/o请求还滞留在对应的储存介质,即该储存介质未能完成与该目标i/o请求对应的操作例如读写操作时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
90.在本公开的一个实施例中,在步骤s103中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,可以通过如下步骤实现:
91.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引、i/o请求完成队列中包括目标i/o请求对应的目标i/o请求完成索引,且根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,确定目标i/o请求的滞留位置为软件回收流程。
92.在本公开的一个实施例中,根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,可以理解为通过解析目标i/o请求的状态信息,以获取目标i/o请求的回收状态,并确定所获取的回收状态是否为未完成回收。
93.在本公开的一个实施例中,可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空时,根据目标i/o请求的硬件队列
信息确定i/o请求提交队列是否包括目标i/o请求对应的目标i/o请求提交索引,并在根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引时,根据目标i/o请求的硬件队列信息确定i/o请求完成队列中是否包括目标i/o请求对应的目标i/o请求完成索引,在根据目标i/o请求的硬件队列信息确定i/o请求完成队列中包括目标i/o请求对应的目标i/o请求完成索引时,再根据目标i/o请求的状态信息确定目标i/o请求的回收状态是否为未完成回收;也可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻是否均不为0也均不为空的同时,根据目标i/o请求的硬件队列信息确定i/o请求提交队列是否包括目标i/o请求对应的目标i/o请求提交索引,同时根据目标i/o请求的硬件队列信息确定i/o请求完成队列中是否包括目标i/o请求对应的目标i/o请求完成索引,同时根据目标i/o请求的状态信息确定目标i/o请求的回收状态是否为未完成回收,本公开对此不做具体限定。
94.在本公开的一个实施例中,软件回收流程,可以理解为用于释放操作系统在执行对应的i/o请求中所占用的资源,例如缓存资源、磁盘资源、运算资源等。
95.在本公开的一个实施例中,目标i/o请求的滞留位置为软件回收流程,可以理解为,在储存介质完成与目标i/o请求对应的操作例如读写操作等时,未能成功完成相应的软件回收流程,即未能成功释放操作系统在执行目标i/o请求中所占用的资源。
96.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引、i/o请求完成队列中包括目标i/o请求对应的目标i/o请求完成索引,且根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,确定目标i/o请求的滞留位置为软件回收流程,可以在目标i/o请求滞留在软件回收流程,即软件回收流程未能成功释放操作系统在执行目标i/o请求中所占用的资源时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
97.在本公开的一个实施例中,在步骤s103中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,可以通过如下步骤实现:
98.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中至少一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号小于前一个目标i/o请求提交索引的序号,确定目标i/o请求的滞留位置为驱动层。
99.在本公开的一个实施例中,i/o请求提交索引,可以理解为用于指示被提交给对应的储存介质进行读写操作的i/o请求。i/o请求提交队列,可以理解为包括多个i/o请求提交索引的队列,与i/o请求提交队列对应的储存介质可以依次根据该i/o请求提交队列中的请求提交索引对应的i/o请求进行读写操作,其中,i/o请求提交索引的序号,可以理解为用于指示该i/o请求提交索引被加入i/o请求提交队列的次序,例如,第一时刻被加入i/o请求提交队列的i/o请求提交索引的序号小于第二时刻被加入i/o请求提交队列的i/o请求提交索
引的序号,其中第一时刻早于第二时刻。
100.在本公开的一个实施例中,根据目标i/o请求的硬件队列信息确定i/o请求提交队列中未包括目标i/o请求对应的目标i/o请求提交索引,可以理解为对目标i/o请求的硬件队列信息进行解析以获取i/o请求提交队列,并确定该i/o请求提交队列中是否包括目标i/o请求对应的目标i/o请求提交索引。
101.在本公开的一个实施例中,可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空时,再根据目标i/o请求的硬件队列信息确定i/o请求提交队列中是否包括至少一对连续的与目标i/o请求对应的目标i/o请求提交索引且该对目标i/o请求提交索引中后一个目标i/o请求提交索引的序号小于前一个目标i/o请求提交索引的序号;也可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻是否均不为0也均不为空的同时,根据目标i/o请求的硬件队列信息确定i/o请求提交队列中是否包括至少一对连续的与目标i/o请求对应的目标i/o请求提交索引且该对目标i/o请求提交索引中后一个目标i/o请求提交索引的序号小于前一个目标i/o请求提交索引的序号,本公开对此不做具体限定。
102.在本公开的一个实施例中,驱动层可以理解为用于为相应程序提供储存介质的操作接口,并实现储存介质的驱动程序,在对储存介质进行读写操作时,可以通过调用相应驱动程序的接口来实现。
103.在本公开的一个实施例中,目标i/o请求的滞留位置为驱动层,可以理解为最后执行该目标i/o请求的为驱动层,该目标i/o请求尚未提交给对应的储存介质。
104.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中至少一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号小于前一个目标i/o请求提交索引的序号,确定目标i/o请求的滞留位置为驱动层,可以在目标i/o请求还滞留在驱动层,未能提供给储存介质时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
105.在本公开的一个实施例中,在步骤s103中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,可以通过如下步骤实现:
106.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、且i/o请求完成队列中至少一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号小于前一个目标i/o请求完成索引的序号,确定目标i/o请求的滞留位置为储存介质。
107.在本公开的一个实施例中,i/o请求完成索引,可以理解为用于指示被提交给对应的储存介质进行读写操作,且读写操作已完成的i/o请求。i/o请求完成队列,可以理解为包括多个i/o请求完成索引的队列,与i/o请求完成队列对应的储存介质可以在完成与某个i/
o请求对应的读写操作后,将与该i/o请求对应的请求完成索引加入i/o请求完成队列,并根据加入i/o请求完成队列的先后顺序生成对应的序号。例如,第三时刻被加入i/o请求完成队列的i/o请求完成索引的序号小于第四时刻被加入i/o请求完成队列的i/o请求完成索引的序号,其中第三时刻早于第四时刻。
108.在本公开的一个实施例中,根据目标i/o请求的硬件队列信息确定i/o请求完成队列中未包括目标i/o请求对应的目标i/o请求完成索引,可以理解为对目标i/o请求的硬件队列信息进行解析以获取i/o请求完成队列,并确定该i/o请求完成队列中是否包括目标i/o请求对应的目标i/o请求完成索引。
109.在本公开的一个实施例中,可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空时,再根据目标i/o请求的硬件队列信息确定i/o请求提交队列中是否包括至少一对连续的与目标i/o请求对应的目标i/o请求提交索引且该对目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号,在根据目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号时,根据目标i/o请求的硬件队列信息确定i/o请求完成队列中是否包括至少一对连续的与目标i/o请求对应的目标i/o请求完成索引,且该对目标i/o请求完成索引中后一个目标i/o请求完成索引的序号小于前一个目标i/o请求完成索引的序号;也可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻是否均不为0也均不为空的同时,根据目标i/o请求的硬件队列信息确定i/o请求提交队列中是否包括至少一对连续的与目标i/o请求对应的目标i/o请求提交索引且该对目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号,同时根据目标i/o请求的硬件队列信息确定i/o请求完成队列中是否包括至少一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号小于前一个目标i/o请求完成索引的序号,本公开对此不做具体限定。
110.在本公开的一个实施例中,目标i/o请求的滞留位置为储存介质,可以理解为储存介质未能完成与该目标i/o请求对应的操作例如读写操作等。
111.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、且i/o请求完成队列中至少一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号小于前一个目标i/o请求完成索引的序号,确定目标i/o请求的滞留位置为储存介质,可以在目标i/o请求还滞留在对应的储存介质,该储存介质未能完成与该目标i/o请求对应的操作例如读写操作时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
112.在本公开的一个实施例中,在步骤s103中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,可以通过如下步骤实
现:
113.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、i/o请求完成队列中任意一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号大于或等于前一个目标i/o请求完成索引的序号,且根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,确定目标i/o请求的滞留位置为软件回收流程。
114.在本公开的一个实施例中,根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,可以理解为通过解析目标i/o请求的状态信息,以获取目标i/o请求的回收状态,并确定所获取的回收状态是否为未完成回收。
115.在本公开的一个实施例中,可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空时,再根据目标i/o请求的硬件队列信息确定i/o请求提交队列中是否包括至少一对连续的与目标i/o请求对应的目标i/o请求提交索引且该对目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号,在根据目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号时,根据目标i/o请求的硬件队列信息确定i/o请求完成队列中是否包括至少一对连续的与目标i/o请求对应的目标i/o请求完成索引,且该对目标i/o请求完成索引中后一个目标i/o请求完成索引的序号大于或等于前一个目标i/o请求完成索引的序号,在确定i/o请求完成队列中任意一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号大于或等于前一个目标i/o请求完成索引的序号时,根据目标i/o请求的状态信息确定目标i/o请求的回收状态是否为未完成回收;也可以在根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻是否均不为0也均不为空的同时,根据目标i/o请求的硬件队列信息确定i/o请求提交队列中是否包括至少一对连续的与目标i/o请求对应的目标i/o请求提交索引且该对目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号,同时根据目标i/o请求的硬件队列信息确定i/o请求完成队列中是否包括至少一对连续的与目标i/o请求对应的目标i/o请求完成索引,且该对目标i/o请求完成索引中后一个目标i/o请求完成索引的序号大于或等于前一个目标i/o请求完成索引的序号,本公开对此不做具体限定。
116.在本公开的一个实施例中,软件回收流程,可以理解为用于释放操作系统在执行对应的i/o请求中所占用的资源,例如缓存资源、磁盘资源、运算资源等。
117.在本公开的一个实施例中,目标i/o请求的滞留位置为软件回收流程,可以理解为,在储存介质完成与目标i/o请求对应的操作例如读写操作等时,未能成功完成相应的软件回收流程,即未能成功释放操作系统在执行目标i/o请求中所占用的资源。
118.根据本公开实施例提供的技术方案,通过响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与目标i/o请求对应的目标
i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、i/o请求完成队列中任意一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号大于或等于前一个目标i/o请求完成索引的序号,且根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,确定目标i/o请求的滞留位置为软件回收流程,可以在目标i/o请求滞留在软件回收流程,即软件回收流程未能成功释放操作系统在执行目标i/o请求中所占用的资源时,准确的确定目标i/o请求的具体滞留位置,从而在根据该滞留位置进行进一步分析时,可以使需要分析的数据量更少,进一步提高了确定导致i/o夯出现原因的效率。
119.以下参照图3描述根据本公开一实施方式的输入/输出请求检测装置,图3示出根据本公开一实施方式的输入/输出请求检测装置的结构框图。
120.如图3所示,输入/输出请求检测装置200包括:
121.开始执行时刻获取模块201,被配置为获取至少一次输入/输出(i/o)请求的产生时刻。
122.目标信息获取模块202,被配置为响应于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项。
123.滞留位置确定模块203,被配置为根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置。
124.根据本公开实施例提供的技术方案,通过获取至少一次输入/输出(i/o)请求的产生时刻,并响应于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项。其中,由于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,因此目标i/o请求可以被理解为耗时过长或不响应的i/o请求,即引起了i/o夯的i/o请求。通过获取目标i/o请求的状态信息(该状态信息用于指示目标i/o请求处于哪个状态,以及与所处状态对应的时刻),以及目标i/o请求的硬件队列信息(即该硬件队列信息包括目标储存介质对应的至少一个i/o请求的索引的队列,该目标储存介质为用于响应于该目标i/o请求进行数据读写的储存介质),根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,即确定引起了i/o夯的目标i/o请求在未能被继续执行时所处的位置,当根据该滞留位置进行进一步分析时,需要分析的数据量较少,在耗费较短时间的前提下即可较为准确的确定引起i/o夯的原因,从而提高了确定导致i/o夯出现原因的效率,改善了操作系统稳定性,降低了运维成本。
125.本领域技术人员可以理解,参照图3描述的技术方案的可以与参照上述描述的任一实施例结合,从而具备上述描述的任一实施例所实现的技术效果。具体内容可以参照上述实施例的描述,其具体内容在此不再赘述。
126.图4示出根据本公开一实施方式的电子设备的结构框图。
127.本公开实施方式还提供了一种电子设备,如图4所示,电子设备300包括至少一个处理器301;以及与至少一个处理器301通信连接的存储器302;其中,存储器302存储有可被至少一个处理器301执行的指令,指令被至少一个处理器301执行以实现以下步骤:
128.获取至少一次输入/输出(i/o)请求的产生时刻;
129.响应于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项;
130.根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置。
131.在本公开的一个实施例中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
132.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻或完成执行时刻为0,或目标i/o请求的开始执行时刻或完成执行时刻为空,确定目标i/o请求的滞留位置为操作系统内核的块设备(block)层。
133.在本公开的一个实施例中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
134.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中未包括目标i/o请求对应的目标i/o请求提交索引,确定目标i/o请求的滞留位置为驱动层。
135.在本公开的一个实施例中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
136.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引、且i/o请求完成队列中未包括目标i/o请求对应的目标i/o请求完成索引,确定目标i/o请求的滞留位置为储存介质。
137.在本公开的一个实施例中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
138.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中包括目标i/o请求对应的目标i/o请求提交索引、i/o请求完成队列中包括目标i/o请求对应的目标i/o请求完成索引,且根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,确定目标i/o请求的滞留位置为软件回收流程。
139.在本公开的一个实施例中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
140.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中至少一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号小于前一个目标i/o请求提交索引的序号,确定目标i/o请求的滞留位置为驱动层。
141.在本公开的一个实施例中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
142.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队
列中任意一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、且i/o请求完成队列中至少一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号小于前一个目标i/o请求完成索引的序号,确定目标i/o请求的滞留位置为储存介质。
143.在本公开的一个实施例中,根据目标i/o请求的状态信息以及目标i/o请求的硬件队列信息中至少一项确定目标i/o请求的滞留位置,包括:
144.响应于根据目标i/o请求的状态信息确定目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、i/o请求完成队列中任意一对连续的与目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号大于或等于前一个目标i/o请求完成索引的序号,且根据目标i/o请求的状态信息确定目标i/o请求的回收状态为未完成回收,确定目标i/o请求的滞留位置为软件回收流程。
145.图5是适于用来实现根据本公开一实施方式的输入/输出请求检测方法的计算机系统的结构示意图。
146.如图5所示,计算机操作系统400包括处理单元401,其可以根据存储在只读存储器(rom)402中的程序或者从存储部分408加载到随机访问存储器(ram)403中的程序而执行上述附图所示的实施方式中的各种处理。在ram403中,还存储有操作系统400操作所需的各种程序和数据。cpu401、rom402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。
147.以下部件连接至i/o接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至i/o接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。其中,所述处理单元401可实现为cpu、gpu、tpu、fpga、npu等处理单元。
148.特别地,根据本公开的实施方式,上文参考附图描述的方法可以被实现为计算机软件程序。示例性的,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行附图中的方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。示例性的,本公开的实施方式包括一种可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现用于执行附图中的方法的程序代码。
149.附图中的流程图和框图,图示了按照本公开各种实施方式的操作系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。示例性的,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能
而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的操作系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
150.描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
151.作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述节点中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
152.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。示例性的上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

技术特征:
1.一种输入/输出请求检测方法,其中,所述方法包括:获取至少一次输入/输出(i/o)请求的产生时刻;响应于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取所述目标i/o请求的状态信息以及所述目标i/o请求的硬件队列信息中至少一项;根据所述目标i/o请求的状态信息以及所述目标i/o请求的硬件队列信息中至少一项确定所述目标i/o请求的滞留位置。2.根据权利要求1所述的输入/输出请求检测方法,其中,所述根据所述目标i/o请求的状态信息以及所述目标i/o请求的硬件队列信息中至少一项确定所述目标i/o请求的滞留位置,包括:响应于根据所述目标i/o请求的状态信息确定所述目标i/o请求的开始执行时刻或完成执行时刻为0,或所述目标i/o请求的开始执行时刻或完成执行时刻为空,确定所述目标i/o请求的滞留位置为操作系统内核的块设备层。3.根据权利要求1所述的输入/输出请求检测方法,其中,所述根据所述目标i/o请求的状态信息以及所述目标i/o请求的硬件队列信息中至少一项确定所述目标i/o请求的滞留位置,包括:响应于根据所述目标i/o请求的状态信息确定所述目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据所述目标i/o请求的硬件队列信息确定i/o请求提交队列中未包括所述目标i/o请求对应的目标i/o请求提交索引,确定所述目标i/o请求的滞留位置为驱动层。4.根据权利要求1所述的输入/输出请求检测方法,其中,所述根据所述目标i/o请求的状态信息以及所述目标i/o请求的硬件队列信息中至少一项确定所述目标i/o请求的滞留位置,包括:响应于根据所述目标i/o请求的状态信息确定所述目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据所述目标i/o请求的硬件队列信息确定i/o请求提交队列中包括所述目标i/o请求对应的目标i/o请求提交索引、且i/o请求完成队列中未包括所述目标i/o请求对应的目标i/o请求完成索引,确定所述目标i/o请求的滞留位置为储存介质。5.根据权利要求1所述的输入/输出请求检测方法,其中,所述根据所述目标i/o请求的状态信息以及所述目标i/o请求的硬件队列信息中至少一项确定所述目标i/o请求的滞留位置,包括:响应于根据所述目标i/o请求的状态信息确定所述目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据所述目标i/o请求的硬件队列信息确定i/o请求提交队列中包括所述目标i/o请求对应的目标i/o请求提交索引、i/o请求完成队列中包括所述目标i/o请求对应的目标i/o请求完成索引,且根据所述目标i/o请求的状态信息确定所述目标i/o请求的回收状态为未完成回收,确定所述目标i/o请求的滞留位置为软件回收流程。6.根据权利要求1所述的输入/输出请求检测方法,其中,所述根据所述目标i/o请求的状态信息以及所述目标i/o请求的硬件队列信息中至少一项确定所述目标i/o请求的滞留位置,包括:
响应于根据所述目标i/o请求的状态信息确定所述目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据所述目标i/o请求的硬件队列信息确定i/o请求提交队列中至少一对连续的与所述目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号小于前一个目标i/o请求提交索引的序号,确定所述目标i/o请求的滞留位置为驱动层。7.根据权利要求1所述的输入/输出请求检测方法,其中,所述根据所述目标i/o请求的状态信息以及所述目标i/o请求的硬件队列信息中至少一项确定所述目标i/o请求的滞留位置,包括:响应于根据所述目标i/o请求的状态信息确定所述目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据所述目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与所述目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、且i/o请求完成队列中至少一对连续的与所述目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号小于前一个目标i/o请求完成索引的序号,确定所述目标i/o请求的滞留位置为储存介质。8.根据权利要求1所述的输入/输出请求检测方法,其中,所述根据所述目标i/o请求的状态信息以及所述目标i/o请求的硬件队列信息中至少一项确定所述目标i/o请求的滞留位置,包括:响应于根据所述目标i/o请求的状态信息确定所述目标i/o请求的开始执行时刻以及完成执行时刻为均不为0也均不为空,并根据所述目标i/o请求的硬件队列信息确定i/o请求提交队列中任意一对连续的与所述目标i/o请求对应的目标i/o请求提交索引中后一个目标i/o请求提交索引的序号大于或等于前一个目标i/o请求提交索引的序号、i/o请求完成队列中任意一对连续的与所述目标i/o请求对应的目标i/o请求完成索引中后一个目标i/o请求完成索引的序号大于或等于前一个目标i/o请求完成索引的序号,且根据所述目标i/o请求的状态信息确定所述目标i/o请求的回收状态为未完成回收,确定所述目标i/o请求的滞留位置为软件回收流程。9.一种输入/输出请求检测装置,其中,所述装置包括:开始执行时刻获取模块,被配置为获取至少一次输入/输出(i/o)请求的产生时刻;目标信息获取模块,被配置为响应于目标i/o请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取所述目标i/o请求的状态信息以及所述目标i/o请求的硬件队列信息中至少一项;滞留位置确定模块,被配置为根据所述目标i/o请求的状态信息以及所述目标i/o请求的硬件队列信息中至少一项确定所述目标i/o请求的滞留位置。10.一种电子设备,其中,包括存储器和至少一个处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述至少一个处理器执行以实现权利要求1-8任一项所述的方法步骤。11.一种计算机可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现权利要求1-8任一项所述的方法步骤。

技术总结
本公开实施例公开了一种输入/输出请求检测方法、装置、设备及介质,所述方法包括获取至少一次输入/输出(I/O)请求的产生时刻;响应于目标I/O请求的产生时刻与当时时刻之间的时间差大于或等于时间差阈值,获取目标I/O请求的状态信息以及目标I/O请求的硬件队列信息中至少一项;根据目标I/O请求的状态信息以及目标I/O请求的硬件队列信息中至少一项确定目标I/O请求的滞留位置。该方案可以确定引起了I/O夯的目标I/O请求的滞留位置即该目标I/O请求在未能被继续执行时所处的位置,当根据该滞留位置进行进一步分析时,需要分析的数据量较少,提高了确定导致I/O夯出现原因的效率,降低了运维成本。运维成本。运维成本。


技术研发人员:李光水
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2022.02.24
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-3088.html

最新回复(0)