or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing
xxxxxxxxxx
QEMU容錯開發經驗談-管理及網路效能調校 - 曹伯瑞
tags:
COSCUP2021
Advance
zh-tw
COSCUP2021
System Software
TR309
歡迎來到 https://hackmd.io/@coscup/2021 共筆
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →點擊本頁上方的 開始用 Markdown 一起寫筆記!
手機版請點選上方 按鈕展開議程列表。
Slido: https://app.sli.do/event/zgxzodts
QEMU-KVM FT / Cuju 簡介
https://cuju-ft.github.io/cuju-web/home.html
Make Libvirt/OpenStack Support Cuju FT
OpenStack 可稱為雲端作業系統,可管理網路、運算結點等
libvirt 部份
Live Migration:
virsh migrate --live vm01 qemu+ssh://dest-host/system
Cuju FT:
virsh migrate --live --cuju vm01 qemu+ssh://dest-host/system
這個指令需要做:建立 backup VM(QEMU command
-incoming port, ftmode
)、設定 Primary capability (migrate_set_capability cuju-ft on
)、然後 在 Primary 主機上執行migrate -c
。libvirt 定義的 live migration 分成 5 個階段:
在建立容錯連線時 Finish、Confirm 兩階段不可執行,因此透過在 Cuju mode 下跳過
暫停 Primary side VM、等待Live Migration結束及停止
等方式建立容錯連線初步測試發現使用 SPICE Display 時會 crash,因為 SPICE 會更新 vga.vram 和 qxl.vrom,而 Cuju 會標記並備份導致發生問題,因此透過不標記 VROM/VRAM dirty 的方式解決
Channel SPICE 則會導致 VM failover 時 crash
此外也有遇到 AppArmor 造成的權限問題
OpenStack 部份
在 nova 中新增 FT 支援的指令 (進入FT、顯示狀態、回到無FT 或觸發 failover 的狀態)
nova 指令皆為 nova-client 接收後經 HTTP 傳到 nova-controller 驗證正確性後,用 RPC 傳送到 compute 執行實際指令
pre-live migration 部份只需改變 migraiton 參數即可
post-migration 則將所有要釋出原本 source 資源資訊的動作通通都延到 failover 之後才做
需建立 controller 上的 API parameter check rule、更新 nova state 資料庫(因 nova 會維護所有 VM 狀態)
容錯模式下 TCP 會遇到的問題以及如何最佳化
容錯為保護機器對外狀態一致,引入了 buffer output 機制,產生額外延遲、讓 TCP 誤判 RTT 時間,無論 outgoing/incoming 都會被計算成壅塞,讓 TCP 速度無法改變
TCP Proxy
設計一個 TCP Proxy 來降低不必要的 congestion control 帶來的影響
在每個 TCP 連線間建立 transparent proxy,把連線分成兩段 (client-proxy、proxy-VM),連線狀態不會互相干擾,透過 packet queue 交換資料,並於每次備份周期時備份兩邊的 TCP 狀態以便還原
需有 IPC Handler 處理 Cuju 容錯階段的不同狀態(snapshot, flush, failover)訊號
修復輸出 TCP 連線
10G 網路下 degradation 小於 5%,非常接近無 FT 保護的原始速度,相對有 FT 保護原始速度有大幅(數倍)提升
Q&A
想請問一下跟 OpenStack 整合的 code 是否有 open source? Google 了一下都沒有找到,也沒有在 upstream 看到有相關要整合的 spec 提出。
能不能在 ARM64 平台像是 RPi4 上執行?
目前 ARM KVM 已經有了,可以看看能不能移植
Q1: 是否有任何的 upsteam 計畫,以減少後續 KVM/QEMU/libvrit 進版時的 porting effort? Q2: 效能耗損除了量測 latency, 在 network throughput 是否也能維持低耗損?
進板比較麻煩的部份是 KVM,但 QEMU/libvirt 部份就還好,但目前沒有其他跟進或進板計劃,可能進板後原有的效能改善方式會失效,暫時以效能考量優先。
buffer output 造成 TCP 效能損失,可透過前面所提 TCP Buffer Proxy(?) 改善
Cuju 最大的 production deployment 是哪裡?
Qemu 進版時,Cuju 移植到新版成本如何?
有沒有參考過 DMTCP、CRIU 這類其他外面著名的開源 Live Migration 機制