本发明涉及数据分析,具体为一种基于大数据的gil健康状态监测系统及方法。
背景技术:
1、python语言的设计始于1989年,由guido van rossum在荷兰编写。最早的python解释器使用c语言编写,在1991年首次发布,并标记为python 0.9.0版本。这个解释器被称为cpython,其中"c"代表以c语言编写。python语言在接下来的几年内迅速发展,引入了许多新特性和功能。随着用户基础的增长,对解释器性能和功能的需求也逐渐提高。cpython解释器在不断演进中,通过增加新特性、优化性能、改进语言特性、改进标准库等方式来不断完善。开发者社区积极参与解决问题、提出改进意见,并发布新的python版本,包括常见的3.x版本系列。早期的cpython解释器是为了简化内存管理而引入gil的。当时的设计思想是使用引用计数来管理对象生命周期,gil可以避免多线程操作共享数据时的竞争问题。在现今cpython解释器的发展中,gil被经常使用,但是gil也可能处于不健康状态,而gil的不健康会导致cpython解释器工作效率的下降,因此gil的健康问题至关重要;但是,因为导致cpython解释器工作效率下降的原因不会只有gil的健康问题,因此,如何精准预测cpython解释器工作效率并且精准查找是否为gil处于不健康状态导致的效率下降非常重要;根据上述问题,本发明提供了一种基于大数据的gil健康状态监测系统及方法。
技术实现思路
1、本发明的目的在于提供一种基于大数据的gil健康状态监测系统及方法,以解决上述背景技术中提出的问题。
2、为了解决上述技术问题,本发明提供如下技术方案:
3、一种基于大数据的gil健康状态监测方法,所述方法包括以下步骤:
4、s101、收集历史中cpython解释器e次工作时间和工作量,计算cpython解释器的工作效率,公式为公式中g为工作总量,d为工作时间,之后计算e次工作效率的平均值,判断当工作效率低于α的平均值时,工作效率下降;
5、s102、收集历史中cpython解释器在工作效率下降前后的状态数据,根据cpython解释器的工作时间段,将处于同一时间的状态数据分类为同一种状态数据,设收集得到的cpython解释器在工作效率下降前后的状态数据分别为{q1、q2、q3...qn}、{q’1、q’2、q’3...q’n},q1、q2、q3...qn为cpython解释器工作效率下降前的第1、2、3...n种状态数据,q’1、q’2、q’3...q’n为cpython解释器工作效率下降后的第1、2、3...n种状态数据,n为正整数;
6、s103、对比cpython解释器工作效率下降前后的n种状态数据,分别计算每种状态数据在工作效率下降前后的差值,公式为:
7、c=|si-s’i|
8、上述公式中c为每种状态数据在工作效率下降前后的差值,si为工作效率下降前的状态数据值,s’i为工作效率下降后的状态数据值,0<i<n,i为正整数;
9、s104、在计算得到每种状态数据在工作效率下降前后的差值后,得到n种差值数据为{c1、c2、c3...cn},c1、c2、c3...cn为计算得到的第1、2、3...n种状态数据的差值,n为正整数,计算n种状态数据差值的标准差,公式为:
10、
11、上述公式中c_b为n种状态数据差值的标准差,c_p为n中状态数据差值的平均值,0<i<n;
12、s105、根据计算得到的n种状态数据差值的标准差判断影响cpython解释器工作效率的可视数据,具体为:当ci>c_b时,判断ci对应的状态数据为影响cpython解释器工作效率的可视数据l,当ci≤c_b时,判断ci对应的状态数据不为影响cpython解释器工作效率的可视数据,进行舍弃;依次对n种状态数据进行判断后得到影响cpython解释器工作效率下降可视数据集为{l1、l2、l3...lm},l1、l2、l3...lm为判断得到的第1、2、3...m种影响cpython解释器工作效率下降可视数据,m为正整数,1<m<n。
13、利用历史数据对cpython解释器工作效率下降前后的各种状态数据进行对比分析,得到可以反应出工作效率下降的状态数据,并视为可视数据,利用可视数据可以清晰的监测cpython解释器在实时工作中的效率,对工作效率进行预测;
14、s200、收集历史中gil处于非健康状态时cpython解释器的工作数据,对工作数据进行分析归类,查找并生成gil的特征数据集;
15、进一步的,查找并生成gil的特征数据集的具体步骤为:
16、s201、分别收集历史中gil处于非健康状态和健康状态时,cpython解释器工作中的状态数据,根据cpython解释器的工作时间段,将处于同一时间的状态数据分类为同一种状态数据,设收集得到gil处于健康状态和非健康状态时的cpython解释器工作中的状态数据分别为{p1、p2、p3...pn}、{p’1、p’2、p’3...p’n},p1、p2、p3...pn为收集得到的cpython解释器在gil处于健康状态时的第1、2、3...n种状态数据,p’1、p’2、p’3...p’n收集得到的cpython解释器在gil处于非健康状态时的第1、2、3...n种状态数据,n为正整数;
17、s202、对比收集得到的gil处于健康状态和非健康状态时,cpython解释器工作中的状态数据pi和p’i,经过比较后,将在gil处于不同状态时数据发生变化的状态数据种类作为gil的关联数据集;
18、s203、在对比得到gil的关联数据后,比较gil处于健康状态时的相同种类状态数据,gil处于非健康状态时的相同种类状态数据,提取在gil的状态未发生变化而cpython解释器工作中的状态数据发生变化的数据种类,对提取的数据种类进行整理得到gil扰乱数据集;在查找得到的关联数据中,虽然状态数据发生了变化,但是不一定时由于gil不健康而导致的,因此,通过对比gil在同一状态时的状态数据可以查找到与gil状态无关的变化数据,将关联数据中无关的变化数据进行剔除后,得到的为在cpython解释器工作中可以反应gil状态的状态数据;
19、s204、将gil的关联数据集和扰乱数据集进行对比,剔除关联数据集中的扰乱数据,将剔除后的数据集作为gil的特征数据集。
20、s300、对历史中的cpython解释器工作时的数据进行分析,分别计算cpython解释器工作效率阈值和gil健康状态阈值;
21、进一步的,分别计算cpython解释器工作效率阈值和gil健康状态阈值的具体步骤为:
22、s301、计算cpython解释器历史中在效率下降前的每种可视数据的平均值s_p,收集历史中cpython解释器h次工作效率下降前后可视数据集中每种状态数据的数据差值,计算每种可视数据差值的平均值,公式为:
23、
24、公式中c_p为每种可视数据工作效率下降前后差值的平均值,c_l为收集的h次工作效率下降前后每种可视数据差值,h为每种可视数据差值的个数;最终计算得到m种可视数据工作效率下降前后的差值的平均值;
25、s302、收集历史中cpython解释器工作效率下降时可视数据发生改变的平均个数a,计算cpython解释器工作效率阈值,公式为:
26、
27、公式中,e_y表示cpython解释器工作效率阈值,a表示历史中cpython解释器工作效率下降时可视数据发生改变的平均个数,c_p表示每种可视数据在工作效率下降前后的差值平均值,m为可视数据的总个数;
28、对于cpython解释器工作效率阈值的计算,利用历史中工作效率下降时可视数据的变化量之和,再乘以平均每次的变化状态数据个数占总状态数据个数的比,可以反应出cpython解释器工作效率下降的标准;
29、s303、收集gil处于非健康状态时,cpython解释器工作效率下降后发生变化的状态数据总个数为k,计算gil健康状态阈值,公式为:
30、
31、公式中,he为gil健康状态阈值,b为cpython解释器工作效率下降后发生变化的状态数据中为gil的特征数据的个数。
32、s400、在cpython解释器工作时实时收集可视数据集,根据工作效率阈值对cpython解释器进行实时监控预警;
33、进一步的,根据工作效率阈值对cpython解释器进行实时监控预警的具体步骤为:
34、s401、实时收集cpython解释器在工作时的可视数据,根据收集的可视数据计算实时的效率指数,公式为:
35、
36、公式中,e_s为cpython解释器在工作时的效率指数,m为可视数据的个数,ssr每种可视数据的实时数据值,s_p为历史中效率下降前的每种可视数据的平均值,1<r<m;
37、s402、当e_s≥e_y时,预测cpython解释器的工作效率发生下降,发出效率预警,当e_s>e_y时,预测cpython解释器的工作效率不会发生下降。
38、s500、在对cpython解释器进行效率预警后,根据实时的可视数据和gil特征数据计算gil的实时健康指数;
39、进一步的,根据实时的可视数据和gil特征数据计算gil的实时健康指数的具体步骤为:
40、s501、当对cpython解释器发出效率预警后,对可视数据进行分析,分别计算收集的实时可视数据和历史中效率下降前的每种可视数据的平均值的差值,当差值大于0时,判断对应的可视数据为影响cpython解释器工作效率下降的状态数据;
41、s502、在经过计算后,得到收集的实时可视数据中影响cpython解释器工作效率下降的状态数据为{g1、g2、g3...gj},g1、g2、g3...gj为判断得到的第1、2、3...j种影响cpython解释器工作效率下降的状态数据,j为正整数,1<j<m;
42、s503、利用gil的特征数据集对影响cpython解释器工作效率下降的数据进行筛选,提取出s502所述集合中为gil的特征数据的状态数据为{w1、w2、w3...wf},w1、w2、w3...wf为影响cpython解释器工作效率下降的数据集中第1、2、3...f个gil的特征数据,f为正整数;
43、s504、计算实时gil健康指数,公式为:
44、
45、公式中,he_s为实时的gil健康指数,f为j个影响cpython解释器工作效率下降的状态数据中为gil特征数据个数,j为影响cpython解释器工作效率下降的状态数据总数,swe为影响cpython解释器工作效率下降的状态数据中f个gil特征数据的实时数据值,sgu为影响cpython解释器工作效率下降的j个状态数据的数据值,1<e<f,1<u<j。
46、在cpython解释器工作时,发现效率下降后,无法单纯根据效率下降判断gil处于不健康状态,因为导致cpython解释器工作效率下降的因素多种多样,因此,在发出效率预警后,还需要对gil的健康指数进行计算,判断是否为gil不健康导致的cpython解释器工作效率下降,若是则发出预警,若不是则排除gil处于不健康状态的可能性,查找其他原因导致cpython解释器工作效率下降;
47、s600、根据gil健康状态阈值判断gil的实时健康指数是否为非健康状态,并进行gil健康预警。
48、进一步的,进行gil健康预警的具体步骤为:
49、利用gil健康状态阈值对实时计算的gil健康指数进行判断,当he_s≥he_y时,判断gil处于非健康状态,发出预警;当he_s<he_y时,判断gil处于健康状态,排除gil不健康导致cpython解释器工作效率下降。
50、一种基于大数据的gil健康状态监测系统,gil健康状态监测系统包括数据收集模块、数据分析模块、阈值计算模块、工作效率预警模块和gil状态预警模块;
51、所述数据收集模块用于收集历史中cpython解释器的工作状态数据和gil健康状态数据;
52、所述数据分析模块用于对收集得到的历史数据进行分析,计算得到cpython解释器工作效率下降可视数据集和gil的特征数据集;
53、所述阈值计算模块用于计算cpython解释器工作效率阈值和gil健康状态阈值;
54、所述工作效率预警模块用于根据工作效率阈值判断实时cpython解释器工作效率,并进行预警;
55、所述gil状态预警模块用于根据gil健康状态阈值对实时的gil状态进行判断,并进行预警。
56、数据分析模块包括可视数据计算单元和gil特征数据计算单元;
57、所述可视数据计算单元用于对历史中的cpython解释器工作效率下降前后的状态数据进行计算,得到每个状态数据工作效率下降前后的差值,对每种状态数据的差值进行判断,得到工作效率下降的可视数据集;
58、所述gil特征数据计算单元用于对历史中gil处于健康和非健康时的cpython解释器的状态数据进行收集判断,分别分析gil处于不同状态和同种状态时的状态数据,得到gil的特征数据集。
59、阈值计算模块包括工作效率阈值计算单元和gil健康状态阈值计算单元;
60、所述工作效率阈值计算单元用于对历史中cpython解释器工作中的可视数据进行差值计算,通过对历史中可视数据差值平均值和个数计算cpython解释器的工作效率阈值;
61、所述gil健康状态阈值计算单元用于对历史中cpython解释器工作效率下降时gil处于非健康状态的个数在所有变化数据个数中的占比进行计算,得到gil健康状态阈值。
62、与现有技术相比,本发明所达到的有益效果是:
63、1、本发明通过对cpython解释器的历史工作数据进行收集分析,对比得到反应cpython解释器工作效率的可视数据,可以通过对可视数据的实时监测实现对cpython解释器工作效率的预测并进行提前预警,保障了cpython解释器的工作效率。
64、2、本发明通过对cpython解释器中gil的特征数据进行查找,利用查找的特征数据实现对gil健康状态的实时监测,当判断gil处于不健康状态时发出预警,并对gil进行处理,减少cpython解释器的工作时间。
65、3、本发明在对cpython解释器进行工作效率下降预警后,对cpython解释器工作效率下降的原因是否为gil不健康导致的进行判断,可以精准的对cpython解释器工作效率下降原因进行排查,并且可以通过cpython解释器的工作效率对gil的健康状态进行初步判断,避免不必要的资源消耗。
1.一种基于大数据的gil健康状态监测方法,其特征在于:所述方法包括以下步骤:
2.根据权利要求1所述的一种基于大数据的gil健康状态监测方法,其特征在于:所述s100中查找并生成cpython解释器工作效率下降可视数据集的具体步骤为:
3.根据权利要求1所述的一种基于大数据的gil健康状态监测方法,其特征在于:所述s200中查找并生成gil的特征数据集的具体步骤为:
4.根据权利要求1所述的一种基于大数据的gil健康状态监测方法,其特征在于:所述300中分别计算cpython解释器工作效率阈值和gil健康状态阈值的具体步骤为:
5.根据权利要求1所述的一种基于大数据的gil健康状态监测方法,其特征在于:所述s400中根据工作效率阈值对cpython解释器进行实时监控预警的具体步骤为:
6.根据权利要求1所述的一种基于大数据的gil健康状态监测方法,其特征在于:所述s500中根据实时的可视数据和gil特征数据计算gil的实时健康指数的具体步骤为:
7.根据权利要求1所述的一种基于大数据的gil健康状态监测方法,其特征在于:所述s600中进行gil健康预警的具体步骤为:
8.一种基于大数据的gil健康状态监测系统,其特征在于:gil健康状态监测系统包括数据收集模块、数据分析模块、阈值计算模块、工作效率预警模块和gil状态预警模块;
9.根据权利要求8所述的一种基于大数据的gil健康状态监测系统,其特征在于:所述数据分析模块包括可视数据计算单元和gil特征数据计算单元;
10.根据权利要求8所述的一种基于大数据的gil健康状态监测系统,其特征在于:所述阈值计算模块包括工作效率阈值计算单元和gil健康状态阈值计算单元;