您可能会留意到最近在Linux内核及某些工具如vmstat中,有一个新的CPU使用率的类别,名字叫stealing。这是什么意思呢?为何您的CPU会被盗用?难道是外星人在咱们的服务器上工做,恶意偷窃了CPU?嗯,仍是...服务器
CPU被盗用是一个新概念,与虚拟化和云计算有关。指的是当您的虚拟程序须要运行时,系统管理程序却不给您分配CPU周期,因此,您的虚拟 CPU周期被偷走给了别人,一般是给了另外一个虚拟程序。ide
为何会发生这种事呢?工具
您可能知道,系统管理程序(Xen及 VMWare等)控制硬件设备,决定如何给虚拟程序分配服务器物理CPU内核的CPU周期。若机器负载低,那么,只要不超过系统配置限制,每一个虚拟程序都能得到所需的CPU。性能
一般状况下VM内核并不知晓此过程,并且在该过程当中计算程序复杂,由于要涉及到虚拟 CPU的控制、限制和共享方式。可是,一般状况下,VM内核知道本身有多少个CPU核及其速度如何,以及什么叫100%负荷。云计算
尽管CPU被盗用的状况不容易被发现,可是您应该知道有这种事件,由于它确实会使您受损失,可能您的CPU有50%的空闲资源并且处在一个较低的负荷均值上,可是可能实际上已经负载了,这是司空见惯的事情。此事发生时,服务器性能不好,用户也会很不高兴,因此,你们应该知道有这回事,以及知道如何检测及处理这种事。spa
CPU被盗用在大型繁忙系统中以及在云中(有CPU上限,如AmazonEC2,尤为是当这些云中有小型实例的时候)是常常发生的事,大型的私云中也常发生此事。在此状况下,系统管理程序会挪走CPU周期。blog
可是在VM中,可能您会发现CPU使用率(user, nice, iowait)只有50%,还有50%是空闲的-看起来很好,是否是?尤为是当您使用一些过期的工具如top或者其它工具,由于这些工具不知道有CPU被盗用这回事,因此,系统根本没法察觉,可是系统资源被盗用的状况确实存在,只是你不知道而已。您的服务器看起来还有50%的空闲资源,但实际上已通过载了,运行的很慢。事件
要想发现这种状况,得采用一些新发布的工具如vmstat,它能够帮助您发现问题。资源
当您的CPU使用率持续维持在100%时,或者有明显的被盗用的迹象时(约大于10%),就代表您没有空闲的CPU资源了。您的负载还会有所增长,可是请不要觉得您尚未达到“高”负载均值。例如,假设您有4个虚拟CPU,高负载均值多是8+,可是若您被盗用了50%,就是一半的CPU资源被盗用了,那么负载均值若是是4的话,就已是高负载了。get
那么,您该如何处理此事呢?首先,请检查一下看您是否能够从管理程序/Dom0 这一层次上获取更多的资源,这事在私云中不难作到,可是在Amazon上就难以实现,除非您更新实例(作起来简单,可是很烧钱)。若是上面的方法不能实现,那么,您就得减小VM的负荷了,就是限制用户数量以及更改配置等。若是,两个方法都不行,那您就继续忍受被盗的痛苦吧,只要您内心有数,您的服务器事实上已经高负载了就好了。
从云计算及虚拟化角度来看,CPU被盗用是一个新的概念。可能还不知情,就已经被盗用了,因此,采起合理的监控并对其有合理的理解是很重要的。有时,能搞定此事,有时未必能搞定,但至少得知道有这回事,这就迈出了第一步。
(Authored by Steve Mushero / ChinaNetCloud CEO & CTO 本博客英文原文请点此查看)