我理解linux 'top‘报告的系统负载是等待CPU时间的进程的avg数,因此在解释负载时应该考虑CPU内核的数量。因此,在一个4核系统上,4的负载就等于单个核系统上1的负载。
我的问题是:对于CPU核心不直接映射到处理器上的虚拟服务器,也是如此吗?
发布于 2014-07-24 11:54:56
在虚拟环境中,从主机的角度来看,来宾vm的虚拟cpus只是执行的进程(或线程)。不需要在单独的cpus上运行,也不需要使用主机cpus的确切数量。
尽管模拟来宾虚拟cpu的任务是一对一地运行到主机cpu,因此只有一个线程被绑定到单个主机cpu上,但是它有一个很大的优势:它使来宾vm能够像在非虚拟化环境中一样优化其任务。
负载问题实际上是一个与之不同的问题。load是指可运行的进程的平均数量,这些进程可以在任务调度中获得一个时间片。在简化的形式中,它的意思是:“如果一个简单的单线程任务试图分配尽可能多的cpu,就可以得到cpu的1/负荷。”因此,如果负载为5,那么“平均”进程可以获得cpu时间的20%。它位于单个cpu上,用于单线程进程。
这些cpus是否是虚拟的并不重要。在大多数虚拟化场景中,主机不知道客户的进程,他只能看到客户的cpus,作为他的线程。但是它不会改变系统负载的定义,不管它是虚拟系统还是主机。
从实际角度看,这一问题的重要性有限,因为专业系统管理员所面临的实际问题,大多与cpu无关。在大多数情况下,这些问题来自于系统资源的可配置性、自动化和冗余可用性。
从这些问题的角度来看,虚拟化目标可以解决(或者让我们的生活更快乐),尽管也有非常有趣的例外(主要是在学术或研究/开发领域)。
https://serverfault.com/questions/615126
复制相似问题