CloudSim 里CloudletScheduler类

CloudletScheduler 类

简介

CloudletScheduler 是一个核心组件,在云计算仿真环境中,它负责定义虚拟机(VM)如何调度和执行其Cloudlets(云任务)。

  • 抽象类:CloudletScheduler 是一个抽象类,这意味着它不能直接实例化,而是需要通过子类来实现具体的功能。

  • 调度策略:这个类代表了虚拟机用来运行其Cloudlets的调度策略。调度策略决定了Cloudlets如何在虚拟机上分配和执行,包括它们如何共享或分配CPU时间、处理元素(PE)等资源。

  • 执行Cloudlets:任何扩展 CloudletScheduler 类的子类都必须实现执行Cloudlets的功能。这意味着子类需要提供具体的逻辑来管理Cloudlets的执行,包括开始、暂停、恢复和结束Cloudlets。

  • Cloudlet管理接口:CloudletScheduler 类还实现了Cloudlet管理的接口。这可能包括添加、删除、更新和查询Cloudlets状态的方法,以及可能的其他管理功能。

  • 每个VM的实例:每个虚拟机都需要有自己的 CloudletScheduler 实例。这是因为每个虚拟机可能有不同的资源和调度需求,因此需要独立的调度器来管理其Cloudlets。

CloudletScheduler 类是云计算仿真工具(如CloudSim)中的一个关键组件,它允许开发者模拟和研究不同的调度策略,以优化资源使用效率、减少任务执行时间、提高系统吞吐量等。通过扩展这个抽象类,开发者可以创建自定义的调度器,以适应特定的应用场景或研究目标。

其他的类如
CloudletSchedulerDynamicWorkload 链接
CloudletSchedulerSpaceShared链接
CloudletSchedulerTimeShared 链接
继承自它

类属性

之前的运行时间

	/** The previous time. */private double previousTime;

当前可用的计算频率列表

	/** The list of current mips share available for the VM using the scheduler.* It is provided by {@link CloudletScheduler#updateCloudletsProcessing(double, List)} method.* at every simulation step. */private List<Double> currentMipsShare;

获得可用的计算能力

	private double currentCapacity;

等待队列

	/** The list of cloudlet waiting to be executed on the VM. */protected List<? extends Cloudlet> cloudletWaitingList;

正在执行的任务

	/** The list of cloudlets being executed on the VM. */protected List<? extends Cloudlet> cloudletExecList;

暂停的任务

	/** The list of paused cloudlets. */protected List<? extends Cloudlet> cloudletPausedList;

已经完成的任务

	/** The list of finished cloudlets. */protected List<? extends Cloudlet> cloudletFinishedList;

失败的任务

	/** The list of failed cloudlets. */protected List<? extends Cloudlet> cloudletFailedList;

最近完成的任务

	/** Buffer list of the latest finished cloudlets. */protected List<Cloudlet> cloudletJustFinishedList;

类方法

初始化

	/*** Creates a new CloudletScheduler object. * A CloudletScheduler must be created before starting the actual simulation.* * @pre $none* @post $none*/public CloudletScheduler()

更新运行时间

	/*** Updates the processing of cloudlets running under management of this scheduler.* * @param currentTime current simulation time* @param mipsShare list with MIPS share of each Pe available to the scheduler* @return the predicted completion time of the earliest finishing cloudlet, * or 0 if there is no next events* @pre currentTime >= 0* @post $none*/public double updateCloudletsProcessing(double currentTime, List<Double> mipsShare)@Deprecatedpublic double updateVmProcessing(double currentTime, List<Double> mipsShare)

更新正在等待的任务

	/*** Update the cloudlets currently waiting to execute.* The default implementation (i.e., no-op) is suitable for time-shared scheduling.** @param currentTime current simulation time* @param info        info Any data you may need to implement the update logic*/protected void updateWaitingCloudlets(double currentTime, Object info)/*** Receives a cloudlet to be executed in the VM managed by this scheduler.* * @param cl the submitted cloudlet* @return expected finish time of this cloudlet, or 0 if it is in a waiting queue* @pre gl != null* @post $none*/public double cloudletSubmit(Cloudlet cl)

取消任务的执行

	/*** Cancels execution of a cloudlet.* * @param cloudletId ID of the cloudlet being canceled* @return the canceled cloudlet, $null if not found* @pre $none* @post $none*/public Cloudlet cloudletCancel(final int cloudletId) 

暂停一个任务的执行

	/*** Pauses execution of a cloudlet.* * @param cloudletId ID of the cloudlet being paused* @return $true if cloudlet paused, $false otherwise* @pre $none* @post $none*/public boolean cloudletPause(int cloudletId)

回复一个暂停的任务

	/*** Resumes execution of a paused cloudlet.* * @param clId ID of the cloudlet being resumed* @return expected finish time of the cloudlet, 0.0 if queued* @pre $none* @post $none*/public abstract double cloudletResume(int clId);

完成任务

	/*** Processes a finished cloudlet.* * @param cl finished cloudlet* @pre rgl != $null* @post $none*/public void cloudletFinish(Cloudlet cl)

得到当前任务的状态

	/*** Gets the status of a cloudlet.* * @param cloudletId ID of the cloudlet* @return status of the cloudlet, -1 if cloudlet not found* @pre $none* @post $none**/public Cloudlet.CloudletStatus getCloudletStatus(final int cloudletId)

检查是否有已经完成的任务

	/*** Informs if there is any cloudlet that finished to execute in the VM managed by this scheduler.* * @return $true if there is at least one finished cloudlet; $false otherwise* @pre $none* @post $none* //TODO the method name would be isThereFinishedCloudlets to be clearer*/public boolean isFinishedCloudlets() 

返回下一个完成的任务

	/*** Returns the next cloudlet in the finished list.* * @return a finished cloudlet or $null if the respective list is empty* @pre $none* @post $none*/public Cloudlet getNextFinishedCloudlet()

返回虚拟机中运行的任务

	/*** Returns the number of cloudlets running in the virtual machine.* * @return number of cloudlets running* @pre $none* @post $none*/public int runningCloudlets()

返回一个任务进行任务迁移

	/*** Returns one cloudlet to migrate to another vm.* * @return one running cloudlet* @pre $none* @post $none** @TODO: Remo Andreoli: No clue why it's removing the first element*/public Cloudlet migrateCloudlet() 

获得任务的预计完成时间

/*** Get the estimated completion time of a given cloudlet.** @param cl the cloudlet* @param time the time* @return the estimated finish time*/public double getEstimatedFinishTime(Cloudlet cl, double time) 

获得总CPU利用率

	/*** Gets total CPU utilization percentage of all cloudlets, according to CPU UtilizationModel of * each one.* * @param time the time to get the current CPU utilization* @return total utilization*/public double getTotalUtilizationOfCpu(double time)

获得当前的请求频率(分内核)

	/*** Gets the current requested mips.* * @return the current mips*/public List<Double> getCurrentRequestedMips()

获得总请求计算量

	/*** Gets the total of the current requested mips.* * @return the current mips*/public double getCurrentRequestedTotalMips()

获得当前总可用的计算能力

	/*** Gets the total current available mips for the Cloudlet.* * @param rcl the rcl* @param mipsShare the mips share* @return the total current mips* //TODO In fact, this method is returning different data depending* of the subclass. It is expected that the way the method use to compute* the resulting value can be different in every subclass,* but is not supposed that each subclass returns a complete different * result for the same method of the superclass.* In some class such as NetworkCloudletSpaceSharedScheduler (OLD CLASS),* the method returns the average MIPS for the available PEs,* in other classes such as {@link CloudletSchedulerDynamicWorkload} it returns* the MIPS' sum of all PEs.*/public abstract double getTotalCurrentAvailableMipsForCloudlet(Cloudlet rcl, List<Double> mipsShare);

获得当前总请求的计算能力

	/*** Gets the total current requested mips for a given cloudlet.* * @param cl the cloudlet* @param time the time* @return the total current requested mips for the given cloudlet*/public abstract double getTotalCurrentRequestedMipsForCloudlet(Cloudlet cl, double time);

获得当前分配给任务的计算能力

	/*** Gets the total current allocated mips for cloudlet.* * @param cl the cloudlet* @param time the time* @return the total current allocated mips for cloudlet*/public abstract double getTotalCurrentAllocatedMipsForCloudlet(Cloudlet cl, double time);

当前请求的内存

	/*** Gets the current requested ram.* * @return the current requested ram*/public double getCurrentRequestedUtilizationOfRam() 

获得当前请求的带宽

	/*** Gets the current requested bw.* * @return the current requested bw*/public double getCurrentRequestedUtilizationOfBw() 

获得之前的运行时间

	/*** Gets the previous time.* * @return the previous time*/public double getPreviousTime()

设置之前的运行时间

	/*** Sets the previous time.* * @param previousTime the new previous time*/protected void setPreviousTime(double previousTime) 

设置计算资源的分配情况

	/*** Sets the current mips share.* * @param currentMipsShare the new current mips share*/protected void setCurrentMipsShare(List<Double> currentMipsShare)

获得可用的核心数

	/*** The number of PEs currently available for the VM using the scheduler,* according to the current mips share provided*/public int getCurrentPEs()

计算任务可用的计算量

	/** Get the individual MIPS capacity available for each cloudlet, according to the number of*  available PE provided by the current mip share.*/public double getCurrentCapacity()

更新任务可用的计算量

	/*** ASSUMPTION: all PEs have the same capacity.* @return capacity*/public double updateCurrentCapacity()@Deprecatedprotected double getCapacity(List<Double> mipsShare)

得到等待的任务队列

	/*** Gets the cloudlet waiting list.* * @param <T> the generic type* @return the cloudlet waiting list*/@SuppressWarnings("unchecked")public <T extends Cloudlet> List<T> getCloudletWaitingList()

设置任务等待队列

	/*** Cloudlet waiting list.* * @param <T> the generic type* @param cloudletWaitingList the cloudlet waiting list*/protected <T extends Cloudlet> void setCloudletWaitingList(List<T> cloudletWaitingList)

得到任务执行队列

	/*** Gets the cloudlet exec list.* * @param <T> the generic type* @return the cloudlet exec list*/@SuppressWarnings("unchecked")public <T extends Cloudlet> List<T> getCloudletExecList()

设置任务执行队列

	/*** Sets the cloudlet exec list.* * @param <T> the generic type* @param cloudletExecList the new cloudlet exec list*/protected <T extends Cloudlet> void setCloudletExecList(List<T> cloudletExecList)

得到任务暂停队列

	/*** Gets the cloudlet paused list.* * @param <T> the generic type* @return the cloudlet paused list*/@SuppressWarnings("unchecked")public <T extends Cloudlet> List<T> getCloudletPausedList()

设置任务暂停队列

	/*** Sets the cloudlet paused list.* * @param <T> the generic type* @param cloudletPausedList the new cloudlet paused list*/protected <T extends Cloudlet> void setCloudletPausedList(List<T> cloudletPausedList)

得到任务完成队列

	/*** Gets the cloudlet finished list.* * @param <T> the generic type* @return the cloudlet finished list*/@SuppressWarnings("unchecked")public <T extends Cloudlet> List<T> getCloudletFinishedList()

设置任务完成队列

	/*** Sets the cloudlet finished list.* * @param <T> the generic type* @param cloudletFinishedList the new cloudlet finished list*/protected <T extends Cloudlet> void setCloudletFinishedList(List<T> cloudletFinishedList)

得到任务失败队列

	/*** Gets the cloudlet failed list.* * @param <T> the generic type* @return the cloudlet failed list.*/@SuppressWarnings("unchecked")public <T extends Cloudlet> List<T>  getCloudletFailedList()

设置任务失败队列

	/*** Sets the cloudlet failed list.* * @param <T> the generic type* @param cloudletFailedList the new cloudlet failed list.*/protected <T extends Cloudlet> void setCloudletFailedList(List<T> cloudletFailedList)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/17110.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【政策】正文关键词提取总结

附&#xff1a;样本构建流程&#xff1a; 候选样本圈选&#xff0c;这一步的目的是选出潜在的高质量样本&#xff0c;找到一部分高难度样本&#xff0c;并过滤掉可能的意图不明或无意义数据。样本圈选的方法见下文。 对圈选出的样本随机抽样一小部分进行人工标注。 利用少量的…

Vue3 虚拟列表组件库 virtual-list-vue3 的使用

Vue3 虚拟列表组件库 virtual-list-vue3 的基本使用 分享个人写的一个基于 Vue3 的虚拟列表组件库&#xff0c;欢迎各位来进行使用与给予一些更好的建议&#x1f60a; 概述&#xff1a;该组件组件库用于提供虚拟化列表能力的组件&#xff0c;用于解决展示大量数据渲染时首屏渲…

特征缩放的学习

两边同时除以最大范围&#xff0c;除了除以最大值以外&#xff0c;你还可以执行所谓的均值归一化。这看起来是&#xff0c;你从原始特征开始&#xff0c;然后你重新缩放他们&#xff0c;使两者其中以零为中心。以前它们只有大于零的值&#xff0c;现在他们既有负值又有正值这通…

【大模型实战篇】vLLM的由来以及大模型部署、推理加速实践

1. 问题背景分析及vLLM的由来 大模型毫无疑问&#xff0c;在工作、生活中已经逐渐扮演越来越重要的角色。但大模型的尺寸一般都比较大&#xff0c;处理一个大模型请求的成本可能比传统关键字查询高出 10 倍。推理的成本代价较高&#xff0c;因此提高大模型服务系统的吞吐量&…

[JAVAEE] 网络编程

目录 一. 什么是socket套接字 二. socket套接字 2.1 socket套接字根据传输层协议分类 2.2 TCP流套接字 UDP数据报套接字主要特点 三. UDP数据报套接字编程 3.1 DatagramSocket 是UDP socket, 用于发送和接受数据报 3.2 DatagramPacket 是UDP socket 发送和接收的数据报 …

SDF,一个从1978年运行至今的公共Unix Shell

关于SDF 最近发现了一个很古老的公共Unix Shell服务器&#xff0c;这个项目从1978年运行至今&#xff0c;如果对操作系统&#xff0c;对Unix感兴趣&#xff0c;可以进去玩一玩体验一下 SDF Public Access UNIX System - Free Shell Account and Shell Access 注册方式 我一…

物联网低功耗广域网LoRa开发(二):LoRa开发环境搭建及驱动移植

一、STM32CubeMX加载固件库 将F0固件库添加进来 二、IAR介绍、安装及快捷操作 &#xff08;一&#xff09;IAR介绍 1、简介 C/C编译器和调试器 集成开发环境(IDE) 实时操作系统和中间件 开发套件 硬件仿真器以及状态机建模工具2、IAR与Keil对比 MDK默认只创建工程&#xf…

RK3568平台开发系列讲解(设备树篇)device_node 转换成 platform_device

🚀返回专栏总目录 文章目录 一、DTB转换规则二、转换源码分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过设备树 device_node 转换成 platform_device 一、DTB转换规则 device 部分是用 platform_device 结构体来描述硬件资源的, 所以内核最终会…

深入理解 source 和 sh、bash 的区别

1 引言 在日常使用 Linux 的过程中&#xff0c;脚本的执行是不可避免的需求之一&#xff0c;而 source、sh、bash 等命令则是执行脚本的常用方式。尽管这些命令都能运行脚本&#xff0c;但它们之间的执行方式和效果却有着显著的区别。这些区别可能会影响到脚本的环境变量、工作…

基于Java Springboot鲜花商城系统

一、作品包含 源码数据库设计文档PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA 数据库&#xff1a;MySQL8.0 …

413: Quick Sort

解法&#xff1a; #include <bits/stdc.h> using namespace std; const int N1e55; int a[N]; int n;int main(int argc, char** argv) {cin>>n;for (int i0;i<n;i) cin>>a[i];sort(a,an);for (int i0;i<n;i) cout<<a[i]<<" "…

通过轻易云高效实现ERP数据无缝传输

高效集成领星ERP数据至金蝶云星空 领星ERP数据集成到金蝶云星空&#xff1a;发货结算报告对接销售出库单&#xff08;日本站&#xff09; 在企业的日常运营中&#xff0c;数据的高效流动和准确处理至关重要。本文将分享一个实际运行的系统对接集成案例&#xff1a;如何将领星E…

在 WSL2 Ubuntu22.04环境安装 MySQL

一、安装步骤 1.1. 确保/etc/apt/sources.list源配置文件一切正常 sudo nano /etc/apt/sources.list需要包括以下内容 deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted…

通信塔台、网点、线路数据

通信塔台&#xff1a; 数量&#xff1a; 通信电缆&#xff1a; 通信网点&#xff1a;

C#桌面应用制作计算器

C#桌面应用制作简易计算器&#xff0c;可实现数字之间的加减乘除、AC按键清屏、Del按键清除末尾数字、/-按键取数字相反数、%按键使数字缩小100倍、按键显示运算结果等...... 页面实现效果 功能实现 布局 计算器主体使用Panel容器&#xff0c;然后将button控件排列放置Pane…

【C++进阶】C++11 -- 智能指针

【C进阶】C11 -- 智能指针 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;C&#x1f96d; &#x1f33c;文章目录&#x1f33c; 1. 智能指针的使用场景分析 2. RAII和智能指针的设计思路 3. C标准库智能指针的使用 4. 智能指针的原…

web——upload-labs——第一关

今天新开一个upload-labs的靶场&#xff0c;文件上传&#xff0c;加油&#xff01;&#xff01;&#xff01;&#xff01; 先讲讲文件上传 文件上传&#xff1a;在Web开发中&#xff0c;文件上传功能是一个允许用户将文件&#xff08;例如图片、文档&#xff09;上传到服务器…

提升企业库存管理效率:聚水潭与金蝶云星空集成方案

查询聚水潭库存生成金蝶物料盘点作业 在企业的日常运营中&#xff0c;库存管理和物料盘点是至关重要的环节。为了实现高效、准确的数据对接&#xff0c;我们采用了轻易云数据集成平台&#xff0c;将聚水潭的库存数据无缝集成到金蝶云星空系统中。本案例将详细介绍如何通过API接…

MacOS下,如何在Safari浏览器中打开或关闭页面中的图片文字翻译功能

MacOS下&#xff0c;如何在Safari浏览器中打开或关闭页面中的图片文字翻译功能 在Mac上的Safari浏览器中&#xff0c;可以通过实况文本功能来实现图片中的文本翻译。关闭步骤具体步骤如下&#xff1a; 在浏览器地址栏&#xff0c;鼠标右击翻译按钮&#xff0c;然后点击“首选…

使用 PyAnsys 在 Ansys 随机振动分析中检索螺栓连接中的力和应力

介绍 随机振动模拟通常用于评估组件承受运输过程中振动的能力。随机振动分析利用先前模态分析的频率和模式内容对通过功率谱密度 (PSD) 负载定义的频谱和功率内容进行线性叠加。在大多数装配模型中&#xff0c;螺栓连接&#xff08;由求解器变为 BEAM188 元素&#xff09;通常…