如果程序在虚拟机上运行,​​程序的执行时间是否会发生变化?

时间:2014-10-01 03:17:25

标签: linux operating-system runtime virtual-machine

一位朋友要求提供一个可用于查找真实系统的命令 Linux中程序的执行时间。我回复说time    命令很棒。

然后他问,当您查询执行时间时,虚拟机返回的程序执行时间(通过time),与程序的实际系统执行时间相同?

我的直觉是说取决于

  1. 如果机器上有足够的资源,则返回的VM时间将与程序执行的实际/挂钟时间相同。

  2. 如果系统没有足够的资源,则VM时间将与实际(系统)执行时间大不相同。此外,VM是OS之上的应用程序,它具有自己的调度程序。这意味着VM需要调用系统调用,然后由OS处理,然后OS与硬件通信,然后提供实际(系统)执行时间。因此,在这种情况下,返回的时间可能与实时不同。

  3. 如果执行的程序很简单,则VM时间可能等于实际(系统)时间。

  4. 如果执行的程序不简单,则VM时间可能会有很大不同。

  5. 我的假设是否正确?

    我现在想知道: 你怎么能找到/计算在虚拟机上运行的程序的实际执行时间?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

该计划的复杂性并不重要。

来宾操作系统无法看到主机。如果你跑'时间'对客人来说,' sys'返回的值仅描述 guest 系统资源。

或者重新说明:在典型的虚拟机设置中,您只会将部分主机CPU资源分配给来宾操作系统。但是,所有客人都可以看到,因此,所有的时间和时间都是如此。命令可以报告。由于您在启动VM时已分配此内容,因此guest虚拟机无法耗尽所有主机资源。

几乎所有虚拟机都是如此:如果访客知道虚拟机管理程序,那将是一个重大的安全问题。

所以是的,虚拟机与真实硬件的系统时间完全不同,因为客户不会拥有完整的资源。根据您是否正在处理硬件或软件虚拟化,您还可以看到可变性。

这里有一些好的阅读(第10.3至10.5节):

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