簡體   English   中英

如果程序在虛擬機上運行,​​程序的系統執行時間是否會改變?

[英]Does the system execution time of a program change if it's running on a virtual machine?

一位朋友問一個命令,該命令可用於查找Linux中某個程序的實際系統執行時間。 我回答說, time命令是一個很好的命令。

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

我的直覺是說這取決於

  1. 如果機器上有足夠的資源 ,則返回的VM時間將與程序執行的實際/掛鍾時間相同。

  2. 如果系統沒有足夠的資源 ,則VM時間將與實際(系統)執行時間有很大不同。 此外,VM是OS之上的應用程序,具有自己的調度程序。 這意味着VM需要調用系統調用,然后由OS處理這些系統調用,然后OS與硬件進行通信,然后提供實際的(系統)執行時間。 因此,在這種情況下,返回的時間可能與實時不同。

  3. 如果執行的程序很簡單 ,則VM時間可能等於實際(系統)時間。

  4. 如果執行的程序不簡單 ,則VM時間可能會大不相同。

我的假設正確嗎?

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

程序的復雜性無關緊要。

來賓操作系統無法查看主機。 如果在客戶機上運行“時間”,則返回的“ sys”值僅描述所使用的客戶機系統資源。

或者換個說法:在典型的虛擬機設置中,您將只將一部分主機CPU資源分配給來賓OS。 但這就是來賓可以看到的所有內容,因此,這就是“時間”命令可以報告的所有內容。 由於您是在啟動VM時分配的,因此guest虛擬機無法耗盡所有主機資源。

幾乎所有VM都是如此:如果來賓了解虛擬機管理程序,這將是一個主要的安全問題。

因此,是的,對於VM和實際硬件,系統時間可能完全不同,因為來賓系統將沒有完整的資源。 您還可能看到可變性,具體取決於您要處理的是硬件還是軟件虛擬化。

這里有一些不錯的閱讀材料(第10.3至10.5節):

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

暫無
暫無

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

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