基于机器学习的勘探开发云资源智能调度方法与流程

未命名 08-07 阅读:227 评论:0


1.本发明涉及油田开发技术领域,特别是涉及到一种基于机器学习的勘探开发云资源智能调度方法。


背景技术:

2.在云计算高速发展的大背景下,处理资源高度聚集,形成了大量的应用系统。硬件资源的分配情况将直接影响应用系统的运行效率。通过互联网调查公司发布的数据显示,在软件运维过程中,cpu、内存、网络、临时盘空间这些因素,对应用系统运行效率会产生比较重要的影响,这些资源的不足往往会造成应用系统速度变慢,运行效率降低,影响用户的体验。
3.在申请号:cn201911175029.2的中国专利申请中,涉及到一种储层评价模型构建方法及储层识别方法,属于地球物理勘探领域和人工智能领域,获取不同类型储层对应起止深度段的测井数据;通过对已有试油井井段的测井数据进行分割、重组、计算,形成新的储层评价样本,从而实现储层评价样本的扩充,对所述储层评价样本进行训练,得到储层评价模型,利用该储层评价模型进行储层预测。解决研究目标区域内缺少储层识别样本数据,导致当对储层评价样本进行机器学习和深度学习时缺少样本支撑,以及偏少的样本学习后模型应用时符合率偏低的问题。
4.在申请号:cn201410450288.2的中国专利申请中,涉及到一种基于虚拟化技术的勘探应用云桌面构建方法。该方法在虚拟化技术的基础上,在云端统一管理主机、存储、用户、应用等资源,前台为勘探软件应用用户构建一个集成的地震资料处理解释软件系统的云桌面环境,用户通过windows或linux下客户端登录到该环境中,借助负载均衡和调度功能,可以启动位于云端的各种地震资料处理解释软件,在本地云桌面上进行并完成各种交互操作,实现软件应用的处理解释一体化,而不必关心切换当前的运行环境。在云桌面所运行的宿主机出现故障或负载问题时,可以迁移到另外的宿主机继续运行;用户可以专注于专业技术,以单一的云桌面为起点,进而高效地完成所有相关的地震资料处理解释工作。
5.在申请号:cn201911398934.4的中国专利申请中,涉及到一种油气勘探开发领域的知识图谱的构建方法及装置,可以根据预先建立油气勘探开发领域的本体库分别从不同方面的非结构化数据、半结构化数据和结构化数据中抽取知识点,从而分别构建多个方面的知识图谱,本发明还可以将多个方面的知识图谱融合为一个知识图谱。该发明获得知识图谱融合了油气勘探开发领域不同方面的非结构化数据、半结构化数据和结构化数据中的知识点,因此完成了油气勘探开发领域的知识治理。通过本发明构建的知识图谱,用户可以方便的对油气勘探开发领域的知识进行使用。
6.以上现有技术均与本发明有较大区别,未能解决我们想要解决的技术问题,为此我们发明了一种新的基于机器学习的勘探开发云资源智能调度方法。


技术实现要素:

7.本发明的目的是提供一种基于bp神经网络和遗传算法研究服务器资源占用情况,实现云资源智能调度的基于机器学习的勘探开发云资源智能调度方法。
8.本发明的目的可通过如下技术措施来实现:基于机器学习的勘探开发云资源智能调度方法,该基于机器学习的勘探开发云资源智能调度方法包括:
9.步骤1,采集勘探开发云运维数据;
10.步骤2,对勘探开发云运维数据数据样本进行预处理和训练勘探开发云bp神经网络模型;
11.步骤3,利用训练好的bp神经网络模型,对作业模块类型进行预测,给出预测的模块类型,并进行指标计算;
12.步骤4,获取作业发布的模块资源数据,进行云主机调度。
13.本发明的目的还可通过如下技术措施来实现:
14.在步骤1,采集勘探开发运维数据,获取计算机cpu利用率、内存占用、磁盘读写、网络带宽这些相关数据。
15.在步骤1,采集的勘探开发运维数据包括:
16.cpu相关字段:模块对应进程的system cpu累计使用秒数、模块对应进程的user cpu累计使用秒数、块对应的进程启动时相对于1970/01/01的总秒数、模块对应的进程当前时刻的线程数量、模块对应的进程当前时刻状态为running的线程数量、模块对应的进程当前时刻状态为sleeping的线程数量、模块对应的进程当前时刻状态为waiting的线程数量、模块对应的进程当前时刻状态为zombie的线程数量、模块对应的进程当前时刻状态为other的线程数量、模块的指标cpu_seconds_system_total采集间隔差值、模块的指标cpu_seconds_user_total采集间隔的差值;
17.内存相关字段:模块对应的进程使用的pss常驻内存字节数、模块对应的进程使用的pss交换内存字节数、模块对应的进程使用的rss内存字节数、模块对应的进程使用的vss内存字节数、模块对应的进程使用的交换内存字节数、模块对应的进程的major page faults数量累计值、模块对应的进程的minor page faults数量累计值、模块对应的进程上下文切换的非自愿次数累计值、模块对应的进程上下文切换的自愿次数累计值、模块对应的进程当前打开的文件描述符的数量、模块对应的进程当前打开的文件描述符与最大文件描述符的比率、模块的指标major_page_faults_total采集间隔差值、模块的指标minor_page_faults_total采集间隔差值;
18.磁盘相关字段:模块对应的进程读取的字节数累计值、模块对应的进程累计写的字节数、模块的指标write_bytes_total在相邻的采集间隔的差值、模块的指标read_bytes_total在相邻的采集间隔的差值;
19.网络带宽相关字段:模块对应的进程接收的字节总数、模块对应的进程发送的字节总数、网卡接收错误总字节,网卡发送错误总字节、tcp接收的报文数、tcp接收的错误报文数、tcp发送的报文数、tcp发送的错误报文数。
20.在步骤1,考虑到不同作业类型,模块启动进程的方式有所差异,使用了两种不同的方式采集模块的数据;分别采集在不知道模块名的情况下的数据和已知模块名情况下的数据。
21.在步骤1,在不知道模块名的情况下:
22.查看子节点上当前运行的作业进程,读取作业进程的目录结构,得到临时盘中的对应作业目录,从作业目录中找到对应的模块名的压缩文件,扫描文件,若文件存在,则将该作业进程及其子进程的资源占用数据进行整合,作为该模块的资源占用样本。
23.在步骤1,在已知模块名的情况下:
24.根据模块名直接查找与模块名相关的进程,将该作业进程及其子进程的资源情况整合,作为该模块的资源占用样本。
25.在步骤2,将获取到的勘探开发云运维数据,包括模块对应进程的system cpu累计使用秒数、模块对应进程的user cpu累计使用秒数、模块对应的进程使用的pss常驻内存字节数、模块对应的进程使用的pss交换内存字节数、模块对应的进程读取的字节数累计值、模块对应的进程累计写的字节数、模块对应的进程接收的字节总数、模块对应的进程发送的字节总数等,按照80%、10%和10%的比例划分为训练集、测试集和验证集;利用现场测试以及专家审定的模块类型作为样本数据,建立样本库,作为训练样本和测试样本。
26.在步骤2,对勘探开发云运维数据进行特征提取处理,将时间序列数据提取最大值,均值,方差转换成特征数据;并对数据做归一化、缺失值处理,对处理后的数据集进行特征选择,选取与标签相关性最好的20个特征作为模型训练的特征。最后进行数据分割。
27.在步骤2,构建勘探开发云bp神经网络模型,将标注的训练数据集作为bp神经网络的输入样本,对bp神经网络进行训练,获得模型,输出模块类型;然后利用测试数据集对训练后的bp神经网络模型进行验证,调整参数,迭代训练模型,若模型满足精度要求,则获得训练好的勘探开发云bp神经网络模型。
28.在步骤2,构建的bp神经网络模型,包括训练批次、迭代次数、学习率、网络单元及各个单元的激活函数。
29.在步骤3,对模块类型进行分类预测,并计算得到各个模块的cpu利用率、内存占用率、io等待时间,作为之后的云主机调度的作业主机的特征标签。
30.在步骤4,利用预测好的模块类型,分析作业的资源占用情况,以目前各个节点的作业类型为基础,计算新发布作业所在节点的资源占用,运用遗传算法,根据当前物理机、虚拟机节点的cpu计算核心数量、cpu负载、内存、缓存、io时延等指标数据,计算出虚拟机部署到物理机的最佳方案,并给出具体的虚拟机迁移调度路径,对虚拟机进行迁移,使得迁移后资源互补的虚拟机部署到相同的物理机。
31.在步骤4,获取现有数据以及新发布作业数据,及宿主机物理资源消耗情况的数据,通过遗传算法计算出作业节点虚拟机在宿主机上的分配方案,具体步骤如下:
32.通过各宿主机资源占用情况和未来资源变化趋势信息,这些信息包括宿主机cpu数量、cpu负载趋势、内存变化趋势、缓存压力、io阻塞时延这些信息;
33.根据bp神经网络分类算法获取的模块类型结果,计算各物理机当前运行指标,建立云主机实时调度模型。根据当前物理机、虚拟机节点的cpu计算核心数量、cpu负载、内存、缓存、io时延这些指标数据,生成物理机虚拟机资源使用矩阵。本发明实施例中,主要目标是使得物理机的cpu,内存,磁盘,网络的利用率尽量差别不大。物理机的各项指标的利用率的方差越小,资源越均衡,但每项具体的利用率不能太高。通过遗传算法求解最优解的方式,计算出最佳的部署方案,并给出具体的调度路径。
34.本发明实施例中,基于遗传算法解决云主机调度问题,分为以下几个部分。
35.(1)初始化种群
36.按照种群数目根据编码规则随机生成n个个体。将物理机中的虚拟机的指标数据汇总并编码成字符串形式按照物理机编号的顺序拼接起来,每个字符串结构被称为一个个体(染色体),多个个体组合成一个种群。初始化种群即创建一群个体,根据个体中字符的位置可对应到相关物理机。个体编码中的一个字符即一个基因,对应虚拟机的一个指标。在该实施例中初始化种群的个体数为10。
37.在创建个体时,采用实数进行编码,使用3行n列的矩阵fielddr来作为译码矩阵,n为染色体所表达的控制变量个数。结构为
[0038][0039]
上式中x1…
xn为n个控制变量,下界、上界表示控制变量取值的边界,x1下界

xn下界为n个控制变量取值的下界,x1上界

xn上界为n个控制变量取值的上界,vartypes1…
vartypesn为n个控制变量的类型,类型为0表示对应的控制变量是连续型变量,1表示对应的控制变量是离散型变量。排列编码的译码矩阵要求fielddr的第一行所有元素都相等,第二行所有元素也都相等,且第三行元素均为1(排列编码变量是离散的)。fielddr有lind列(即染色体长度为lind)。
[0040]
要求:上界-下界+1》=lind。
[0041]
(2)选择操作
[0042]
选择操作作用于避免有效基因的损失,选择操作是建立在种群中个体的适应度评估基础上的,由于此场景是最小化目标函数,故将目标函数的倒数作为适应度函数。根据适应度函数计算每个个体的适应度大小,按照从高到低的顺序排序,使适应性高,即物理机资源指标方差最小的个体得以更大的概率生存,从而提高全局收敛性和计算效率。选择个体还应该满足以下规则:
[0043]
var(time)《0.95*var(fix)
[0044]
即,物理机实时指标要小于0.95倍物理机的固定指标。上式中time表示实时,var(time)表示物理机cpu、内存、网络、临时盘等资源消耗的实时值,fix表示固定,var(fix)表示物理机cpu、内存、网络、临时盘等资源的总值。cpu、内存、网络、临时盘等指标单独计算,每种指标实时值小于0.95倍总值。
[0045]
(3)本发明实施例中,采用改进的轮盘赌算法。具体实施步骤为:首先根据适应度函数计算每个个体的适应度。其次,计算每个个体的个体选择概率和累积概率。然后,在区间[0 1]之间随机生成一个数,判断该数落在哪个区间内,如果落在某个区间,则该区间的个体被选中。
[0046]
(4)交叉算法
[0047]
交叉运算是遗传算法中产生新个体,即在之前迭代种群中没有出现过的个体编码的主要操作过程,它以某一概率相互交换某两个个体之间的部分染色体。
[0048]
具体实施步骤为:首先对种群中的个体进行随机配对,其次随机设置交叉点位置,
最后再相互交换配对染色体之间的部分基因。
[0049]
(5)变异操作
[0050]
变异运算是对个体的某一个或某一些基因的基因值按某一较小的概率进行改变,其也是产生新个体的一种操作方法。
[0051]
本实施例中采用随机生成变异位点的方式。其具体操作过程是:首先确定出各个个体的基因变异位置,基因变异位置即虚拟机中代表某一指标的位置索引,与实际参数对应,然后依照某一概率将变异点的原有基因值取其他值。
[0052]
(6)终止条件,由于问题的最优解无法知道,所以本实施例采用近似收敛准则来终止算法,当种群进化了n代之后最优解已然不变时就认定此时的解为最优解,终止算法。
[0053]
该实施例的目标函数为:
[0054][0055]
上式中x为物理机的各项指标的利用率,为物理机的各项指标的利用率的均值,s2为物理机的各项指标利用率的方差,n为指标的个数,min表示方差越小资源越均衡;time表示实时,var(time)表示物理机cpu、内存、网络、临时盘等资源消耗的实时值,fix表示固定,var(fix)表示物理机cpu、内存、网络、临时盘等资源的总值。cpu、内存、网络、临时盘等指标单独计算,每种指标实时值小于0.95倍总值。
[0056]
计算步骤为:1、对实时数据各个虚拟机指标求和。2、计算物理机各项指标运行状态。3、计算物理中各项指标利用率。4、计算物理机各项指标的方差来查看资源占比的均衡性。方差越小资源越均衡。
[0057]
本发明中的基于机器学习的勘探开发云资源智能调度方法,涉及应用软件的cpu、内存、网络、临时盘等计算资源需求,基于bp神经网络以及遗传算法、研究资源占用类型,实现云资源智能部署。该基于机器学习的勘探开发云资源智能调度方法基于机器学习算法模型,将作业模块进行分类。通过宿主机硬件资源:cpu、内存、磁盘io、网络io等主要资源指标,用遗传算法规划出虚拟机迁移方案,从而实现云主机调度。该方法综合考虑cpu计算核心数量、cpu负载、内存、缓存、io时延等指标数据,改变人工调度模式为“基于多参数智能化调度新模式”。跟踪模块运行资源占用变化,结合业务特点,取得了较好的分类结果。实现了对模块的分类,并利用分类结果,计算了云主机节点资源分配,指导了虚拟机的合理化迁移,减少了资源分配问题影响用户工作效率,有效的提高系统管理工作的信息化水平。
附图说明
[0058]
图1为本发明的基于机器学习的勘探开发云资源智能调度方法的一具体实施例的流程图;
[0059]
图2为本发明的一具体实施例中采集勘探开发运维数据的流程图;
[0060]
图3为本发明的一具体实施例中的基于bp神经网络模型分类以及调度方法的流程图;
[0061]
图4为本发明的一具体实施例中bp神经网络结构的示意图;
[0062]
图5为本发明的一具体实施例中调度方案的示意图。
具体实施方式
[0063]
应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
[0064]
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作和/或它们的组合。
[0065]
云平台运行着大量的应用软件模块,都或多或少的存在一定的资源分配不合理的情况。通过对应用软件模块资源应用情况,开展一定时间的数据采集和挖掘,并对已知的资源需求进行标定,通过机器学习、人工智能手段深入的发掘资源消耗的规律性因素,建立一种监控指标与应用软件运行资源需求预测模型,采用神经网络、机器学习技术,对资源需求进行预测,主动进行主机资源和网络资源的运行优化,减少资源分配问题影响用户工作效率,能有效的提高系统管理工作的信息化水平。
[0066]
如图1所示,图1为本发明的基于机器学习的勘探开发云资源智能调度方法的流程图。该基于机器学习的勘探开发云资源智能调度方法包括:
[0067]
1、采集勘探开发云运维数据;
[0068]
2、对勘探开发云运维数据样本进行预处理和训练勘探开发云bp神经网络模型;
[0069]
3、对专业软件模块资源占用进行分类预测和指标计算;
[0070]
4、获取作业发布的模块资源数据,进行云主机调度。
[0071]
以下为应用本发明的几个具体实施例。
[0072]
实施例1
[0073]
在应用本发明的一具体实施例1中,本发明的基于机器学习的勘探开发云资源智能调度方法具体包括了以下步骤:
[0074]
步骤1,采集勘探开发云运维数据,获取计算机cpu利用率、内存占用、磁盘读写、网络带宽等相关数据。采集数据包括但不限于如下字段:
[0075]
cpu相关字段:模块对应进程的system cpu累计使用秒数、模块对应进程的user cpu累计使用秒数、块对应的进程启动时相对于1970/01/01的总秒数、模块对应的进程当前时刻的线程数量、模块对应的进程当前时刻状态为running的线程数量、模块对应的进程当前时刻状态为sleeping的线程数量、模块对应的进程当前时刻状态为waiting的线程数量、模块对应的进程当前时刻状态为zombie的线程数量、模块对应的进程当前时刻状态为other的线程数量、模块的指标cpu_seconds_system_total采集间隔差值、模块的指标cpu_seconds_user_total采集间隔的差值;
[0076]
内存相关字段:模块对应的进程使用的pss常驻内存字节数、模块对应的进程使用的pss交换内存字节数、模块对应的进程使用的rss内存字节数、模块对应的进程使用的vss内存字节数、模块对应的进程使用的交换内存字节数、模块对应的进程的major page faults数量累计值、模块对应的进程的minor page faults数量累计值、模块对应的进程上
下文切换的非自愿次数累计值、模块对应的进程上下文切换的自愿次数累计值、模块对应的进程当前打开的文件描述符的数量、模块对应的进程当前打开的文件描述符与最大文件描述符的比率、模块的指标major_page_faults_total采集间隔差值、模块的指标minor_page_faults_total采集间隔差值;
[0077]
磁盘相关字段:模块对应的进程读取的字节数累计值、模块对应的进程累计写的字节数、模块的指标write_bytes_total在相邻的采集间隔的差值、模块的指标read_bytes_total在相邻的采集间隔的差值;
[0078]
网络带宽相关字段:模块对应的进程接收的字节总数、模块对应的进程发送的字节总数、网卡接收错误总字节,网卡发送错误总字节、tcp接收的报文数、tcp接收的错误报文数、tcp发送的报文数、tcp发送的错误报文数。
[0079]
考虑到不同作业类型,模块启动进程的方式有所差异,使用了两种不同的方式采集模块的数据。分别采集在不知道模块名的情况下的数据和已知模块名情况下的数据。
[0080]
步骤2,对数据样本进行预处理和训练bp神经网络模型。将获取到的勘探开发云运维数据,包括模块对应进程的system cpu累计使用秒数、模块对应进程的user cpu累计使用秒数、模块对应的进程使用的pss常驻内存字节数、模块对应的进程使用的pss交换内存字节数、模块对应的进程读取的字节数累计值、模块对应的进程累计写的字节数、节模块对应的进程接收的字节总数、模块对应的进程发送的字节总数等,按照80%、10%和10%的比例划分为训练集、测试集和验证集。利用现场测试以及专家审定的模块类型作为样本数据,建立样本库,作为训练样本和测试样本。
[0081]
对勘探开发运维数据进行特征提取处理,将时间序列数据提取最大值,均值,方差等转换成特征数据。并对数据做归一化、缺失值处理,对处理后的数据集进行特征选择,选取与标签相关性最好的20个特征作为模型训练的特征,最后进行数据分割。
[0082]
构建勘探开发云bp神经网络模型,将标注的训练数据集作为bp神经网络的输入样本,对bp神经网络进行训练,获得模型,输出模块类型。然后利用测试数据集对训练后的bp神经网络模型进行验证,调整参数,迭代训练模型,若模型满足精度要求,则获得训练好的勘探开发云bp神经网络模型。
[0083]
构建勘探开发云bp神经网络模型,包括训练批次、迭代次数、学习率、网络单元及各个单元的激活函数等。
[0084]
步骤3,利用训练好的勘探开发云bp神经网络模型,对作业模块类型进行预测,给出预测的模块类型。
[0085]
对模块类型进行分类预测,并计算得到各个模块的cpu利用率、内存占用率、io等待时间等,作为之后的云主机调度的作业主机的特征标签。
[0086]
步骤4,获取作业发布的模块资源数据,进行云主机调度。利用预测好的模块类型,分析作业的资源占用情况,以目前各个节点的作业类型为基础,计算新发布作业所在节点的资源占用,运用遗传算法,根据当前物理机、虚拟机节点的cpu计算核心数量、cpu负载、内存、缓存、io时延等指标数据,计算出虚拟机部署到物理机的最佳方案,并给出具体的虚拟机迁移调度路径,对虚拟机进行迁移,使得迁移后资源互补的虚拟机部署到相同的物理机。
[0087]
实施例2
[0088]
在应用本发明的一具体实施例2中,如图2所示,考虑到不同专业软件采用集群、单
机、并行、串型作业类型,专业处理模块启动的方式有所差异,使用两种不同的方式采集模块的运行数据样本。
[0089]
1)在不知道模块名的情况下:
[0090]
查看子节点上当前运行的作业进程,读取作业进程的目录结构,可以得到临时盘中的对应作业目录,从作业目录中找到对应的模块名的压缩文件,扫描文件,若文件存在,则将该作业进程及其子进程的资源占用数据进行整合,作为该模块的资源占用样本。
[0091]
2)在已知模块名的情况下:
[0092]
根据模块名直接查找与模块名相关的进程,将该作业进程及其子进程的资源情况整合,作为该模块的资源占用样本。
[0093]
实施例3
[0094]
在应用本发明的一具体实施例3中,如图3所示,图3为本发明实施例提供的基于bp神经网络模型分类以及调度方法的流程图。如图3所示,主要包括9个步骤。
[0095]
步骤01:利用图2采集的cpu计算核心数量、cpu负载、内存、缓存、io时延等指标数据,将整个数据分为训练集、测试集和验证集。对训练集和测试集数据利用现场测试及专家审定的方式进行了模块类型标定作为训练样本和测试样本。
[0096]
步骤02:数据的预处理方式如下:
[0097]
将时间序列数据提取最大值,均值,方差等转换成特征数据。
[0098]
归一化处理:消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。采用z-score标准化方法,数据处理后符合标准正态分布,即均值为0,标准差为1。
[0099]
缺失值处理:去掉缺失值,消除对样本特征的影响。
[0100]
特征选择:去掉相似的特征,选取与标签相关性高的特征。
[0101]
步骤03:样本构建,把样本数据分为训练集、测试集和验证集。
[0102]
步骤04:根据样本特征,确定勘探开发云bp神经网络的结构。
[0103]
图4是勘探开发云bp神经网络的模型结构,网络结构包含了多个全连接层,根据模块对应进程的system cpu累计使用秒数、模块对应进程的user cpu累计使用秒数、模块对应的进程使用的pss常驻内存字节数、模块对应的进程使用的pss交换内存字节数、模块对应的进程读取的字节数累计值、模块对应的进程累计写的字节数、模块对应的进程接收的字节总数、模块对应的进程发送的字节总数等字段,提取数据不同层次的特征,构造一个多分类的神经网络。分类类别如下:第一位表示是否cpu密集型,第二位表示是否内存密集型,第三位表示是否磁盘密集型,第四位表示是否网络密集型。示例:0100为内存密集型;1100为cpu内存都密集型。
[0104]
步骤05:模型训练,将打标签的数据随机取80%作为训练集,带入模型进行训练。
[0105]
步骤06:模型评估,通过测试集验证,模型准确度较好。
[0106]
步骤07:模型预测,利用模型评估验证后,效果好的模型对没有打标签的测试数据进行预测。
[0107]
步骤08:获取虚拟机使用情况,新上作业模块类型数据。
[0108]
步骤09:计算虚拟机是否需要迁移,如图5所示,用遗传算法计算如何迁移。
[0109]
获取现有数据以及新发布作业数据,及宿主机物理资源消耗情况的数据,通过推理判断作业节点虚拟机在宿主机上的分配方案,具体步骤如下:
[0110]
通过各宿主机资源占用情况和未来资源变化趋势信息,这些信息包括宿主机cpu数量、cpu负载趋势、内存变化趋势、缓存压力、io阻塞时延等信息;
[0111]
根据勘探开发云bp神经网络分类算法获取的模块类型结果,计算各物理机当前运行指标,建立云主机实时调度模型。根据当前物理机、虚拟机节点的cpu计算核心数量、cpu负载、内存、缓存、i o时延等指标数据,生成物理机虚拟机资源使用矩阵。本发明实施例中,主要目标是使得物理机的cpu,内存,磁盘,网络的利用率尽量差别不大。物理机的各项指标的利用率的方差越小,资源越均衡,但每项具体的利用率不能太高。通过遗传算法求解最优解的方式,计算出最佳的部署方案,并给出具体的调度路径。
[0112]
本发明实施例中,基于遗传算法解决云主机调度问题,分为以下几个部分。
[0113]
(1)初始化种群
[0114]
按照种群数目根据编码规则随机生成n个个体。将物理机中的虚拟机的指标数据汇总并编码成字符串形式按照物理机编号的顺序拼接起来,每个字符串结构被称为一个个体(染色体),多个个体组合成一个种群。初始化种群即创建一群个体,根据个体中字符的位置可对应到相关物理机。个体编码中的一个字符即一个基因,对应虚拟机的一个指标。在该实施例中初始化种群的个体数为10。
[0115]
在创建个体时,采用实数进行编码,使用3行n列的矩阵fielddr来作为译码矩阵,n为染色体所表达的控制变量个数。结构为
[0116][0117]
上式中x1…
xn为n个控制变量,下界、上界表示控制变量取值的边界,x1下界

xn下界为n个控制变量取值的下界,x1上界

xn上界为n个控制变量取值的上界,vartypes1…
vartypesn为n个控制变量的类型,类型为0表示对应的控制变量是连续型变量,1表示对应的控制变量是离散型变量。排列编码的译码矩阵要求fielddr的第一行所有元素都相等,第二行所有元素也都相等,且第三行元素均为1(排列编码变量是离散的)。fielddr有lind列(即染色体长度为lind)。
[0118]
要求:上界-下界+1》=lind。
[0119]
(2)选择操作
[0120]
选择操作作用于避免有效基因的损失,选择操作是建立在种群中个体的适应度评估基础上的,由于此场景是最小化目标函数,故将目标函数的倒数作为适应度函数。根据适应度函数计算每个个体的适应度大小,按照从高到低的顺序排序,使适应性高,即物理机资源指标方差最小的个体得以更大的概率生存,从而提高全局收敛性和计算效率。选择个体还应该满足以下规则:
[0121]
var(time)《0.95*var(fix)
[0122]
即,物理机实时指标要小于0.95倍物理机的固定指标。上式中time表示实时,var(time)表示物理机cpu、内存、网络、临时盘等资源消耗的实时值,fix表示固定,var(fix)表示物理机cpu、内存、网络、临时盘等资源的总值。cpu、内存、网络、临时盘等指标单独计算,
每种指标实时值小于0.95倍总值。
[0123]
(3)本发明实施例中,采用改进的轮盘赌算法。具体实施步骤为:首先根据适应度函数计算每个个体的适应度。其次,计算每个个体的个体选择概率和累积概率。然后,在区间[0 1]之间随机生成一个数,判断该数落在哪个区间内,如果落在某个区间,则该区间的个体被选中。
[0124]
(4)交叉算法
[0125]
交叉运算是遗传算法中产生新个体,即在之前迭代种群中没有出现过的个体编码的主要操作过程,它以某一概率相互交换某两个个体之间的部分染色体。
[0126]
具体实施步骤为:首先对种群中的个体进行随机配对,其次随机设置交叉点位置,最后再相互交换配对染色体之间的部分基因。
[0127]
(5)变异操作
[0128]
变异运算是对个体的某一个或某一些基因的基因值按某一较小的概率进行改变,其也是产生新个体的一种操作方法。
[0129]
本实施例中采用随机生成变异位点的方式。其具体操作过程是:首先确定出各个个体的基因变异位置,基因变异位置即虚拟机中代表某一指标的位置索引,与实际参数对应,然后依照某一概率将变异点的原有基因值取其他值。
[0130]
(6)终止条件,由于问题的最优解无法知道,所以本实施例采用近似收敛准则来终止算法,当种群进化了n代之后最优解已然不变时就认定此时的解为最优解,终止算法。
[0131]
该实施例的目标函数为:
[0132][0133]
上式中x为物理机的各项指标的利用率,为物理机的各项指标的利用率的均值,s2为物理机的各项指标利用率的方差,n为指标的个数,min表示方差越小资源越均衡。计算步骤为:1、对实时数据各个虚拟机指标求和。2、计算物理机各项指标运行状态。3、计算物理中各项指标利用率。4、计算物理机各项指标的方差来查看资源占比的均衡性。方差越小资源越均衡。上式中time表示实时,var(time)表示物理机cpu、内存、网络、临时盘等资源消耗的实时值,fix表示固定,var(fix)表示物理机cpu、内存、网络、临时盘等资源的总值。cpu、内存、网络、临时盘等指标单独计算,每种指标实时值小于0.95倍总值。
[0134]
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域技术人员来说,其依然可以对前述实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
[0135]
除说明书所述的技术特征外,均为本专业技术人员的已知技术。

技术特征:
1.基于机器学习的勘探开发云资源智能调度方法,其特征在于,该基于机器学习的勘探开发云资源智能调度方法包括:步骤1,采集勘探开发云运维数据;步骤2,对勘探开发云运维数据数据样本进行预处理和训练勘探开发云bp神经网络模型;步骤3,利用训练好的勘探开发云bp神经网络模型,对作业模块类型进行预测,给出预测的模块类型,并进行指标计算;步骤4,获取作业发布的模块资源数据,进行云主机调度。2.根据权利要求1所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤1,采集勘探开发云运维数据,获取计算机cpu利用率、内存占用、磁盘读写、网络带宽这些勘探开发云运维相关数据。3.根据权利要求2所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤1,采集的勘探开发运维数据包括如下字段但不限于如下字段:cpu相关字段:模块对应进程的system cpu累计使用秒数、模块对应进程的user cpu累计使用秒数、块对应的进程启动时相对于1970/01/01的总秒数、模块对应的进程当前时刻的线程数量、模块对应的进程当前时刻状态为running的线程数量、模块对应的进程当前时刻状态为sleeping的线程数量、模块对应的进程当前时刻状态为waiting的线程数量、模块对应的进程当前时刻状态为zombie的线程数量、模块对应的进程当前时刻状态为other的线程数量、模块的指标cpu_seconds_system_total采集间隔差值、模块的指标cpu_seconds_user_total采集间隔的差值;内存相关字段:模块对应的进程使用的pss常驻内存字节数、模块对应的进程使用的pss交换内存字节数、模块对应的进程使用的rss内存字节数、模块对应的进程使用的vss内存字节数、模块对应的进程使用的交换内存字节数、模块对应的进程的major page faults数量累计值、模块对应的进程的minor page faults数量累计值、模块对应的进程上下文切换的非自愿次数累计值、模块对应的进程上下文切换的自愿次数累计值、模块对应的进程当前打开的文件描述符的数量、模块对应的进程当前打开的文件描述符与最大文件描述符的比率、模块的指标major_page_faults_total采集间隔差值、模块的指标minor_page_faults_total采集间隔差值;磁盘相关字段:模块对应的进程读取的字节数累计值、模块对应的进程累计写的字节数、模块的指标write_bytes_total在相邻的采集间隔的差值、模块的指标read_bytes_total在相邻的采集间隔的差值;网络带宽相关字段:模块对应的进程接收的字节总数、模块对应的进程发送的字节总数、网卡接收错误总字节,网卡发送错误总字节、tcp接收的报文数、tcp接收的错误报文数、tcp发送的报文数、tcp发送的错误报文数。4.根据权利要求3所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤1,考虑到不同作业类型,模块启动进程的方式有所差异,使用了两种不同的方式采集模块的数据,分别采集在不知道模块名的情况下的数据和已知模块名情况下的数据。5.根据权利要求4所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤1,在不知道模块名的情况下:
查看子节点上当前运行的作业进程,读取作业进程的目录结构,得到临时盘中的对应作业目录,从作业目录中找到对应的模块名的压缩文件,扫描文件,若文件存在,则将该作业进程及其子进程的资源占用数据进行整合,作为该模块的资源占用样本。6.根据权利要求4所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤1,在已知模块名的情况下:根据模块名直接查找与模块名相关的进程,将该作业进程及其子进程的资源情况整合,作为该模块的资源占用样本。7.根据权利要求1所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤2,将获取到的勘探开发运维数据,包括模块对应进程的system cpu累计使用秒数、模块对应进程的user cpu累计使用秒数、模块对应的进程使用的pss常驻内存字节数、模块对应的进程使用的pss交换内存字节数、模块对应的进程读取的字节数累计值、模块对应的进程累计写的字节数、模块对应的进程接收的字节总数、模块对应的进程发送的字节总数,按照80%、10%和10%的比例划分为训练集、测试集和验证集;利用现场测试以及专家审定的模块类型作为样本数据,建立样本库,作为训练样本和测试样本。8.根据权利要求7所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤2,对勘探开发云运维数据进行特征提取处理,将时间序列数据提取最大值,均值,方差转换成特征数据;并对数据做归一化、缺失值处理,对处理后的数据集进行特征选择,选取与标签相关性最好的20个特征作为模型训练的特征,最后进行数据分割。9.根据权利要求8所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤2,构建勘探开发云bp神经网络模型,将标注的训练数据集作为bp神经网络的输入样本,对bp神经网络进行训练,获得模型,输出模块类型;然后利用测试数据集对训练后的bp神经网络模型进行验证,调整参数,迭代训练模型,若模型满足精度要求,则获得训练好的勘探开发云bp神经网络模型。10.根据权利要求9所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤2,构建的勘探开发云bp神经网络模型,包括训练批次、迭代次数、学习率、网络单元及各个单元的激活函数。11.根据权利要求1所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤3,对模块类型进行分类预测,并计算得到各个模块的cpu利用率、内存占用率、io等待时间,作为之后的云主机调度的作业主机的特征标签。12.根据权利要求1所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤4,利用预测好的模块类型,分析作业的资源占用情况,以目前各个节点的作业类型为基础,计算新发布作业所在节点的资源占用,运用遗传算法,根据当前物理机、虚拟机节点的cpu计算核心数量、cpu负载、内存、缓存、io时延这些指标数据,计算出虚拟机部署到物理机的最佳方案,并给出具体的虚拟机迁移调度路径,对虚拟机进行迁移,使得迁移后资源互补的虚拟机部署到相同的物理机。13.根据权利要求12所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤4,获取现有数据以及新发布作业数据,及宿主机物理资源消耗情况的数据,通过遗传算法计算出作业节点虚拟机在宿主机上的分配方案,具体步骤如下:通过各宿主机资源占用情况和未来资源变化趋势信息,这些信息包括宿主机cpu数量、
cpu负载趋势、内存变化趋势、缓存压力、io阻塞时延这些信息;根据勘探开发云bp神经网络分类算法获取的模块类型结果,计算各物理机当前运行指标,建立云主机实时调度模型;根据当前物理机、虚拟机节点的cpu计算核心数量、cpu负载、内存、缓存、io时延这些指标数据,生成物理机虚拟机资源使用矩阵。14.根据权利要求1所述的基于机器学习的勘探开发云资源智能调度方法,其特征在于,在步骤4,基于遗传算法进行云主机调度,包括以下步骤:(1)初始化种群按照种群数目根据编码规则随机生成n个个体;将物理机中的虚拟机的指标数据汇总并编码成字符串形式按照物理机编号的顺序拼接起来,每个字符串结构被称为一个个体即染色体,多个个体组合成一个种群;初始化种群即创建一群个体,根据个体中字符的位置可对应到相关物理机;个体编码中的一个字符即一个基因,对应虚拟机的一个指标;在创建个体时,采用实数进行编码;(2)选择操作选择操作作用于避免有效基因的损失,选择操作是建立在种群中个体的适应度评估基础上的,由于此场景是最小化目标函数,故将目标函数的倒数作为适应度函数;根据适应度函数计算每个个体的适应度大小,按照从高到低的顺序排序,使适应性高,即物理机资源指标方差最小的个体得以更大的概率生存,从而提高全局收敛性和计算效率;选择个体还应该满足以下规则:var(time)<0.95*var(fix)即,物理机实时指标要小于0.95倍物理机的固定指标;上式中time表示实时,var(time)表示物理机cpu、内存、网络、临时盘等资源消耗的实时值,fix表示固定,var(fix)表示物理机cpu、内存、网络、临时盘这些资源的总值;cpu、内存、网络、临时盘等指标单独计算,每种指标实时值小于0.95倍总值;(3)采用改进的轮盘赌算法;具体实施步骤为:首先根据适应度函数计算每个个体的适应度;其次,计算每个个体的个体选择概率和累积概率;然后,在区间[0 1]之间随机生成一个数,判断该数落在哪个区间内,如果落在某个区间,则该区间的个体被选中;(4)交叉算法交叉运算是遗传算法中产生新个体,即在之前迭代种群中没有出现过的个体编码的主要操作过程,它以某一概率相互交换某两个个体之间的部分染色体;具体实施步骤为:首先对种群中个体进行随机配对,其次随机设置交叉点位置,最后再相互交换配对染色体之间的部分基因;(5)变异操作变异运算是对个体的某一个或某一些基因的基因值按某一较小的概率进行改变,其也是产生新个体的一种操作方法;采用随机生成变异位点的方式;其具体操作过程是:首先确定出各个个体的基因变异位置,基因变异位置即虚拟机中代表某一指标的位置索引,与实际参数对应,然后依照某一概率将变异点的原有基因值取其他值;(6)终止条件,由于问题的最优解无法知道,所以采用近似收敛准则来终止算法,当种群进化了n代之后最优解已然不变时就认定此时的解为最优解,终止算法;
目标函数为:上式中x为物理机的各项指标的利用率,为物理机的各项指标的利用率的均值,s2为物理机的各项指标利用率的方差,n为指标的个数,min表示方差越小资源越均衡;time表示实时,var(time)表示物理机cpu、内存、网络、临时盘这些资源消耗的实时值,fix表示固定,var(fix)表示物理机cpu、内存、网络、临时盘等资源的总值;cpu、内存、网络、临时盘等指标单独计算,每种指标实时值小于0.95倍总值;计算步骤为:1、对实时数据各个虚拟机指标求和;2、计算物理机各项指标运行状态;3、计算物理中各项指标利用率;4、计算物理机各项指标的方差来查看资源占比的均衡性;方差越小资源越均衡。

技术总结
本发明提供一种基于机器学习的勘探开发云资源智能调度方法,该基于机器学习的勘探开发云资源智能调度方法包括:步骤1,采集勘探开发云运维数据;步骤2,对勘探开发云运维数据样本进行预处理和训练勘探开发云BP神经网络模型;步骤3,利用训练好的勘探开发云BP神经网络模型,对作业模块类型进行预测,给出预测的模块类型,并进行指标计算;步骤4,获取作业发布的模块资源数据,进行云主机调度。该基于机器学习的勘探开发云资源智能调度方法采用神经网络、机器学习技术,对资源需求进行预测,主动进行主机资源和网络资源的运行优化,减少资源分配问题影响用户工作效率,能有效的提高系统管理工作的信息化水平。管理工作的信息化水平。管理工作的信息化水平。


技术研发人员:董涛 段淼 车晓萍 马承杰 孙友凯 刘芳 付巧娟 杨澎涛 孙世为 苗永康
受保护的技术使用者:中国石油化工股份有限公司胜利油田分公司物探研究院
技术研发日:2022.01.21
技术公布日:2023/8/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐