對于服務器而言,采用單路或雙路及以上的服務器是性能一個關注點。而通常從一個簡單的問題開始談起:多路服務器的性能為什么會更強?
不了解服務器的人會直接認為是因為處理器數量多嗎?是,不過更重要的原因是,I/O速度快能夠讓多處理器的性能發揮出來。在當前的技術條件下,I/O是系統性能提高的瓶頸,如果I/O問題沒有解決好,處理器數量的增加不一定會帶來性能的提升,極端情況下,新增的資源有可能被I/O全部消耗掉。
I/O是制約多路服務器性能的關鍵
眾所周知,不論安騰、至強還是power,處理器主頻都超過了1Ghz,也就是說時鐘周期都遠遠小于1ns,處理器在一個時鐘周期內可以處理多條指令,平均到每條指令的處理時間就更短了。
I/O是制約多路服務器性能的關鍵
I/O訪問速度就慢得多,CPU訪問自身cache一定是最快的,延遲在10ns級別,相當于幾十個時鐘周期;訪問本地內存延遲可以控制在100ns以內,跨CPU節點訪問內存,其延遲就到了us級別;如果是要訪問PCI-E上的設備,則要經過VFS、Diver等多個層次,就算通過DMA訪問,其延遲也至少在10us以上。
可以看出,服務器的I/O耗時遠大于計算,I/O的延遲勢必將造成處理核心的大量等待周期,所以,如何建立一個I/O模型,盡量降低I/O對系統性能的開銷,是多路服務器設計必須要考慮的關鍵問題之一。
談完了服務器內部通信,有必要再談一下服務器外部通信,也就是節點外通信。
節點內部通信雖然會制約系統性能的提升,但仍遠遠優于節點外通信,節點外通訊的延遲普遍在ms級別,最高甚至達到秒級,如果處置不當會嚴重降低系統性能,影響實際業務,這就是大規模在線交易處理系統必須采用多路服務器的主要原因。
在線交易處理必須基于同一數據源,各處理器之間必須頻繁通信才能保證數據一致性,如果采用集群技術,服務器的各個處理器核心將用較長的時間等待數據,這種延遲將隨著節點數量的增加飛升,系統很快就會出現擴展瓶頸。
下一篇 HUSTOJ--緣分篇