20250704-基于強化學習在云計算環境中的虛擬機資源調度研究

基于強化學習在云計算環境中的虛擬機資源調度研究

隨著云計算規模的持續擴大,數據中心虛擬機資源調度面臨動態負載、異構資源適配及多目標優化等挑戰。傳統啟發式算法在復雜場景下易陷入局部最優,而深度強化學習(DRL)憑借序貫決策能力為該問題提供了新路徑。本研究以動態多目標組合優化理論為基礎,結合CloudSimPy仿真框架與TensorFlow,構建“仿真-訓練-驗證”閉環調度系統,重點設計動態加權多目標獎勵函數、時序建模網絡及多進程并行訓練策略,支持非DAG任務、長周期分塊任務等復雜場景。實驗表明,DRL算法在總完成時間(Makespan)、平均完成時間(AC)、平均延遲(AD)等指標上顯著優于傳統算法(如首次適應、Tetris),資源利用率提升5%以上,訓練效率通過多進程優化縮短80%。研究為云計算智能運維提供了可遷移的模型與策略,推動DRL從理論驗證向實際落地邁進。

關鍵字:云計算;虛擬機資源調度;深度強化學習;多目標優化;長周期任務;CloudSimPy;策略網絡;動態環境適配

更多應用細節功能參考:CloudSimPy 開源項目使用教程-CSDN博客
本文實現與報告見綁定資源:基于強化學習在云計算環境中的虛擬機資源調度研究 Cloud_Computing.7z

Job數據集的字段含義說明

根據 CloudSimPy 框架中對作業(Job)、任務(Task)、任務實例(TaskInstance)的建模邏輯,以下是字段的含義:

字段名含義關聯實體(參考 CloudSimPy 建模)
submit_time作業或任務的提交時間(仿真時間戳),表示該任務/作業被提交到集群的時刻。作業(Job)/任務(Task)
duration任務實例的執行持續時間(仿真時間單位),表示該任務實例需要運行多久才能完成。任務實例(TaskInstance)
cpu任務實例運行所需的 CPU 資源量(如核心數)。任務實例(TaskInstance)
memory任務實例運行所需的內存資源量(如 GB)。任務實例(TaskInstance)
job_id作業的全局唯一標識符,用于區分不同作業。作業(Job)
task_id任務的局部唯一標識符(需結合 job_id 唯一確定),表示作業中的具體任務。任務(Task)(屬于某個 Job)
instances_num該任務包含的任務實例數量(即一個任務由多少個并行的 TaskInstance 組成)。任務(Task)(Task 是 TaskInstance 的集合)
disk任務實例運行所需的磁盤存儲資源量(如 GB)。任務實例(TaskInstance)

補充說明

  • 數據集中的每條記錄可能對應一個 任務(Task),其中 instances_num 表示該任務需要創建的任務實例數量,而 duration、cpu、memory、disk 是該任務下所有任務實例的統一資源需求(假設任務內實例資源需求相同)。
  • job_id 和 task_id 的組合可唯一標識一個任務,而任務通過 instances_num 生成多個任務實例(TaskInstance),最終由調度算法分配到集群機器上運行。

仿真邏輯補充

結合 CloudSimPy 的仿真流程(來自「高性能仿真」部分):

  • Broker 進程會 按照作業的提交時間(即 submit_time) 將作業配置列表中的作業提交至集群 Cluster 實例。
  • 作業提交后,需要等待調度器 Scheduler 根據調度算法分配資源(如機器的 CPU、內存等),才能開始運行。因此,作業的實際開始運行時間通常會晚于 submit_time(具體取決于調度算法的效率和集群資源的空閑狀態)。

Job 和 Task 補充

  1. 數據結構層面(代碼視角)
  • Task(任務):由 TaskConfig 表示,對應數據集中的一條記錄(每行數據)。每個 TaskConfig 包含任務的基本信息(如 task_id、instances_num(任務實例數量)、cpu/memory/disk(資源需求)、duration(執行時長))。
  • Job(作業):由 JobConfig 表示,是多個 TaskConfig 的集合。一個 JobConfig 包含:
    • job_id(作業唯一標識)
    • submit_time(作業提交時間)
    • task_configs(該作業包含的所有 TaskConfig 列表)
  1. 業務邏輯層面(仿真視角)
  • Task(任務):是作業的子單元,一個作業可包含多個任務(例如,一個作業可能需要先執行數據預處理任務,再執行模型訓練任務,每個任務是作業的一個步驟)。
  • Job(作業):是用戶提交的完整計算需求,由多個具有邏輯關聯的任務組成(如 DAG 任務間的依賴關系,或 Non-DAG 任務的并行執行)。
  1. 實例化關系(運行時視角)

在仿真運行時:

  • 每個 Task(任務)會根據 instances_num 生成多個 TaskInstance(任務實例),這些實例是實際占用資源(CPU、內存、磁盤)并運行的實體。
  • 每個 Job(作業)的狀態(如“運行中”“完成”)由其所有 Task 的狀態合成(例如,當作業的所有任務都完成時,作業才標記為完成)。

Jobs(作業)是用戶提交的完整計算任務集合,由多個具有邏輯關聯的 Tasks(任務) 組成;每個 Task(任務) 進一步拆分為多個 TaskInstance(任務實例)(實際運行的最小單元)

考慮任務類型(非DAG vs DAG)、并行方式(多進程 vs 單進程)、優化目標(總完成時間 vs 平均完成時間)、任務輸入方式(單批 vs 分塊長周期)、特殊功能(任務依賴 vs 任務分組)

文件名稱任務類型并行方式優化目標特殊功能
main-makespan.py非DAG多進程總完成時間(makespan)基礎非DAG任務調度
main-AC.py非DAG多進程平均完成時間適配平均完成時間的獎勵函數
main-makespan-long.py非DAG(長周期)多進程總完成時間(makespan)分塊處理大規模任務
main-single-process.pyDAG(有依賴)單進程總完成時間(makespan)處理DAG任務

性能評估指標

指標名稱計算方式/含義代碼實現位置
總完成時間所有任務完成的最大時間(仿真環境中最后一個任務實例的完成時間),即 episode.env.now基準測試中直接獲取:episode.env.now;訓練循環中通過 makespans 列表統計平均值
平均完成時間單個任務從提交到完成的平均時長(所有任務實例的完成時間 - 提交時間的平均值)通過工具函數 average_completion(episode) 計算,訓練循環中統計 average_completions 平均值
平均延遲任務完成時間與任務本身時長的平均值(反映任務執行的“拖延程度”)通過工具函數 average_slowdown(episode) 計算,訓練循環中統計 average_slowdowns 平均值

性能對比方法

  1. 基準算法對比(橫向對比)

通過運行 3 種經典啟發式算法(隨機算法、首次適應算法、Tetris 算法),在相同任務配置下收集上述指標,作為強化學習算法的性能基線。具體步驟如下:

  • 相同輸入條件:使用同一組機器配置(machine_configs)和任務配置(jobs_configs);
  • 獨立運行:分別運行每種基準算法的 episode.run(),記錄各指標;
  • 輸出對比:直接打印各算法的指標結果
  1. 強化學習訓練迭代統計(縱向對比)

在強化學習訓練過程中,通過多進程并行收集多輪次的模擬數據,統計每輪迭代的平均指標,觀察算法性能隨訓練輪次的變化趨勢。具體邏輯如下:

  • 多進程數據收集:每輪迭代啟動 n_episode 個子進程(默認 12 個),并行執行強化學習模擬,收集各回合的 makespans、average_completions、average_slowdowns;
  • 指標統計:計算每輪迭代的平均指標(如 avg_makespan = np.mean(makespans)),并輸出對比:
  • 趨勢觀察:通過多輪迭代的指標變化(如總完成時間是否逐漸降低),評估強化學習算法的優化效果。
  1. 總結:模型性能通過 總完成時間、平均完成時間、平均延遲 三個核心指標評價,對比方法包括:
  • 與經典啟發式算法(隨機、首次適應、Tetris)的橫向對比;
  • 強化學習訓練過程中多輪次的縱向性能趨勢對比。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915849.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915849.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915849.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

day 33打卡

day 21 常見的降維算法 # 先運行之前預處理好的代碼 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings(ignore)# 設置中文字體 plt.rcParams[font.sans-serif] [SimHei] plt.rcParam…

sec(x)積分推導

在MATLAB中繪制 sec?(x)、cos(x) 和 ln?∣sec?(x)tan?(x)∣的函數圖像,需要特別注意 sec?(x) 在 cos?(x)0(即 xπ/2kπ)處的奇點。(deepseek生成代碼)% 定義x范圍(-2π到2π),…

gpt面試題

vue面試題 💡 一、響應式系統相關 ?1. Vue 3 的響應式系統是如何實現的?和 Vue 2 有何本質區別? 答案: Vue 3 使用 Proxy 實現響應式(位于 vue/reactivity 模塊),替代 Vue 2 的 Object.defineP…

【基于OpenCV的圖像處理】圖像預處理之圖像色彩空間轉換以及圖像灰度化處理

目錄 零、寫在前面的話 一、圖像色彩空間轉換 1.1 RGB顏色空間 1.1.1 RGB顏色空間概念 1.1.2 RGB顏色模型?編輯 1.1.3 關于顏色加法 1.1.4 顏色加權加法 1.2 HSV顏色空間 1.2.1 HSV顏色空間概念 1.2.2 HSV顏色模型 1.2.3 應用意義 1.3 顏色轉換 1.3.1 轉換方法 …

Java TCP 通信詳解:從基礎到實戰,徹底掌握面向連接的網絡編程

作為一名 Java 開發工程師,你一定在實際開發中遇到過需要建立穩定連接、可靠傳輸、有序通信等場景。這時,TCP(Transmission Control Protocol) 通信就成為你必須掌握的重要技能之一。TCP 是一種面向連接、可靠、基于字節流的傳輸協…

HTML5 網頁游戲設計開發——1、HTML基礎

前言 互聯網上的應用程序被稱為Web程序,Web引用用程序是用Web文檔(網頁)累表現用戶界面,而Web文檔都遵守HTML格式。HTML5是最新的HTML標準。之前的版本HTML4.01于1999年發布,小20年過去了,互聯網已經發聲了…

opencv圖片標注

功能使用python opencv, 將文字信息標注在圖片中同一張圖片中涉及多次標注文字大小為標注框的0.3倍使用多綫程運行import cv2 import threading import numpy as npdef draw_annotations(item, annotations):"""在圖片上繪制標注框和文本annotations: 標注列表…

矩陣SVD分解計算

對于有數學庫的時候,進行矩陣相關計算還是不復雜,但是沒有數學庫就很麻煩,利用算法實現了矩陣奇異值分解。 void decompose(const std::vector<std::vector<double>>& A, std::vector<std::vector<double>>& U, std::vector<dou…

Flutter基礎(前端教程①⑦-Column豎直-Row水平-Warp包裹-Stack堆疊)

MainAxisAlignment 是一個枚舉類&#xff0c;用于控制主軸&#xff08;Main Axis&#xff09; 方向上子組件的排列和對齊方式。MainAxisAlignment 的常用取值及效果&#xff1a;MainAxisAlignment.start子組件沿主軸的起點對齊&#xff08;Row 左對齊&#xff0c;Column 頂部對…

構建智能視頻中樞--多路RTSP轉RTMP推送模塊在軌道交通與工業應用中的技術方案探究

1?? 行業背景與技術需求&#x1f688; 軌道交通行業對視頻監控的深度依賴在現代城市軌道交通系統中&#xff0c;視頻監控已不僅僅是安防的一部分&#xff0c;更是貫穿于運營管理、車輛調度、應急指揮和安全保障的核心技術手段。列車車載監控 ——列車上普遍部署多路高清攝像頭…

【Android Studio 2025 漢化教程】

廢話不多說&#xff0c;直接上干貨。 前提&#xff1a;JeBrains系列2025版已經集成中文插件&#xff0c;用戶不需下載&#xff0c;只要設置下即可&#xff0c;但Android Studio并不內置也不提供漢化插件。需要工具&#xff1a; 1.IDEA&#xff08;其他JeBrains系列也可以&#…

網絡安全初級(前端頁面的編寫分析)

源代碼index.html<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>登錄頁面</title><!--…

RAG項目實戰:LangChain 0.3集成 Milvus 2.5向量數據庫,構建大模型智能應用

項目背景 最近&#xff0c;有時間&#xff0c;想著動手實戰一下&#xff0c;從0到1搭建一個 RAG 系統&#xff0c;也是想通過實戰的方式來更進一步學習 RAG。因此&#xff0c;就定下了以項目實戰為主&#xff0c;書籍為輔的執行方式。&#xff08;書籍是黃佳老師著的《RAG 實戰…

docker build 和compose 學習筆記

目錄 docker build 筆記 1. 路徑解析 2. 關鍵注意事項 2. docker compose up -d 核心區別對比 常見工作流 補充說明 1. 功能區別 2. 協作關系 場景 1&#xff1a;Compose 自動調用 Build 場景 2&#xff1a;先 Build 后 Compose 3. 關鍵區別 4. 為什么需要協作&…

Java學習第六十六部分——分布式系統架構

目錄 一、前言提要 二、核心目標 三、核心組件與技術 1. 服務拆分與通信 2. 服務注冊與發現 3. 配置中心 4. 負載均衡 5. 熔斷、降級與限流 6. API 網關 7. 分布式數據管理 8. 分布式追蹤與監控 9. 容器化與編排 四、典型Java分布式技術棧組合 五、關鍵…

Pycharm的Terminal打開后默認是python環境

Pycharm的Terminal打開后默認是python環境解決方案Pycharm的Terminal打開后默認是python環境&#xff0c;無法執行pip等命令&#xff0c;也沒辦法退出 解決方案 點擊Settings -> Tools -> Terminal 可以看到當前默認打開的是torch19py38環境中的python.exe&#xff08;…

LVS——nat模式

一、搭建nat模式下LVS的實驗環境1.創建四臺虛擬機client——客戶端&#xff1a;192.168.134.111/24&#xff08;nat模式&#xff09;LVS——調度器【雙網卡】&#xff1a;192.168.134.112/24&#xff08;nat模式&#xff09;、172.25.254.111/24&#xff08;僅主機模式&#xf…

ElasticSearch是什么

ElasticSearch是什么 ElasticSearch 是一個基于 Apache Lucene 的開源分布式搜索引擎&#xff0c;用于全文搜索、日志分析、實時數據分析等場景。它以高性能、分布式架構和易用性著稱&#xff0c;支持 JSON 格式的數據存儲和查詢&#xff0c;廣泛應用于日志監控、搜索服務、企業…

linxu CentOS 配置nginx

1、準備要發布的文件夾sudo mkdir -p /var/www/myfiles # 創建文件夾&#xff08;如果不存在&#xff09; sudo chmod -R 755 /var/www/myfiles # 設置權限&#xff08;確保 Nginx 可以讀取&#xff09; sudo chown -R nginx:nginx /var/www/myfiles # 修改所有者&#xff0…

內網穿透利器:基于HTTPHTTPS隧道的代理工具深度解析

內網穿透利器&#xff1a;基于HTTP/HTTPS隧道的代理工具深度解析 一、引言 在滲透測試和內網滲透中&#xff0c;HTTP/HTTPS隧道技術是突破網絡邊界的關鍵手段。它通過將TCP流量封裝在HTTP協議中&#xff0c;穿透防火墻/NACL策略&#xff0c;實現內網橫向移動。本文以reGeorg為…