決定虛擬服務器所需要的CPU核心數量是一件非常復雜的事情,但是綜合考慮下面幾個因素,相信管理員能夠作出最適合于自己的決定。
看起來決定虛擬服務器所需要的單顆CPU核心數量是一件非常簡單的事情,但事實上有很多復雜因素需要考慮。首先,在虛擬環境CPU的使用率通常非常低。其次,內存大小和速度通常會比CPU產生更大的影響。最后,虛擬服務器通常是I/O密集型的。
事實上,服務器并不需要單顆CPU具有太多的核心數量,因此表面上,CPU內核數量越少越好。但是問題在于服務器設計的其他因素,這些因素都會對成本造成影響,因此最終都會成為影響配置的決定性因素。
內存
DRAM(動態內存)價格非常昂貴,而最新、密度更高的DIMM(雙列直插式存儲模塊)相比于主流的DIMM更加昂貴,因此廉價但是供應量充足的普通DIMM也許是一種更好的選擇。但是現在Optane或者NAND的NVDIMM已經成為TB級別內存擴展的最佳方式。
使用NVDIMM或者更加廉價的DRAM需要增加DIMM插槽數量,這樣做能夠將系統內存帶寬擴大一倍并且帶來其他性方面的性能提升,管理員就能夠在服務器上加載更多的實例了。
向服務器添加快速的NVMe SSD能夠顯著提升實例的I/O性能。過去這是一種非常昂貴的解決方案,但是現在NVMe已經進入消費級市場,價格大幅降低。
NVMe大幅度降低了操作系統在I/O方面的開銷,能夠節省大量的CPU和內存時間周期。類似地,RDMA(遠程直接數據存取)被廣泛應用在HCI(超融合基礎架構)中,將會在未來幾年成為一種標準的以太網特性,能夠減少虛擬服務器集群之間的系統開銷和延遲。
總而言之,內存和I/O方面的性能提升允許管理員運行更多的虛擬服務器實例,從而導致CPU數量不足。因此需要增加單顆CPU的核心數量,才能夠保證服務器的正常運行。
實例配置在這篇文章,有必要談論一下究竟什么是實例。當然,我們不能為實例設置固定大小。實例可能包含多種配置以適用于多種應用程序。可以是一個虛擬核心對應一個物理核心,或者多個虛擬核心對應一個物理核心,甚至是一個虛擬核心對應整個CPU。內存和I/O分配同樣是相互獨立的變量。
實例的發展趨勢是更大的DRAM和更多的I/O以及更低的虛擬核心比——也就是每個實例中更多的CPU。如果管理員希望未來五年之內使用這種等級的實例,那么具有更多CPU核心的服務器引擎將會起到很大幫助作用。
容器和微服務這種相對全新的虛擬化方式是為了替代基于hypervisor的實例。通常由于共享內存段,運行容器的服務器相比運行hypervisor的服務器所需的DRAM更少,因此容器的數量通常會是實例數量的三到五倍。但是實例數量的增加意味著需要更多的CPU核心。
如果我們向微服務軟件架構遷移,存儲和網絡服務功能都被轉變為很小的容器化模型,應用程序被分隔為微服務元素,那么單臺服務器能夠運行的容器數量還會繼續提升,而且是大幅度地。微服務意味著需要CPU進行更加頻繁的狀態切換。需要更好的性能表現和并發能力,因此單個CPU需要更多的核心才能夠滿足要求。
服務器架構創新所有這些都忽略了服務器架構方面的領先技術。關于HMC( Hybrid Memory Cube)方面的討論已經持續了三年,其能夠將CPU和DRAM段形成更加緊耦合的模型。這種方式能夠大幅度提升DRAM速度,比如適用于許多并行通道的電接口和架構調用以及DRAM。
現在很多主流廠商都在推廣類似于HMC的平臺,其早期版本限制DRAM大小不能超過32GB。這足夠在三層和DRAM之間形成一個足夠大的中間層緩存,有效提升內存性能表現以支持更多的CPU核心。由此得出的結論是多CPU核心是有意義的。
增加核心的成本方面考慮通常數量更少、更加強大的服務器相比于多臺小型服務器在成本方面更加具有優勢。它們的運行成本更低,能夠支持25Gb以太網和50Gb RDMA連接。底層基礎架構的電力成本得到平攤,而運營費用——供電、制冷和維護等——也都更加便宜。
所有這些討論包含一些如何選擇組件的不錯建議。比如,每顆核心的成本會隨著數量的增加而下降,但是最好的三到四顆CPU很有可能是全新的,需要50%到100%的額外費用。同樣的情況也適用于內存和SSD。
如果沒有使用前沿技術,那么看起來更多的CPU核心和配置更高的服務器相比于小型服務器更加具有吸引力,但是爆米花大小的web服務器除外。
展望未來未來的服務器架構發展路線相比于之間更加模糊,是否轉向以內存為中心的架構——比如Gen-Z——依舊在爭論之中。即便如此,我們依然能夠在2018年看到32核心的CPU,并且如果將HMC內存體積擴展到TB級別,那么CPU核心數量還會繼續增加。一些廠商暗示可能會在架構中同時使用DRAM和NAND。
通過使用多核虛擬服務器和HCI架構,特定負載所需要的服務器存儲將會大幅度減少。
注意事項:需要注意網絡設計和流量。我們仍舊在和LAN以及WAN的限制做斗爭,即便使用最新的速度和技術。加密和壓縮正在快速成為LAN的必要特性,這樣就會帶來更多的CPU負載,也就需要更多的CPU核心。