虛擬機中的磁碟延遲
我一直在研究我們組織中集群虛擬機的一些性能問題。實際上這個問題似乎影響了我看過的大多數虛擬機。主機和虛擬機都是帶有 SP1 的 2008R2。
我相信——從我在各種文章中讀到的內容和我得到的建議——I/O 延遲是最重要的指標。我在三個不同的地方查看了這個指標:
- 儲存設備上的 LUN 延遲
- Hyper-v 主機上的邏輯磁碟平均秒/寫入和平均秒/讀取
- 與上面相同,但在虛擬機本身上
這是為了縮小可能發生的任何延遲的來源。果然,這就是我發現的……
我所看到的是我認為在 LUN 上可接受的延遲(3-15 毫秒),在 Hyper-V 主機上高達 20 毫秒(仍然可以接受)。當我查看 VM 上的相同指標時,我會看到高達 300 毫秒的正常峰值,每次長達 10 秒,平均約為 20-30 毫秒。
這個特定的 VM 是 SQL 伺服器,但同樣適用於非 SQL 伺服器。相關的例外被添加到我們的 AV 解決方案中,以避免對 DB 文件進行訪問掃描。此外,我們的 VHD 具有固定大小,而不是動態擴展。
所以對於我的問題:
這種延遲的可能原因是什麼,和/或我可以在 VM(甚至主機上)使用哪些其他指標來縮小範圍?
在 VM 中測量時間可能會出現問題,因為虛擬處理器不會連續執行。如果您想清楚地了解實際發生的情況,請使用管理作業系統中的性能監視器。查找 Hyper-V 虛擬儲存設備。您也可以將其與來自 Resource Monitor 的數據相關聯,以查看哪些內容正在爭奪對磁碟的訪問權限。
通常,特定 VHD 的響應時間與託管該 VHD 的捲上發生的其他情況有關。
您在 VM 上的“磁碟延遲”可能是主機上的 CPU 延遲,因為主機必須使用 CPU 週期來處理 IO 請求。
主機整體負載很重嗎?還是只是執行了很多虛擬機?不確定 hyper-v 等價物是什麼,但 VMWare 指標是 CPU 就緒時間 - 基本上是虛擬機在主機上等待執行的頻率。