虛擬化 Demo 需要:當宿主機 CPU 利用率超過閾值,自動將 VM 熱遷移至低負載宿主機。缺乏真實壓力源,編寫自適應負載產生腳本模擬 CPU 壓力,驗證遷移邏輯。
最低CPU% 最高CPU% 初始線程數 每次調整線程數 線程睡眠毫秒#!/usr/bin/python
import threading, time, os, string, sys
class ControlThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.runflag = True
def run(self):
while self.runflag:
os.popen('usleep ' + sys.argv[5]) # 亞秒級睡眠,比 time.sleep 更精準
def stop(self):
self.runflag = False
threadList = []
print 'Start Thread Number:', sys.argv[3], '\tSleep Time(ms):', sys.argv[5]
# 初始化線程池
for i in range(0, int(sys.argv[3])):
t = ControlThread()
threadList.append(t)
t.start()
# 主控制循環
while True:
# 獲取總 CPU 使用率 = 100 - idle%
idle = float(os.popen("sar 1 1 | grep '^Average' | awk '{print $8}'").read())
usage = 100 - idle
print 'CPU Usage:', usage, '\tCurrent Thread Number:', len(threadList)
if usage < int(sys.argv[1]): # 低於下限,增壓
for i in range(0, int(sys.argv[4])):
t = ControlThread()
t.start()
threadList.append(t)
print " +"
elif usage > int(sys.argv[2]): # 高於上限,減壓
for i in range(0, int(sys.argv[4])):
t = threadList.pop()
t.stop()
print " -----"
time.sleep(1) # 採樣間隔
這個 80 行 Python 腳本雖簡陋,卻完成了「自適應負載產生 → 觸發閾值 → 驗證 Live Migration」的閉環,為虛擬化負載均衡 PoC 提供了可用的壓力源。生產環境請採用成熟的 DRS (vSphere) / PRO (Hyper-V) / XenMotion 等原生調度器,腳本僅供測試驗證階段使用。