2014-10-01 21 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

相关问题