我们正在尝试在虚拟机(VPC)中做一些时间基准测试,例如 Windows 启动后需要多长时间才能空闲。
到目前为止,我们还没有找到如何准确地进行基准测试的方法,因为托管机器的状态似乎会影响虚拟机的性能。例如,有时虚拟机在 30 秒内启动,有时则需要 100 秒。
有没有什么方法可以为虚拟机分配一定数量的资源,以使其以一致的方式运行?(例如,像真实的机器那样)
答案1
从技术上讲,您可以使用 Windows 任务调度程序将系统上的所有进程限制到特定核心,或修改虚拟机进程的亲和性。您可以使用它将每个正在运行的任务(在启动虚拟机之前)分配给特定的 CPU 核心,然后将虚拟机分配给另一个核心。显然,您无法直接控制任务调度程序,但这应该会使您的结果更加一致。
确保结果一致的另一种方法是修改虚拟机进程本身的优先级。您可以结合修改 CPU 核心亲和性来执行此操作,或者让任务调度程序自行执行操作并将进程亲和性设置为“高”。这应该使虚拟机的执行状态优先于其他非必要系统服务。
如果你使用超线程 CPU,你可能需要我对这个相关问题的回答。如果您需要通过命令行或批处理文件执行任何这些操作,我对另一个问题的回答。
答案2
不是。虚拟客户端共享主机的资源。可以通过每个虚拟设置的设置属性将它们配置为使用较少的资源(即限制为 1 个 CPU 或可用内存的大小),但绝不会更多。据我所知,没有一个允许您指定不同的 CPU。而且由于它们是共享的,如果主机上正在发生其他事情,这将影响您的基准测试。