簡體   English   中英

通過 virsh (QEMU/KVM) 實時快照后訪客性能變慢

[英]Slow guest performance after live snapshot via virsh (QEMU/KVM)

我遇到了一個奇怪的問題,我在其他地方找不到解決方案。 也許你可以幫助我。

我有一個運行 Ubuntu 20 LTS 的系統,它是六個來賓(四個 Ubuntu 20 LTS 和兩個 Windows Server 2019)的主機,它們運行得非常快,直到我拍攝了實時快照。 我在使用 QCOW2 文件的同時在 QEMU/KVM 上運行來賓,並且我正在使用 virsh 來管理這些虛擬系統。

我使用以下命令拍攝來賓的實時快照(沒有 RAM 狀態):

virsh snapshot-create-as $VM --no-metadata $timestamp --disk-only --atomic

這幾乎立即對特定來賓的所有虛擬磁盤進行快照,並創建新的增量文件,差異將寫入其中。 然后,我為所有來賓和所有磁盤設置了以下結構:

base <- snapshot <- live_delta_file

復制快照后,我使用以下命令將它們提交到它們的基本文件中:

virsh blockcommit $currentVM $disk --base $path_to_base --top $path_to_snapshot --verbose --wait

之后,我刪除了快照,所有這些都可以正常工作而不會產生任何錯誤。 然而,在拍攝快照之后,雖然所有來賓仍然沒有任何錯誤地運行,但每個 VM 在 shell 中執行任何命令的速度都非常慢。 此外,我可以通過主機上的 top 看到,每個來賓的 RAM 使用量已顯着減少(例如,對於具有 GUI 的 Windows Server 2019,從 25 GB 減少到 2.5 GB)。

似乎所有緩存的數據都從 RAM 中刪除了——當然——這大大降低了性能。 但是,拍攝快照(沒有 --quiesce 參數)不應該導致這種行為,或者?。 重新啟動所有來賓后,一切再次運行得非常快(而快照結構沒有任何變化)。

您知道哪種配置或情況會導致這種行為嗎?

先感謝您!

- - - 編輯 - - -

似乎實際問題是在拍攝快照后通過 scp/rsync 復制文件,因為這些程序之一(rsync?)被占用了主機上的所有內存,導致將來賓的部分 RAM 交換到磁盤.

即使在復制過程完成后,復制的數據似乎仍保留在主機緩存中,並且來賓正在進一步使用主機的部分交換空間。

這當然解釋了客人的糟糕表現。 可以通過使用以下命令清除頁面緩存和交換空間來修復它:

sync; echo 1 > /proc/sys/vm/drop_caches
swapoff -a; swapon -a

但請注意,在暫停來賓操作的情況下,清除交換空間可能需要幾個小時。 要么應該在晚上不使用它們時完成,要么應該從根本上解決問題,即在 rsync/scp 部分。

我認同你的經歷。 我通過使緩存和交換不那么激進來解決它。 也許它也可以幫助你。

(來自 /etc/sysctl.conf)

# Make the kernel less swappy
vm.swappiness = 5

# Make the kernel free cached dentries and inodes sooner
vm.vfs_cache_pressure = 200

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM