【大話儲存】多CPU架構變遷, SMP,NUMA,MPP
多CPU架構演進
對稱多處理器結構:(SMP,Symmetric Multi-Processor)
伺服器最開始的時候是單CPU,然後才進化到了雙CPU甚至多CPU的SMP架構。所謂SMP架構
指的是多路CPU無主次,共享記憶體、匯流排、作業系統等。此時每個CPU訪問記憶體任何地址所耗費的時間是相等的。所以也稱為一致儲存器訪問結構
大家共享同樣的記憶體,所以擴充套件能力有限,因為CPU數量增加了,記憶體訪問衝突也會增加。為了進一步提高CPU數量的同時還能保證效率,NUMA架構出現了,將多個SMP進行鬆耦合。
還有一種AMP架構,不同的CPU是做不同的事的,互不干擾。
非一致儲存訪問結構:(NUMA,Non-Uniform Memory Access)
NUMA架構中,多個SMP通過Crossbar switch交換矩陣進行互聯。
每個SMP有自己的記憶體,同時還可以訪問其他SMP
的記憶體,但是需要經過高速交換矩陣,很顯然SMP訪問自己的記憶體速度非常高,但是訪問遠端的SMP的記憶體還需要經過交換矩陣,延遲增加,可以看出NUMA通過犧牲記憶體的訪問時延來達到更高的擴充套件性。
總之,SMP與NUMA架構對軟體程式方面影響擴充套件性不大,一臺主機內都使用單一的作業系統。
缺點是CPU數量增加,訪問遠端記憶體的時延也會增加,效能不能線性增加。此時MPP架構就出現了。
海量並行處理結構:(MPP,Massive Parallel Processing)
MPP說白了就是將多臺獨立的主機組成叢集。顯然在此架構下,每個節點都有各自的CPU、記憶體、IO匯流排、作業系統,完全鬆耦合。最關鍵的是MPP叢集中的軟體架構也相應的改變了,這樣MPP的效率隨節點數量增加就可以線性增加了。
其實如果NUMA架構下,如果通過上層軟體來使得程式儘量少的讀取遠端的記憶體,NUMA效率也會線性增加。但是實際上NUMA作業系統仍然是同一個,記憶體仍然是全域性均勻的,所以訪問遠端記憶體是不可避免的。
那麼MPP相當於把記憶體強制分開,同時又改變了程式架構,這樣就可以保證海量計算下的效率線性增加。
儲存系統的演進
儲存系統與伺服器CPU架構演進相同,控制器就好比CPU,後端磁碟櫃就類似於記憶體。
- SMP
縱觀儲存系統的演進,一開始是單控,後來演進到雙控互為備份,此時就類似於AMP,兩個控制器各自處理自己的任務。
然後進入到雙控並行處理的時代(HDS的AMS2000儲存系統),類似於SMP,兩個控制器可以並行的處理。
再到後來則有多控並行對稱處理架構,Oracle的RAC叢集就可以視為一種多點SMP,各種共享底層儲存的叢集檔案系統都屬於多點對稱SMP - NUMA
同樣NUMA也出現在了儲存系統中,比如EMC的V-Max相當於多個SMP利用高速交換矩陣
來共享訪問每個SMP上的記憶體,其中SMP就是一對控制器組成的Director,高速交換矩陣就是RapidIO - MPP
- 那麼IBM的XIV就屬於鬆耦合MPP架構,每個節點都有自己的CPU、記憶體、IO介面,使用外部的交換機互相通訊。
- 而HDS的VSP更像是一個緊耦合的MPP。
-
另一種屬於MPP架構的儲存系統就是分散式檔案系統,比如HDFS等。
MPP對軟體架構變化很大,所以傳統儲存廠商很難將之前的架構演進到MPP上來。
誰才是真正的Scale-out
SMP/NUMA/MPP其實都算Scale-out,只不過程度和形態不同。
MPP架構的儲存,比如XIV,在多路大塊連續的IO
下,效率反而很差。這是因為單路IO可能導致整個MPP叢集中的磁碟資源全部牽動
但是如果是小塊隨機的IO
,多路IO關聯很少,則效能隨節點數增加線性增加,這就好比將一個程式並行分解為多個子任務(類似於隨機小IO),因為子任務之間的關聯很少,節點之間的通訊量很小,則並行執行的效率高。也就是MPP自身是share-Nothing架構,執行在上面的程式也儘可能的是Share-Nothing
SMP、NUMA、MPP各有各的好處,比如
- SMP適用於擴充套件性要求不高,而又不想程式改變太大的場景。
- MPP則適用於海量資料下的高擴充套件性需求場景。它需要對程式進行大量的改變,而且多流大塊連續IO場景下效能不佳。所以MPP架構廣泛的應用於網際網路的底層Key-Value分散式資料庫,這種資料庫主要應對高隨機小塊讀的場景,可以獲得非常高的效能。
參考
大話儲存II
相關文章
- SMP、NUMA、MPP體系結構介紹
- 二、儲存架構演變架構
- “雲端計算”時代 儲存架構如何變化架構
- NUMA架構的個人理解架構
- NUMA 架構與 資料庫架構資料庫
- MPP大規模並行處理架構詳解並行架構
- MPP架構和批處理架構
- 銀行IT架構變遷史(金融IT基礎架構)架構
- 大話儲存後傳筆記筆記
- 好書推薦—《大話儲存》
- 遷移表結構時儲存空間過大問題
- 蘇寧庫存架構轉變架構
- 淺析雲端儲存的TCS和LCA兩大架構架構
- NUMA,MPP和HADOOP的區別與聯絡Hadoop
- 小紅書自研KV儲存架構如何實現萬億量級儲存與跨雲多活架構
- MPP大資料系統架構,終於有人講明白了大資料架構
- Linux 核心 101:NUMA架構Linux架構
- NUMA架構下oracle的oom異常架構OracleOOM
- 四大CPU架構的區別架構
- 大資料架構-使用HBase和Solr配置儲存與索引大資料架構Solr索引
- CPU入門掃盲篇之一文搞懂多 CPU、多核 CPU、超執行緒技術、SMP執行緒
- ClickHouse、Doris、 Impala等MPP架構詳解架構
- mpp_123@163.com 變數儲存過程函式控制流程變數儲存過程函式
- 聽豆瓣架構變遷分享會總結架構
- iPhone CPU架構iPhone架構
- 淘寶圖片儲存系統架構架構
- 架構師,儲存災備挑戰架構
- NUMA架構介紹及優缺點分析架構
- 儲存遷移方案
- 本地讀寫的多活資料儲存架構設計要義架構
- JuiceFS 在多雲端儲存架構中的應用 | 深勢科技分享UI架構
- 從0到100——知乎架構變遷史架構
- Streaming Data Warehouse 儲存:需求與架構架構
- 架構師之路,從「儲存選型」起步架構
- Android 儲存系統之架構篇Android架構
- iSCSI儲存的4種系統架構架構
- numa 架構下mysql可能遭遇的swap問題架構MySql
- openGauss-鯤鵬NUMA架構最佳化架構