检测I/O性能抖动的方法以及装置制造方法及图纸

技术编号:33527803 阅读:14 留言:0更新日期:2022-05-19 01:52
本说明书实施例提供检测I/O性能抖动的方法以及装置,其中所述方法包括:采集若干个I/O请求达到生命周期内的多个关键状态时分别对应的时间信息,其中,所述多个关键状态至少包括:I/O请求下发至磁盘的状态、磁盘完成I/O请求的状态、I/O请求结束的状态;解析所述I/O请求,以获取所述I/O请求的唯一标识信息;记录所述关键状态、所述I/O请求的唯一标识信息以及所述时间信息的对应关系;根据所述对应关系,按任意两个关键状态之间为一个关键区间分析所述时间信息,得到多个关键区间各自对应的延迟分析结果。迟分析结果。迟分析结果。

【技术实现步骤摘要】
检测I/O性能抖动的方法以及装置


[0001]本说明书实施例涉及计算机
,特别涉及一种方法。本说明书一个或者多个实施例同时涉及一种检测I/O性能抖动的装置,一种计算设备,以及一种计算机可读存储介质。

技术介绍

[0002]在云存储环境下,可能会由于各种原因出现I/O性能抖动。要想解决I/O性能抖动的问题,首先要对性能抖动进行检测。目前检测I/O性能抖动,在业内用的比较多的是blktrace工具,其通过linux内核下blktrace模块实现了对linux存储I/O事件捕获的功能,进而进行I/O性能分析。
[0003]但是,由于blktrace过于集中分析I/O栈的block层,分析的不够全面而且结果过于离散,无法清晰地的给出I/O性能抖动的瓶颈点。

技术实现思路

[0004]有鉴于此,本说明书实施例提供了一种检测I/O性能抖动的方法。本说明书一个或者多个实施例同时涉及一种检测I/O性能抖动的装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
[0005]根据本说明书实施例的第一方面,提供了一种检测I/O性能抖动的方法,包括:采集若干个I/O请求达到生命周期内的多个关键状态时分别对应的时间信息,其中,所述多个关键状态至少包括:I/O请求下发至磁盘的状态、磁盘完成I/O请求的状态、I/O请求结束的状态;解析所述I/O请求,以获取所述I/O请求的唯一标识信息;记录所述关键状态、所述I/O请求的唯一标识信息以及所述时间信息的对应关系;根据所述对应关系,按任意两个关键状态之间为一个关键区间分析所述时间信息,得到多个关键区间各自对应的延迟分析结果。
[0006]可选地,所述多个关键状态,还包括:I/O请求产生的状态、I/O请求下发至驱动的状态;所述多个关键区间至少包括:第一状态与第二状态之间形成的关键区间,其中,所述第一状态为所述I/O请求产生的状态或者所述I/O请求下发至驱动的状态,所述第二状态为所述I/O请求下发至磁盘的状态、磁盘完成I/O请求的状态或者I/O请求结束的状态;以及,所述I/O请求下发至磁盘的状态、磁盘完成I/O请求的状态、I/O请求结束的状态中任意两对关键状态形成的两个关键区间,其中,一对关键状态对应形成一个关键区间。
[0007]可选地,所述采集若干个I/O请求达到生命周期内的多个关键状态时分别对应的时间信息,包括:基于内核追踪技术,在I/O生命周期内多个关键状态分别对应的系统内核函数上挂上钩子函数;其中,所述钩子函数用于从所挂的系统内核函数获取所述I/O请求达到所述关键状态的时间戳。
[0008]可选地,所述记录所述关键状态、所述I/O请求的唯一标识信息以及所述时间信息的对应关系,包括:通过以所述I/O请求的唯一标识信息为key,对hash map进行搜索;如果
查找到以所述I/O请求的唯一标识信息为key的元素,在所述元素中记录所述关键状态对应的时间信息;如果未查找到以所述I/O请求的唯一标识信息为key的元素,增加以所述I/O请求的唯一标识信息为key的元素,在所述元素中记录所述关键状态对应的时间信息。
[0009]可选地,在所述根据所述对应关系,按任意两个关键状态之间为一个关键区间分析所述时间信息之前,还包括:根据所述对应关系中记录的时间信息,统计每个I/O请求的总延迟;通过将每个I/O请求对应的总延迟与预设延迟阈值比较,从所述若干个I/O请求中剔除未发生性能抖动的I/O请求。
[0010]可选地,所述根据所述对应关系,按任意两个关键状态之间为一个关键区间分析所述时间信息,得到多个关键区间各自对应的延迟分析结果,包括:根据所述对应关系,按每两个相邻关键状态之间为一个关键区间分析所述时间信息,得到多个关键区间各自对应的延迟消耗分布、最大耗时、最小耗时、平均耗时中的任一种或多种分析结果;其中,所述延迟消耗分布具体根据所述若干个I/O请求在对应关键区间中的耗时占所述多个关键区间中的耗时的占比得到;所述最大耗时具体根据所述若干个I/O请求在对应关键区间中延迟最大的I/O请求的耗时得到;所述最小耗时具体根据所述若干个I/O请求在对应关键区间中延迟最小的I/O请求的耗时得到;所述平均耗时具体根据所述若干个I/O请求在对应关键区间中耗时的平均值得到。
[0011]可选地,还包括:从解析若干个I/O请求的解析结果中,获取进程相关的关键信息;根据所述关键信息,按每个进程分析所述时间信息,得到多个进程各自对应的延迟分析结果。
[0012]可选地,还包括:根据所述时间信息,确定采集到的I/O请求中I/O总延迟最大的I/O请求;和/或,输出所述多个关键区间各自对应的延迟分析结果,并在输出中标识出所述多个关键区间中延迟最大的区间。
[0013]可选地,还包括:统计总I/O数、读写I/O数、清空I/O数、I/O请求对应的操作磁盘的位置、I/O请求对应的操作磁盘的长度、I/O请求对应的队列信息中的一种或多种附加信息;在输出所述延迟分析结果时,输出所述附加信息。
[0014]根据本说明书实施例的第二方面,提供了一种检测I/O性能抖动的装置,包括:信息采集模块,被配置为采集若干个I/O请求达到生命周期内的多个关键状态时分别对应的时间信息,其中,所述多个关键状态至少包括:I/O请求下发至磁盘的状态、磁盘完成I/O请求的状态、I/O请求结束的状态。请求解析模块,被配置为解析所述I/O请求,以获取所述I/O请求的唯一标识信息。关系记录模块,被配置为记录所述关键状态、所述I/O请求的唯一标识信息以及所述时间信息的对应关系。延迟分析模块,被配置为根据所述对应关系,按任意两个关键状态之间为一个关键区间分析所述时间信息,得到多个关键区间各自对应的延迟分析结果。
[0015]根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:采集若干个I/O请求达到生命周期内的多个关键状态时分别对应的时间信息,其中,所述多个关键状态至少包括:I/O请求下发至磁盘的状态、磁盘完成I/O请求的状态、I/O请求结束的状态;解析所述I/O请求,以获取所述I/O请求的唯一标识信息;记录所述关键状态、所述I/O请求的唯一标识信息以及所述时间信息的对应关系;根据所述对应关系,按任意两个关键
状态之间为一个关键区间分析所述时间信息,得到多个关键区间各自对应的延迟分析结果。
[0016]根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本说明书任意实施例所述检测I/O性能抖动的方法的步骤。
[0017]本说明书一个实施例提供了检测I/O性能抖动的方法,由于该方法采集若干个I/O请求达到生命周期内的多个关键状态时分别对应的时间信息,而所述多个关键状态至少包括I/O请求下发至磁盘的状态、磁盘完成I/O请求的状态,I/O请求结束的状态这几个对性能分析具有重要影响的状态,并记录关本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种检测I/O性能抖动的方法,包括:采集若干个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请求下发至磁盘的状态、磁盘完成I/O请求的状态或者I/O请求结束的状态;以及,所述I/O请求下发至磁盘的状态、磁盘完成I/O请求的状态、I/O请求结束的状态中任意两对关键状态形成的两个关键区间,其中,一对关键状态对应形成一个关键区间。3.根据权利要求1所述的方法,所述采集若干个I/O请求达到生命周期内的多个关键状态时分别对应的时间信息,包括:基于内核追踪技术,在I/O生命周期内多个关键状态分别对应的系统内核函数上挂上钩子函数;其中,所述钩子函数用于从所挂的系统内核函数获取用于确定所述唯一标识信息的请求信息以及所述I/O请求达到所述关键状态的时间戳。4.根据权利要求1所述的方法,所述记录所述关键状态、所述I/O请求的唯一标识信息以及所述时间信息的对应关系,包括:通过以所述I/O请求的唯一标识信息为key,对hash map进行搜索;如果查找到以所述I/O请求的唯一标识信息为key的元素,在所述元素中记录所述关键状态对应的时间信息;如果未查找到以所述I/O请求的唯一标识信息为key的元素,增加以所述I/O请求的唯一标识信息为key的元素,在所述元素中记录所述关键状态对应的时间信息。5.根据权利要求1所述的方法,在所述根据所述对应关系,按任意两个关键状态之间为一个关键区间分析所述时间信息之前,还包括:根据所述对应关系中记录的时间信息,统计每个I/O请求的总延迟;通过将每个I/O请求对应的总延迟与预设延迟阈值比较,从所述若干个I/O请求中剔除未发生性能抖动的I/O请求。6.根据权利要求1所述的方法,所述根据所述对应关系,按任意两个关键状态之间为一个关键区间分析所述时间信息,得到多个关键区间各自对应的延迟分析结果,包括:根据所述对应关系,按每两个相邻关键状态之间为一个关键区间分析所述时间信息,得到多个关键区间各自对应的延迟消耗分布、最大耗时、最小耗时...

【专利技术属性】
技术研发人员:李光水
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1