2010-12-12 105 views
3

我讀this博客:虛擬機管理程序如何同步主機和虛擬機VM之間的時間?

進行了一些研究之後,我 發現,這是由 事實引起的在1000Hz的內部時鐘 頻率和VMware的默認的Linux內核 運行是無法 按時發送時鐘中斷 而不會丟失它們。這意味着某些時鐘中斷在沒有 的情況下會丟失,通知Linux內核,其中 假設每個中斷標記1/1000的第 秒。因此每個時鐘中斷 會丟失,使得時鐘在1/1000秒後落入 。

現在,我的問題是,如何做的管理程序同步時間內如果管理程序能夠處理時鐘中斷?

因爲當說(放大的例子,而不是現實世界):它在主機上的19:10:22,直到它傳播到客人,它將在主機上19:10:23。

我知道這是一個棘手的問題,但我想你需要從虛擬機角度放慢時間。這是如何實現的?

VMWare timekeeping

+1

這不是一個服務器故障問題,它是虛擬機的內部。 – zengr 2010-12-12 01:53:55

+0

不是你鏈接的PDF來回答你的問題嗎? – Gabe 2010-12-12 05:10:12

+0

vmware論文更多地討論了VMware的具體實現和技術,而不是關於它背後的概念。 – zengr 2010-12-12 05:25:29

回答

2

管理程序不同步的時鐘。它是在來賓虛擬機中運行的軟件,可以保持時鐘同步。

從15頁(有解釋到19頁繼續上)你的鏈接PDF的:

有客戶操作系統時鐘同步提供了兩個主要選項:VMware Tools的週期性時鐘同步 或本機同步軟件,如果您直接在物理硬件上運行它,則可以將其與客戶操作系統一起使用。本地同步軟件的一些示例是Windows的Microsoft W32Time和Linux的NTP。

VMware Tools時鐘同步工具只是經常檢查客戶時鐘與主機時鐘(可能每分鐘一次)並更正客戶時鐘(如果它錯誤)。如果客人時鐘關閉一點點,該工具將加速或減慢客人時鐘,直到它具有正確的時間(使用Windows上的SetSystemTimeAdjustment或Unix上的adjtime等API)。如果您想知道該工具如何訪問主機的時鐘,那麼VMware工具只知道如何使用它的API。

+0

我沒有在物理軟件上運行它,所以我的問題是,VMWare工具如何同步工作? – zengr 2010-12-12 06:48:09

+0

zengr:我更新了我的答案,但我不知道你在運行什麼「它」,或者「物理軟件」是什麼意思。我也不知道你的意思是「工作」。你在問什麼時鐘同步工具調用的API?它使用什麼算法? – Gabe 2010-12-12 06:56:28

+0

是............. – zengr 2010-12-12 07:39:53