誰(shuí)動(dòng)了我的CPU?!
云最重要的一個(gè)特色就是在多個(gè)用戶中共享資源。缺少了共享和資源優(yōu)化的能力,云服務(wù)供應(yīng)者就無(wú)法給業(yè)務(wù)提供可擴(kuò)展性及對(duì)“規(guī)模經(jīng)濟(jì)”的支持。IaaS在包含了計(jì)算能力、儲(chǔ)存和網(wǎng)絡(luò)設(shè)施的同時(shí)還包含了它的“云魔法”。而這些資源的使用必須經(jīng)過(guò)充分優(yōu)化用以滿足用戶需求,因此他們只能在用戶中共享。
什么是Steal Time?
衡量服務(wù)器對(duì)CPU利用的基本標(biāo)準(zhǔn)就是閑置能力 —— CPU的空閑量。CPU的使用率由下面幾種分配決定:
User —— 運(yùn)行的應(yīng)用程序
System —— 操作系統(tǒng)
Interrupt —— 硬件中斷
Wait —— 等待I/O操作的完成
Steal —— 與虛擬機(jī)無(wú)關(guān)的周期
Idle —— 未進(jìn)行任何作業(yè)
Steal Time(ST)通常還被稱作“Stolen CPU”,存在于虛擬計(jì)算環(huán)境 —— CPU使用內(nèi)部虛擬機(jī)運(yùn)行任務(wù)的時(shí)間,由Hypervisor將CPU周期分配給其他“外部任務(wù)”產(chǎn)生;而這些外部任務(wù)很可能就是你吵鬧的鄰居(云端共享同一片資源的用戶)遞交的。
AWS上的Steal Time
通過(guò)在AWS社區(qū)上的研究發(fā)現(xiàn),在CPU達(dá)到峰值的一段時(shí)間后:系統(tǒng)會(huì)自動(dòng)的將CPU收縮至一定的使用比例,那么你剩下的CPU就被“竊取”了。這種情況通常是云端對(duì)自己的保護(hù),以避免崩潰的威脅。
你可以找到更多關(guān)于AWS上Micro Instance信息的常見問(wèn)題解答:“Micro實(shí)例會(huì)一直提供少量的CPU資源;而當(dāng)額外的周期空閑時(shí),AWS允許你將CPU資源擴(kuò)充到2 ECU。它們非常適合那些吞吐量較低的應(yīng)用程序;以及定期擁有大量的計(jì)算周期,而其它時(shí)間只為后臺(tái)進(jìn)程和守護(hù)進(jìn)程提供少量CPU資源的網(wǎng)站”。
在亞馬遜開發(fā)者社區(qū),你可以發(fā)現(xiàn):
“舉個(gè)例子:當(dāng)我想做一個(gè)“yum update”的時(shí)候,系統(tǒng)在一分鐘之內(nèi)都沒有響應(yīng);預(yù)想中這個(gè)操作會(huì)耗時(shí)3到5分鐘,通常也需要這么久;但是今天只花了30秒到1分鐘左右時(shí)間。”

亞馬遜并沒有詳述Xen配置,盡管它們說(shuō):“實(shí)例根據(jù)CPU的使用率在本質(zhì)上劃分為兩個(gè)級(jí)別:基礎(chǔ)的低標(biāo)準(zhǔn)等級(jí)、以及在這個(gè)等級(jí)上擁有短暫飆升能力的等級(jí)。”(點(diǎn)擊查看更多了解我獲悉的)使用標(biāo)準(zhǔn)的監(jiān)測(cè)工具去監(jiān)測(cè)CPU可能會(huì)誤導(dǎo)云用戶,舉個(gè)例子:由于虛擬化層在底層的基礎(chǔ)設(shè)施上,Linux實(shí)例不會(huì)報(bào)告CPU的正確使用率。為了得到EC2基礎(chǔ)設(shè)施上正確的CPU利用率,云用戶只能使用CloudWatch來(lái)測(cè)量。
另一個(gè)影響CPU使用率的重要方面在于任務(wù)的模型。這里必須區(qū)分兩個(gè)負(fù)載模型:批處理和實(shí)時(shí)。前者能夠更大程度上容忍資源的短缺,并可以等待一段可觀的時(shí)間。批處理模型描述的任務(wù)一般都會(huì)生成一個(gè)穩(wěn)定的使用率或者集合成一個(gè)總的CPU使用率,所以一旦CPU負(fù)載過(guò)重,批處理將會(huì)被順延。而實(shí)時(shí)模型從不會(huì)被順延,并且云供應(yīng)商也會(huì)約束它的負(fù)載。此外,像亞馬遜AWS這些云供應(yīng)商更趨向去設(shè)計(jì)更多的批處理負(fù)載模型來(lái)控制它們服務(wù)器的負(fù)載。
為了更好的利用AWS的Micro Instance,你必須有能力控制你的在線資源。當(dāng)然你也可以去做網(wǎng)絡(luò)服務(wù)器配置的嘗試,舉個(gè)例子:限制用戶數(shù)量。你需要使用S3來(lái)儲(chǔ)存靜態(tài)文件,比如:圖像、視頻和音頻。使用其他AWS服務(wù)擴(kuò)充你的應(yīng)用性能需求可以將一些負(fù)載轉(zhuǎn)移到其他的云資源上,從而降低你EC2實(shí)例的CPU消耗負(fù)載。總而言之,這里的重點(diǎn)不在于資源的多少,而是能使用有效的手段去控制負(fù)載的平衡。