【连续和自适应资源需求估计】通过不断应用在线优化、选择和估计,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代码实现) 的相关文章

  • 使用 MongoDB 作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

    我们目前正在为一家专业公司内部实施类似 CRM 的解决方案 由于存储信息的性质以及信息的不同值和键 我们决定使用文档存储数据库 因为它完全适合目的 在本例中我们选择 MongoDB 作为此 CRM 解决方案的一部分 我们希望存储实体之间的关
  • Pandas set_levels,如何避免标签排序?

    我使用时遇到问题set levels多索引 from io import StringIO txt Name Height Age Metres A 1 25 B 95 1 df pd read csv StringIO txt heade
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • 如何在 Matplotlib 饼图周围绘制箭头以将每个标签指向圆圈中各自的部分?

    我一直在用 Matplotlib 绘制一些图表 我有一个饼图 想要在图表周围绘制箭头 使每个标签都指向图表 我有一个例子 这是我当前的代码 import matplotlib pyplot as plt plt rcParams font
  • 如何在 __init__ 中使用await设置类属性

    我如何定义一个类await在构造函数或类体中 例如我想要的 import asyncio some code class Foo object async def init self settings self settings setti
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • MongoEngine 查询具有以列表中指定的前缀开头的属性的对象的列表

    我需要在 Mongo 数据库中查询具有以列表中任何前缀开头的特定属性的元素 现在我有一段这样的代码 query mymodel terms term in query terms 并且这会匹配在列表 term 上有一个项目的对象 该列表中的
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • Python 内置的 super() 是否违反了 DRY?

    显然这是有原因的 但我没有足够的经验来认识到这一点 这是Python中给出的例子docs http docs python org 2 library functions html super class C B def method se
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 导入错误:没有名为flask.ext.login的模块

    我的flask login 模块有问题 我已经成功安装了flask login模块 另外 从命令提示符我可以轻松运行此脚本 不会出现错误 Python 2 7 r27 82525 Jul 4 2010 07 43 08 MSC v 1500
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • 每当使用 import cv2 时 OpenCV 都会出错

    我在终端上使用 pip3 install opencv contrib python 安装了 cv2 并且它工作了 但是每当我尝试导入 cv2 或运行导入了 cv2 的 vscode 文件时 在 python IDLE 上它都会说 Trac
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐