ColocationSim: Simulate Colocation Datacenter in a Fine Granularity with Microservices and Interference Modeling

Overview

ColocationSim

Introduction

将在线作业和离线作业混合部署在同一集群(简称混部,Colocation)提升数据中心资源利用率的主流方法,如何在保证在线作业性能的前提下最大化集群的资源利用率成为混部相关研究中最主要问题。混部作业调度算法从集群层面解决这一问题,是学术界、企业界的研究热点。 验证混部作业调度算法的效果是研究中的一个重要步骤,在大规模集群中验证新的调度算法存在成本高、风险大、验证周期长等问题,并且大规模验证对于学术研究机构往往不现实。目前亟需面向在离线混部的调度模拟器,通过软件模拟的方法快速验证新的调度算法的效果。

因此,我们研发了面向在离线混部的调度模拟器ColocationSim,ColocationSim是在经典的云计算调度模拟器CloudSim上新增了针对作业间性能干扰的模拟,同时ColocationSim还支持了目前常见的在离线作业形式,如微服务形式的在线作业,Graph-Based离线作业,用户可通过简单的json配置文件完成在离线作业的构造和作业负载的定义。 用户在ColocationSim中实现新的调度算法,模拟开始后,ColocationSim根据作业描述文件生成并提交对应的作业到调度器,调度器调用新的调度算法进行调度,待所有作业完成后ColocationSim会给出在线作业SLA违反率、资源利用率、资源碎片、离线作业吞吐率等用于评价在离线混部作业调度算法的指标。

Colocationsim架构 img1

支持功能 Supported Features

在线作业模拟方面:

  • 任意拓扑的微服务作业
  • request的模拟,用户自定义request处理逻辑,:
  • request在service之间的转发;
  • 用户自定义的负载模式

离线作业模拟方面:

DAG结构的离线作业

干扰模拟方面:

支持用户自定义干扰模式,在线在线、在线离线,离线离线间的相互干扰

关键概念 Key Concepts

在线作业:一组long running services,经调度运行后不退出,等待用户(模拟的用户)的请求

离线作业:一个离线作业对应一个Job,每个Job包含多个Task,多个Task的执行顺序由一个DAG描述。

Local、remote编程元语:ColocationSim中使用两种编程元语构造作业执行逻辑,local元语和remote元语,local(N)代表本地处理N条指令,remote(A)代表远程调用A服务,使用两个编程元语可构造任意调用拓扑、任意执行复杂度的在线作业。Task的执行逻辑中仅有local元语

干扰值:离线作业Task和在线作业Service的一个属性,为一个浮点型数字,用于描述一个作业对于其他作业的干扰,可由用户指定,也可使用文献Bubble-Up中的reporter测量。目前ColocationSim采用内存带宽作为干扰值,其定义见离线文件task中的memBW属性。

敏感函数:用于描述个作业的性能和干扰值之间的对应关系,记为f(x),代表作业在干扰值为x时的性能。其性能决定了其local元语的执行速度。敏感函数的定义见作业配置文件中的sensitiveFunctions

使用方法

  1. 将项目导入IDE中,本项目由纯java开发,依赖由maven管理,无需人工安装额外的程序库和依赖包
  2. 编写混部作业调度算法,新的调度算法需继承package org.workflowsim.scheduling. BaseSchedulingAlgorithm,可参考package org.colocation.scheduler下的调度算法实现
  3. 定制在离线作业和作业负载。在线作业负载可参考modules\cloudsim-examples\src\main\java\org\cloudbus\cloudsim\examples\colocation\socialnetwork.json,该文件给出了socailnetwork的描述,包含了30个微服务,离线作业负载可参考文modules\cloudsim-examples\src\main\java\org\cloudbus\cloudsim\examples\colocation\beJobs-sf-mbw.json
  4. 运行示例程序org.cloudbus.cloudsim.examples.colocation. ICWSSocialNetworkLcEvaluation,该类模拟了social network服务和离线作业的混部调度。请注意需要配置输出文件夹outputPath = "/path/to/your/sim-out"; 并保障该文件夹已经被创建。
  5. 等待模拟结束后,控制台会输出简要的报告,如: img2
You might also like...

AWS Service registry for resilient mid-tier load balancing and failover.

Eureka Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose

Dec 30, 2022

Opinionated libraries for HTTP&JSON-based RPC using Retrofit, Feign, OkHttp as clients and Jetty/Jersey as servers

Conjure Java Runtime (formerly http-remoting) This repository provides an opinionated set of libraries for defining and creating RESTish/RPC servers a

Dec 13, 2022

Govern Service is a lightweight, low-cost service registration, service discovery, and configuration service SDK.

Govern Service is a lightweight, low-cost service registration, service discovery, and configuration service SDK.

Govern Service is a lightweight, low-cost service registration, service discovery, and configuration service SDK. By using Redis in the existing infrastructure (I believe you have already deployed Redis), it doesn’t need to bring extra to the operation and maintenance deployment. Cost and burden. With the high performance of Redis, Govern Service provides ultra-high TPS&QPS (10W+/s JMH Benchmark).

Nov 22, 2022

CoSky is a lightweight, low-cost service registration, service discovery, and configuration service SDK.

CoSky is a lightweight, low-cost service registration, service discovery, and configuration service SDK.

High-performance, low-cost microservice governance platform. Service Discovery and Configuration Service

Nov 22, 2022

Annotation/Reflection Based Bukkit Command API. Containing many features such as help-service, command providers, tab completion, and many more!

CommandAPI Annotation/Reflection Based Command API that just does what you want it to do without any problems. Importing Maven repository id

Jun 13, 2022

HUAWEI 3D Modeling Kit project contains a sample app. Guided by this demo, you will be able to implement full 3D Modeling Kit capabilities, including 3D object reconstruction and material generation.

HUAWEI 3D Modeling Kit Sample English | 中文 Introduction This project includes apps developed based on HUAWEI 3D Modeling Kit. The project directory is

Jan 1, 2023

A short assembly macro-processor script to simulate the process and show the different stages

A short assembly macro-processor script to simulate the process and show the different stages

Mar 9, 2022

JNetcat : a tool to debug network issues or simulate servers

JNetcat A tool to easily debug or monitor traffic on TCP/UDP and simulate a server or client No need of telnet anymore to test for a remote connection

Jul 26, 2022

A cross-server spigot plugin that simulate market economy

A cross-server spigot plugin that simulate market economy

Aug 21, 2022

Java port of Brainxyz's Artificial Life, a simple program to simulate primitive Artificial Life using simple rules of attraction or repulsion among atom-like particles, producing complex self-organzing life-like patterns.

Java port of Brainxyz's Artificial Life, a simple program to simulate primitive Artificial Life using simple rules of attraction or repulsion among atom-like particles, producing complex self-organzing life-like patterns.

ParticleSimulation simple Java port of Brainxyz's Artificial Life A simple program to simulate primitive Artificial Life using simple rules of attract

Oct 5, 2022

A suite of software tools and services created to support activity planning and sequencing needs of missions with modeling, simulation, scheduling and validation capabilities

Aerie A suite of software tools and services created to support activity planning and sequencing needs of missions with modeling, simulation, scheduli

Jan 3, 2023

A Toolkit for Modeling and Simulation of Resource Management Techniques in Internet of Things, Edge and Fog Computing Environments

The iFogSimToolkit (with its new release iFogSim2) for Modeling and Simulation of Resource Management Techniques in Internet of Things, Edge and Fog Computing Environments. In the new release Mobili Management, Microservice Management, and Dynamic Clustering mechanisms are added as new features.

Dec 17, 2022

MALLET is a Java-based package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text.

MALLET is a Java-based package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text.

Jan 2, 2023

FEM for Students is a program of modeling and structural analysis by Finite Element Method

FEM for Students is a program of modeling and structural analysis by Finite Element Method

FEM For Students FEM for Students is a software for modeling and structural analysis by Finite Element Method. This software was developed by me in my

Jun 23, 2022

Source Code for TransRot, molecular modeling software for simulated annealing Monte Carlo geometry optimizations of atomic and molecular clusters.

Source Code for TransRot, molecular modeling software for simulated annealing Monte Carlo geometry optimizations of atomic and molecular clusters.

TransRot Version 1.5.3 Steven L. Topper and Robert Q. Topper School of Engineering The Cooper Union   for the Advancement of Science and Art New York,

Dec 14, 2022

SDMLib is a lightweight modeling library

SDMLib is a lightweight modeling library. SDMLib intentionally comes without any tool or editor.

Dec 9, 2021
Owner
null
A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)

Sentinel: The Sentinel of Your Microservices Introduction As distributed systems become increasingly popular, the reliability between services is beco

Alibaba 20.4k Dec 31, 2022
Source Code for 'Pro Java Microservices with Quarkus and Kubernetes' by Nebrass Lamouchi

Apress Source Code This repository accompanies Pro Java Microservices with Quarkus and Kubernetes by Nebrass Lamouchi (Apress, 2021). Download the fil

Apress 24 Oct 31, 2022
Lightweight framework for building java microservices

Ja-micro Ja-micro is a lightweight Java framework for building microservices. Introduction Ja-micro is a framework that allows developers to easily de

Sixt 621 Aug 21, 2022
WSO2 Microservices Framework for Java (MSF4J)

Build status: WSO2 Microservices Framework for Java (MSF4J) WSO2 Microservices Framework for Java (MSF4J) is a lightweight high performance framework

WSO2 359 Dec 27, 2022
Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

AOL 936 Dec 19, 2022
Sample application demonstrating an order fulfillment system decomposed into multiple independant components (e.g. microservices). Showing concrete implementation alternatives using e.g. Java, Spring Boot, Apache Kafka, Camunda, Zeebe, ...

Sample application demonstrating an order fulfillment system decomposed into multiple independant components (e.g. microservices). Showing concrete implementation alternatives using e.g. Java, Spring Boot, Apache Kafka, Camunda, Zeebe, ...

Bernd Ruecker 1.2k Dec 14, 2022
KBE Spring Boot Microservices

SFG Beer Works - Brewery Microservices This project has a services of microservices for deployment via Docker Compose and Kubernetes. You can access t

John Thompson 29 Nov 2, 2022
Takin is an Java-based, open-source system designed to measure online or test environmental performance test for full-links, Especially for microservices

Takin is an Java-based, open-source system designed to measure online environmental performance test for full-links, Especially for microservices. Through Takin, middlewares and applications can identify real online traffic and test traffic, ensure that they enter the right databases.

ShulieTech 1.2k Dec 21, 2022
Library which allows the use and rendering of Blockbench models and animations in a Minecraft server by using generated resource packs and armorstands

Hephaestus Engine Hephaestus Engine is a library which allows the visualization of block bench models and animations in a Minecraft server by the use

Unnamed Team 109 Dec 21, 2022
LINE 4.1k Jan 2, 2023