2014-10-01 18 views
1

一位朋友詢問了一個命令,該命令可用於查找Linux中某個程序的實際系統執行時間 。我回復說,time 命令是一個偉大的。如果程序在虛擬機上運行,​​程序的系統執行時間是否更改?

然後他問,執行時間(通過time)是虛擬機在查詢執行時間時返回的程序的時間,與程序的實際系統執行時間相同嗎?

我的直覺是說這取決於

  1. 如果有機器上有足夠的資源,然後返回VM時間將是相同的真正/掛鐘時間程序執行。

  2. 如果系統沒有足夠的資源,那麼VM時間將會與真實(系統)執行時間大不相同。而且,虛擬機是一個位於操作系統之上的應用程序,它有自己的調度程序。這意味着虛擬機需要調用系統調用,然後由操作系統處理系統調用,然後與硬件進行通信,然後提供實際(系統)執行時間。因此,在這種情況下,返回的時間可能與實時不同。

  3. 如果執行的程序是簡單的,那麼VM時間可以等於實際(系統)時間。

  4. 如果執行的程序不是簡單的,那麼VM時間可能會有很大的不同。

我的假設是否正確?

我現在想知道:如何找到/計算在虛擬機上運行的程序的實際執行時間?有任何想法嗎?

+0

這並沒有真正似乎是有關編程,而是關於虛擬機和Linux的'time'命令。投票轉移到超級用戶。 – 2014-10-01 04:10:17

+0

我可以自己動一下嗎?我認爲這是相關的,因爲我們很多人都在測量Linux上的程序執行時間。至少我們很多人都在讀研究生。 – 2014-10-01 04:11:39

+0

我不認爲你可以自己移動它(除了在這裏刪除它並在那裏發佈)。如果您希望它移動,您可以將其標記爲主持人注意。這與SO的社區有關,但不幸的是,並非所有相關內容都是關於主題的。 :) – 2014-10-01 04:12:53

回答

1

程序的複雜性並不重要。

客戶操作系統不能識別主機。如果您在guest虛擬機上運行'time',則返回的'sys'值僅描述guest系統資源。

或者更改:在典型的虛擬機設置中,您將僅將一部分主機CPU資源分配給來賓操作系統。但這就是客人可以看到的全部內容,因此,這就是'時間'命令可以報告的所有內容。由於您在啓動VM時分配了此項,因此guest虛擬機無法耗盡所有主機資源。

幾乎所有虛擬機都是如此:如果guest虛擬機掌握了虛擬機管理程序的知識,這將是一個主要的安全問題。

因此,系統時間可能與虛擬機和真實硬件完全不同,因爲guest虛擬機沒有完整的資源。你也可以看到變化取決於你是否正在處理硬件或軟件虛擬化。

這裏有一些很好的閱讀(第10節。3至10.5):

https://www.virtualbox.org/manual/ch10.html#hwvirt

相關問題