【连续和自适应资源需求估计】通过不断应用在线优化、选择和估计,SARDE能够有效地适应在线跟踪,并使用得到的集成技术减少模型误差(Python代码实现)

2024-01-12

???????????????? 欢迎来到本博客 ❤️❤️????????

????博主优势: ???????????? 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️ 座右铭: 行百里者,半于九十。

???????????? 本文目录如下: ????????????

目录

????1 概述

????2 运行结果

????3 参考文献

????4 Python代码、数据、文章


????1 概述

文献来源:

SARDE:连续和自适应资源需求估计框架

摘要 资源需求是建模和预测软件系统性能的关键参数。目前,资源需求估计器通常只在系统分析时执行一次。然而,在运行时环境中,监视的系统以及资源需求本身都会不断变化。这些变化会影响各种估计方法的适用性、所需的参数化以及估计结果的准确性。随着时间的推移,这将导致无效或过时的估计,进而对自适应系统的决策产生负面影响。本文介绍了SARDE,这是一个用于连续环境中自适应资源需求估计的框架。SARDE动态地、持续地调整、选择和执行一系列资源需求估计方法,以适应环境的变化。这创造了一种自主的、无监督的集成估计技术,在动态环境中提供可靠的资源需求估计。我们使用了两个真实数据集对SARDE进行评估。其中一个数据集包含反映不同可能系统状态的不同微基准,另一个数据集包含在不断变化的环境中运行的应用程序。我们的结果表明,通过不断应用在线优化、选择和估计,SARDE能够有效地适应在线跟踪,并使用得到的集成技术减少模型误差。

及时和精确的资源需求估计是自动扩展机制[2]或用于弹性资源配置的性能建模技术[36, 69]的关键输入。因此,已经证明资源需求的统计估计是实现精确弹性云资源管理的有效和有用工具[2, 92]。资源需求(或服务需求[79])是单位工作(例如请求或交易)在系统整体访问中获得服务所花费的平均时间,不包括任何等待时间[48, 59]。不幸的是,在大多数现实系统中,在系统运行期间测量资源需求是不可行的[79],这是由于仪器开销和可能的测量干扰。因此,多年来提出了许多资源需求估计方法,使用不同的统计估计技术(例如线性回归[8, 72]或卡尔曼滤波器[88, 98])并基于排队理论的不同建模方法。

在选择适合特定场景的方法时,用户必须考虑估计方法的不同特征,例如预期的输入参数、配置设置、准确性以及对测量异常的鲁棒性。不同方法的准确性在很大程度上取决于诸如系统负载、工作负载类型、部署结构、内部状态和监控粒度等因素[79]。此外,Spinner等人[79]表明,在所有情况下没有单一的最佳方法。这与机器学习[93]和优化[94]的无免费午餐定理相一致,该定理指出当性能在所有可能的问题上平均时,任何两种算法是等效的。

解决上述问题的第一步集中在将不同的估计方法结合成一个可用的工具[80],基于测量数据优化配置参数[27, 29],并使用机器学习推荐最有前途的方法[30]。然而,现有工作侧重于一次性估计和优化,忽略了系统变化的影响。随着DevOps和弹性云操作等现代软件范式的日益普及,随着越来越多的变量不断发生变化,及时和精确的资源需求估计变得越来越复杂,估计必须不断更新。例如,任何自动扩展器都在不断改变所考虑的软件系统的部署结构。此外,在任何在线应用程序中,应用的工作负载从未真正恒定。因此,所考虑的环境在设计时是未知的,并且在操作期间不断演变[10]。随着系统和测量数据的变化,最适合的估计方法也会发生变化。因此,任何人类用户都不可能在系统运行期间持续选择、参数化和监督资源需求估计器。

因此,在本文中,我们介绍了SARDE,这是一个用于连续自适应资源需求估计的框架。SARDE能够连续地操作、参数化和选择多种不同的资源需求估计方法,并能够自主地适应所研究系统的环境变化。本文侧重于将不同的构建模块结合起来,创建一个适应性强、可在任何连续环境中应用的坚固框架,而无需专业知识。

???? 2 运行结果

保存运行结果:

部分代码:


# Plot evaluation
respApprox = logs[(logs['Type'] == ' EVALUATION') & (
        logs['Selected Approach'] == ' tools.descartes.librede.approach.ResponseTimeApproximationApproach')]
ax2.plot(respApprox['Finish time'], pd.to_numeric(respApprox[errorvec]) * 100, linewidth=plotwidth,
         color=respApproxColor)
utilizationRegression = logs[(logs['Type'] == ' EVALUATION') & (
        logs['Selected Approach'] == ' tools.descartes.librede.approach.UtilizationRegressionApproach')]
ax2.plot(utilizationRegression['Finish time'], pd.to_numeric(utilizationRegression[errorvec]) * 100,
         linewidth=plotwidth,
         color=utilizationRegressionColor)
serviceDemandLaw = logs[(logs['Type'] == ' EVALUATION') & (
        logs['Selected Approach'] == ' tools.descartes.librede.approach.ServiceDemandLawApproach')]
ax2.plot(serviceDemandLaw['Finish time'], pd.to_numeric(serviceDemandLaw[errorvec]) * 100, linewidth=plotwidth,
         color=serviceDemandLawColor)
wangKalmanFilter = logs[(logs['Type'] == ' EVALUATION') & (
        logs['Selected Approach'] == ' tools.descartes.librede.approach.WangKalmanFilterApproach')]
ax2.plot(wangKalmanFilter['Finish time'], pd.to_numeric(wangKalmanFilter[errorvec]) * 100, linewidth=plotwidth,
         color=wangKalmanFilterColor)
kumarKalmanFilter = logs[(logs['Type'] == ' EVALUATION') & (
        logs['Selected Approach'] == ' tools.descartes.librede.approach.KumarKalmanFilterApproach')]
ax2.plot(kumarKalmanFilter['Finish time'], pd.to_numeric(kumarKalmanFilter[errorvec]) * 100, linewidth=plotwidth,
         color=kumarKalmanFilterColor)
responsetimeRegression = logs[(logs['Type'] == ' EVALUATION') & (
        logs['Selected Approach'] == ' tools.descartes.librede.approach.ResponseTimeRegressionApproach')]
ax2.plot(responsetimeRegression['Finish time'], pd.to_numeric(responsetimeRegression[errorvec]) * 100,
         linewidth=plotwidth,
         color=responsetimeRegressionColor)

ax2.set_xlabel("Time [s]")
ax2.set_ylabel("Estimation Error [%]")
ax2.set_xlim(xmin=0, xmax=10800)
ax2.set_yticks([0, 20, 40, 60, 80])
ax2.set_ylim(ymin=0, ymax=100)

names = ['ResponsetimeApproximation', 'UtilizationRegression', 'ServiceDemandLaw', 'WangKalmanFilter',
         'KumarKalmanFilter', 'ResponsetimeRegression']
ncols = 3
ax2.legend(lines, names, ncol=ncols, loc="upper right")

# plt.xlim(0, 180)
# Finish up plot
fig.tight_layout(pad=0.1)
fig.savefig(filename)
plt.show()  

????3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

???? 4 Python代码、数据、文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【连续和自适应资源需求估计】通过不断应用在线优化、选择和估计,SARDE能够有效地适应在线跟踪,并使用得到的集成技术减少模型误差(Python代码实现) 的相关文章

  • 为什么Python有最大递归深度?

    Python有最大递归深度 但没有最大迭代深度 为什么递归受到限制 把递归当成迭代来对待 而不限制递归调用的次数不是更自然吗 我只想说这个问题的根源来自于尝试实现流 参见这个问题 https stackoverflow com questi
  • 美丽的汤从谷歌搜索中提取href

    谷歌搜索给出了以下 HTML 的第一个结果 h3 class r a href https rads stackoverflow com amzn click com 0470284889 class l vst em Quantitati
  • 静态文件配置不正确

    我已经在 Heroku 上部署了简单的博客应用程序 它运行在Django 1 8 4 我在静态文件方面遇到了一些问题 当打开我的应用程序时 我看到Application Error页面 所以我尝试调试它并发现当我提交到 Heroku 时它无
  • 引发 RuntimeError(f"目录 '{directory}' 不存在") RuntimeError: 导入 fitz 时目录 'static/' 不存在

    当我运行 extract img py 文件时出现此错误 RuntimeError f 目录 directory 不存在 运行时错误 导入 fitz 时不存在目录 static 我不明白为什么这会给我发回此错误消息 我之前看到过关于这个话题
  • Django 如何从 ManyToManyField 序列化并列出全部

    我正在使用 Django 1 9 1 开发移动应用程序后端 我实现了关注者模型 现在我想列出用户的所有关注者 但目前我不得不这样做 我还使用 Django Rest 框架 这是我的 UserProfile 模型 class UserProf
  • 使用opencv计算深度视差图

    我无法使用 opencv 从视差图计算深度 我知道两个立体图像中的距离是用以下公式计算的z baseline focal disparity p 但我不知道如何使用地图计算视差 我使用的代码如下 为我提供了两个图像的视差图 import n
  • 使用字母而不是数字进行顺序计数[重复]

    这个问题在这里已经有答案了 我需要一种方法 将字符串 递增 到 z 然后将 aa 递增到 az 然后将 ba 递增到 bz 依此类推 就像 Excel 工作表中的列一样 我将向该方法提供前一个字符串 它应该增加到下一个字母 PSEUDO C
  • 使用 Python 的文本中的词频但忽略停用词

    这给了我文本中单词的频率 fullWords re findall r w allText d defaultdict int for word in fullWords d word 1 finalFreq sorted d iterit
  • Pandas Pivot_Table :非数字值的行计算百分比

    这是我在数据框 df 中的数据 Document Name Time SPS2315511 A 1 HOUR SPS2315512 B 1 2 HOUR SPS2315513 C 2 3 HOUR SPS2315514 C 1 HOUR S
  • Pyinstaller --onefile 警告文件已存在但不应存在

    跑步时Pyinstaller onefile 并开始得到结果 exe 会出现多个弹出窗口 并显示以下警告 WARNING file already exists but should not C Users myuser AppData L
  • Selenium:等到 WebElement 中的文本发生变化

    我在用着selenium使用Python 2 7 从网页上的搜索框检索内容 搜索框动态检索结果并在框本身中显示结果 from selenium import webdriver from selenium webdriver common
  • 在Python中计算结构体的CRC

    我有以下结构 来自 C 中的 NRPE 守护程序代码 typedef struct packet struct int16 t packet version int16 t packet type uint32 t crc32 value
  • 如何在 Python 中执行相当于预处理器指令的操作?

    有没有办法在 Python 中执行以下预处理器指令 if DEBUG lt do some code gt else lt do some other code gt endif There s debug 这是编译器预处理的特殊值 if
  • 向量化 numpy bincount

    我有一个 2d numpy 数组 A我要申请np bincount 到矩阵的每一列A生成另一个二维数组B由原始矩阵每列的 bincounts 组成A 我的问题是 np bincount 是一个采用一维数组的函数 它不是像这样的数组方法B A
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • 从 csv 中读取 pandas 数据帧,以非固定标头开始

    我有许多数据文件是由我的实验室中使用的一些相当黑客的脚本生成的 该脚本非常有趣 因为它在标头之前附加的行数因文件而异 尽管它们具有相同的格式并具有相同的标头 我正在编写一个批处理来将所有这些文件处理为数据帧 如果我不知道位置 如何让 pan
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • Jupyter Notebook 中的多处理与线程

    我试图测试这个例子here https ipywidgets readthedocs io en stable examples Widget 20Asynchronous html将其从线程更改为多处理 在 jupyter Noteboo
  • Selenium Python 使用代理运行浏览器[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个非常简单的脚本 该脚本从 txt 文件获取代理 不需要身份验证 并用它打开浏览器 然后沿着代理列表循环此操作一定次数 我确实知道如何打开 txt 文件并使用它 我的主要问题是让代理正常工作 我见
  • Shap - 颜色条不显示在摘要图中

    显示summary plot时 不显示颜色条 shap summary plot shap values X train 我尝试过改变plot size 当绘图较高时 会出现颜色条 但它非常小 看起来不应该 shap summary plo

随机推荐