【问题标题】:Does the system execution time of a program change if it's running on a virtual machine?如果程序在虚拟机上运行,​​它的系统执行时间会改变吗?
【发布时间】:2014-11-25 20:00:15
【问题描述】:

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

他接着问,你查询执行时间时,虚拟机返回的一个程序的执行时间(通过time),和程序的真实系统执行时间是一样的吗?

我的直觉是说这取决于

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

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

  3. 如果执行的程序很简单,那么VM时间可以等于真实(系统)时间。

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

我的假设正确吗?

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

【问题讨论】:

  • 这似乎不是关于编程,而是关于虚拟机和 Linux time 命令。投票转为超级用户。
  • 我可以自己移动吗?我认为这是相关的,因为我们很多人都在处理测量 Linux 上程序的执行时间。至少我们很多人在读研究生。
  • 我不认为你可以自己移动它(除了在这里删除它并在那里发布)。如果你想移动它,你可以标记它以引起版主的注意。它与 SO 上的社区相关,但不幸的是,并非所有相关的内容都是这里的主题。 :)
  • 我相信这取决于程序是否执行大量系统调用。我猜虚拟机上的系统调用比较慢。

标签: linux operating-system runtime virtual-machine


【解决方案1】:

程序的复杂性无关紧要。

来宾操作系统无法查看主机。如果您在来宾上运行“时间”,则返回的“系统”值仅描述 来宾使用的系统资源。

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

几乎所有虚拟机都是如此:如果来宾了解虚拟机管理程序,这将是一个主要的安全问题。

所以是的,虚拟机与真实硬件的系统时间绝对不同,因为来宾不会拥有全部资源。根据您处理的是硬件虚拟化还是软件虚拟化,您还可以看到变化。

这里有一些不错的读物(第 10.3 到 10.5 节):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 2015-09-25
    • 2012-06-11
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多